LoginSignup
0
2

More than 1 year has passed since last update.

Cloud9でRails6の開発環境構築(rails sするまで)

Last updated at Posted at 2021-07-22

Cloud9でRails6の開発環境を構築した際、少し苦労したので以下備忘録として。

Railsをインストール

Rails6を使いたかったのでgem search railsでバージョンを確認してインストール。

gem install rails -v 6.1.4

Rails6からwebpackerが標準になったことにより、Railsアプリの開発環境にyarnのインストールが必要になっているので、以下の記事を参考にNode.js, yarn, webpackerを順にインストールしていきます。
https://qiita.com/yamori/items/974e4775eb1d21aa7889
https://qiita.com/pharma_tech3/items/2ab578eb5b07ff0ca296

Node.js, yarn, webpackerをインストール

まずHomebrewを入れようと思ったのですがnpm -vで確認したらnpmはすでに入っていたので割愛。

次にyarnをインストールします。

npm install -g yarn
yarn -v

アプリケーション作成

rails newでアプリケーションを作成して、cdしてからwebpackをインストールします。

rails webpacker:install

とりあえずrails sしてみたのですが、ブラウザからアクセスすることができませんでした。

リクエストを許可するホストを設定

Rails6でDNSリバインディング攻撃からの保護機能が追加されているので、許可するホストを自分で設定します。

config/environments/development.rb
回避方法1: ホワイトリストに許可したいhostを追加したい場合
config.hosts << "許可したいホスト名"

回避方法2: ホワイトリスト全体をクリアしたい場合
config.hosts.clear

回避方法2の場合全てのリクエストが通過してしまうので、回避方法1の設定を追記します。

ここでもう一度rails sしてプレビューしてみると、今度は以下のように怒られました。

Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.

SQLite3をアップデート

Rails6ではSQLite3.8以上が必要なので、ダウンロードページなどでバージョン情報を確認して、
homeへcdして以下を実行します。

wget https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz
tar xzvf sqlite-autoconf-3360000.tar.gz
cd sqlite-autoconf-3360000

念のためwhich sqlite3で確認してから、もとから入っているsqliteと競合しないように /opt/sqlite/sqlite3 でビルドしてインストールしていきます。

./configure --prefix=/opt/sqlite/sqlite3
make
sudo make install

/opt/sqlite/sqlite3/bin/sqlite3 --version

Railsアプリ直下へcdして作業ディレクトリにsqlite3のgemを入れ直します。

gem uninstall sqlite3

gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include \ --with-sqlite3-lib=/opt/sqlite/sqlite3/lib

不要なファイルは削除しておきます。

rm sqlite-autoconf-3310100.tar.gz
rm -rf ./sqlite-autoconf-3310100

以下の記事を参考にパスを通しておきます。
https://qiita.com/Taku3939/items/76356f46f53946962d2e

echo 'export PATH=/opt/sqlite/sqlite3/bin:"$PATH"' >> ~/.bashrc

ここまでやって作業ディレクトリのsqlite3が更新できたことを確認できました。

sqlite3 --version
3.36.0

しかし、まだrails sしてもちゃんと動いてくれません。

以下を参考にもう一度gemを入れ直してみます。
https://mebee.info/2021/01/13/post-27973/

gem uninstall sqlite3

gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include --with-sqlite3-lib=/opt/sqlite/sqlite3/lib

起動時に大量のwarningは大量に出るものの、なんとかrails sはできるようになりました。

Warningの解消

Gemを入れ直してからalready initializedというwarningが大量に出るようになってしまったので、最後にこれも解消しておきます。
1行ずつエラーメッセーを確認して、Gemの読み込みで怒られている場合は必要に応じて以下を実行します。

gem uninstall etc
gem uninstall forwardable

ここまででやっと問題なくrails sできるようになりました!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2