[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

EC2 に Rails の開発環境をサクッと作る

Posted on

複数の Mac で開発していると、ローカル環境を統一するのが面倒になってきます。マシンを買い換えたときの環境構築も結構手間です。

そこで新しい Rails プロジェクトからローカル環境を作らずに EC2 上で開発してみることにしました。バックアップやスケールアップも簡単なので開発環境にぴったりかもしれません。

Ruby のインストール

Ruby のインストールは、先日書いたエントリーを参考にしてください。

Rails のインストール

Rails の前に足りないパッケージをインストールしておきます。 SQLite は必要に応じてどうぞ。

$ sudo yum install patch sqlite-devel

まず Bundler で Rails をインストールします。

$ mkdir project && cd project

$ bundle init

$ vi Gemfile
source "https://rubygems.org"
gem "rails", "4.2.1"

$ bundle install --path vendor/bundle

新規プロジェクトを作ります。 Gemfile を上書きしていいか聞かれるので Y で進めます。

$ bundle exec rails new .
Overwrite /home/ec2-user/project/Gemfile? (enter "h" for help) [Ynaqdh] Y

--path vendor/bundle のオプションは 1 回実行すれば覚えているので、rails new の中で bundle install が実行されてもシステムワイドの Gem は汚れません。

Node.js のインストール

Mac OS X ならこれで完了ですが、Amazon Linux で rails server を実行すると "Could not find a JavaScript runtime." というエラーになります。

$ bundle exec rails server
/home/ec2-user/project/vendor/bundle/ruby/2.2.0/gems/execjs-2.5.2/lib/execjs/runtimes.rb:48:in `autodetect': 
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

Mac OS X では JavaScript ランタイムに OS 付属の JavaScriptCore が使われますが、Amazon Linux には当然入っていないので Node.js をインストールします。

$ sudo yum --enablerepo=epel install nodejs

これで問題なく rails server が実行できます。

Public DNS でアクセスできるようにする

Rails 4.2 (Rack 1.6) から rails server が Listen するアドレスが 0.0.0.0 から localhost に変わりました。デフォルトの localhost では EC2 の Public DNS 経由でアクセスできないので Listen するアドレスを変更する必要があります。

$ bundle exec rails server -b 0.0.0.0

あとはローカル環境と変わりなく開発できると思います。