Ruby on Railsのデモを走らせるまで非常に手間取った。
環境&前回のメモ
RVMでRuby 2.1.0へ
% rvm get stable % rvm list known % rvm upgrade ruby-2.0.0 ruby-2.1.0
今回はRubygemsが一括で以降できなかったのであとからちょっとずつ更新。
% rvm list rvm rubies ruby-2.0.0-p353 [ x86_64 ] =* ruby-2.1.0 [ x86_64 ] # => - current # =* - current && default # * - default % rvm gemset list gemsets for ruby-2.1.0 (found in /usr/local/rvm/gems/ruby-2.1.0) (default) global => rails % rvm use ruby-2.1.0@rails --default
Rubygemsのアップデート
% rvmsudo gem update --system % gem -v 2.2.1
Rails 4へ
新たにatomicというライブラリーが必要なので先にこちらをインストールする。
% rvmsudo gem install atomic
Railsのアップグレード
% rvmsudo gem update rails
デモ
% rails new demo % cd demo
Gemfileでコメントアウトされているtherubyracerをコメントインする。そして
% bundle install
今回はこのあとにサーバーを機動させようとしたら以下のエラーがでてはまった。
% rails server /usr/local/rvm/gems/ruby-2.1.0@rails/gems/execjs-2.0.2/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) from /usr/local/rvm/gems/ruby-2.1.0@rails/gems/execjs-2.0.2/lib/execjs.rb:5:in `<module:ExecJS>' 〜以下略〜
Gemfile.lockを見るとちゃんとexecjsもtherubyracerも読み込まれている。
% grep execjs Gemfile.lock execjs execjs (2.0.2) execjs (>= 0.3.0) % grep therubyracer Gemfile.lock therubyracer (0.12.0) therubyracer % grep v8 Gemfile.lock libv8 (3.16.14.3) libv8 (~> 3.16.14.0) libv8
arul khairullah: Could not find a JavaScript runtime' but execjs AND therubyracer are in Gemfileによると nodejs を追加したら動いたとのこと。やってみたら確かに動いた。
% sudo aptitude install nodejs