【Cloud9】Ruby on Rails 6でサイトを公開するための環境構築
Rails5だったら、インストールしたらすぐにrails sでサイトが公開できたんですが、Rails6からはWebpackの機能が追加され、これを入れないとエラーになります。よくウェブでRailsの使い方を見ていても、ここをすっ飛ばしてるサイトがおおいので、ここでまとめておこうかなと。
cloud9を使うためのアカウント開設等の手順は省きます。
Railsをインストール
まずはCloud9でRailsをインストールします。
ぜひコピペして使ってください
# インストール $ gem install rails -v 6.1.4 #バージョン確認 $ rails -v Rails 6.1.4
インストールが完了したかと思います。
Yarnとwebpackerをインストール
#yarnをインストール $ npm install -g yarn $yarn -v 1.17.3 #webpackerをインストール $ rails webpacker:install
Blocked hostの対策
必要なものはインストールし終わりました。しかしこの状態でrails sでサーバーを起動しても、サイトには赤い文字が出て、xxxxx. .xxx.amazonaws.comというふうにエラーが出ます。
これはホストを許可する必要があります。
config/environments/development.rb
Rails.application.configure do (略〜〜) config.hosts << "xxxxx.xxxx.amazonaws.com" end
なぜこうなるのかというと、Rails6へのアップデート時の変更でDNSリバインディング攻撃からの保護を導入
が原因です。
Ruby on Rails 6.0 リリースノート - Railsガイド
Runtime Error Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8 のエラー対処
sqliteのバージョンが古いので、バージョンを上げます。
$ wget https://www.sqlite.org/2022/sqlite-autoconf-3370200.tar.gz #解凍 $ tar xzvf sqlite-autoconf-3370200.tar.gz cd sqlite-autoconf-3370200
sqlite-autoconf-3370200.tar.gzのところは都度最新版を使ってください。
SQLite Download Page
競合しないように、パスを変更
$ sudo mv sqlite-autoconf-3370200 /opt/sqlite3 $ cd /opt/sqlite3 #インストールディレクトリを設定。これには--prefixを使う。 #--prefixに/usrを指定で、OSの標準的なディレクトリにインストールすることになる $ ./configure --prefix=/usr
$ make $ sudo make install
#バージョン確認 $ sqlite3 --version #結果 3.31.1
以上の手順で、問題なくサーバー起動できると思います。