RailsアプリをNginxで動かすために、Nginxをサーバーに導入する方法と最低限これだけはしておきたいという設定をまとめます。
• ローカル環境:macOS Catalina
• サーバー環境:CentOS 7.7
Nginxインストール
ターミナルで以下のコマンドを実行し、サーバーにSSH接続します。
SSH接続の設定は事前に行っておいてください。
$ ssh server
Enter passphrase for key '/Users/user/.ssh/serve [...]
当ポートフォリオサイトのコンタクトフォームはトップページの最下部に設置しています。
コンタクトフォームをページ最下部に設置することでひとつ問題点が出てきます。それは、エラー発生時(未入力項目がある等)にページ最下部にあるコンタクトフォームに遷移できないこと。
今回のケースにおけるrenderメソッドとredirect_toメソッドそれぞれの問題点と、最終的に行き着いた解決策を記載します。
renderの問題点
一般的にコンタクトフォームの送信処理は以下のように記述するかと思います。 [...]
ウェブサイトのURLは「HTTP (TCP/80)/HTTPS (TCP/443)」「サブドメイン(www)のあり/なし」を組み合わせた4パターンが考えられます。
当ポートフォリオサイトの場合、以下の4つのURLでアクセスされる可能性があるということです。
• http://autovice.jp/
• http://www.autovice.jp/
• https://autovice.jp/
• https://www.autovice.jp/
どのURLでアクセスされたとして [...]
当ポートフォリオサイトでは自前のコンタクトフォームを設置しています。
コンタクトフォームにて入力されたお問い合わせ内容は「info@autovice.jp」という独自ドメインのメールアドレス宛に送信する設定になっています。
通常、メールを送るためにはメールサーバーが必要です。
メールサーバーは自前で用意するかメールサーバー提供サービスを利用する必要があります。
自前で用意する場合は構築とメンテナンスが大変ですし、メールサーバー提供サービスを利用するにはお金が必要です。
しかし、いわ [...]
Capistranoを使ってRailアプリをデプロイするとき、直接サーバーに送るのではなく、Githubを経由してファイルが送信されます。
そのため、あらかじめサーバー上で秘密鍵と公開鍵の組み合わせを生成し、公開鍵をGithubに登録しておく必要があります。
そして接続情報は設定ファイル(/etc/ssh/ssh_config または ~/.ssh/config)に記述しておくのですが、接続情報をきちんと書かないとデプロイに失敗してしまいます。
事象
以下のコマンドでRailsアプ [...]
ConoHa VPSにRails実行環境を構築している際、以前は出ていなかったエラーが出るようになっていて、なんでだろうと思っていたら選択するOSが以前と違っていたからでした。
10月初旬頃に構築したときは、ConoHa VPSで対応しているCentOSのバージョンは7.7が最新だったはずなんですが、11月下旬頃には最新が8.0になっていました。
OSを選択するときに何も考えずにCentOSの最新バージョンを選択してしまっていたので、環境構築で以前は出ていなかったエラーが出るようにな [...]
(初心者向け)vpsを契約して、capistrano3でRailsアプリをデプロイするまで [その1 サーバー設定編]
こちらの記事の「2. SSHの設定」を行っても以下のコマンドでSSH接続できなかったので、MacでSSH接続する方法を調べました。
$ ssh vps_name接続情報の取得順序
SSHコマンドは以下の順序で接続情報を取得します。
1. コマンドラインオプション
2. ユーザごとの設定ファイル(~/.ssh/config)
3. システム全体にわたる (syst [...]
Rubyでオーディオファイルを扱うGemはたくさんありますが、今回はmp3とwavの両方を扱う必要があったのでtaglib-rubyを使うことにしました。
ひとつのGemでmp3とwavの両方を使えるのは大変ありがたいです。
最後にHerokuにデプロイする方法とConoHa VPS (CentOS 7.7)にデプロイする方法も記載します。
インストール
まずはtaglibをインストールします。ターミナルで以下を実行します。
$ brew install taglibHomeBre [...]
ユーザーに関するフィーチャーテストで、ユーザーを削除したらそのユーザーに関連するモデルも削除されることをテストしたいと思いました。
テスト方法
spec/features/users_spec.rb
require 'rails_helper'
RSpec.feature "Users", type: :feature do
scenario 'user deletes a user' do
user = FactoryBot.create(:user)
[...]
Modelの設定
UserモデルとFundモデルがあり、Userモデルは複数のFundモデルを持つ関連付けの設定は以下のようになります。
オプションとして、Userモデルが削除されたときに関連するFundモデルも削除することとします。
app/models/user.rb
class User < ApplicationRecord
...
has_many :funds, dependent: :destroy
endapp/models/fund.rb
clas [...]