この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
rails 3.1ではJavaScriptのランタイムが必要になります。
今回はCentOS6にnode.jsを入れて対応してみます。
標準でRails3.1をインストールするとassetsという仕組みでCoffeeScriptが利用されることになります。
そのため、JavaScriptのランタイムがないと起動できません。
$ rails s -p 5001
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.2.9/lib/execjs/runtimes.rb:47
:in `autodetect': Could not find a JavaScript runtime.
See https://github.com/sstephenson/execjs
for a list of available runtimes. (ExecJS::RuntimeUnavailable)
(以下略)
実際、Gemfileに指定されているcoffee-railsは以下のような依存関係があります。
$ gem dependency coffee-rails
Gem coffee-rails-3.1.1
coffee-script (>= 2.2.0)
railties (~> 3.1.0)
$ gem dependency coffee-script
Gem coffee-script-2.2.0
coffee-script-source (>= 0)
execjs (>= 0)
では、この依存関係をクリアするようにCentOS上でnode.jsをインストールしましょう。
ただし、普通にソースコードから入れてしまうと管理のコストが上がってしまい非常にSAN値が削られてしまうので、Redhat系OSらしくrpmでインストールしましょう。
運がいいことに、kazuhisyaさんがspecファイルを公開しているので、こちらを利用します。
ちなみに、ruby1.9をインストールしたときにだいたい依存関係クリアしていたっぽいので、ビルドで落ちたら依存関係を確認してください。(yum-builddepとか使ったことないので…)
$ mkdir -p ~/rpmbuild/SOURCES/
$ cd ~/rpmbuild/SOURCES/
$ wget http://nodejs.org/dist/v0.6.5/node-v0.6.5.tar.gz
$ cd
$ git clone https://github.com/kazuhisya/nodejs-rpm.git
$ cd nodejs-rpm/
$ git checkout -b v0.6.5 v0.6.5
$ rpmbuild -bb nodejs.spec
$ sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/nodejs-0.6.5-1.el6.x86_64.rpm
これでnode.jsのインストールが完了しました。
あとはサーバを起動してみましょう。
$ rails s -p 5001=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:5001
=> Call with -d to detach
=> Ctrl-C to shutdown server
無事成功しました。
大変有益なspecファイルを公開してくれたkazuhisyaさん、ありがとうございます!今度おごってください!