ようへいの日々精進XP

よかろうもん

rbenv を使って ruby 2 系 をインストール、ついでに rails4 までやってみる一部始終

要件

  • ruby 2.0.0-p0 をインストールしてみる
  • rbenv を使ってバージョンを使い分けてみよう
  • rbenv の使い方も適宜習得する
  • rails 4 までインストールしてみる

環境

  • Debian 6.0.7
  • Ruby と言ったら chef のレシピ?という位の Ruby

手順

rbenv をインストール

こちらを参考にさくっとインストール

インストール
cd /usr/local
git clone git://github.com/sstephenson/rbenv.git rbenv
環境設定

/etc/profile に定義して source /etc/profile を忘れずに...

export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

ruby-builder をインストール

こちらを参考にさくっとインストール

インストール
mkdir /usr/local/rbenv/plugins
cd /usr/local/rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git
cd /usr/local/rbenv/plugins/ruby-build
./install.sh

rbenv うんちく(使い方)

  • rbenv は ruby のバージョンを切り替えてくれるツール(ざっくり言うと)
インストール可能なバージョンを確認
rbenv install --list
インストールされているバージョンを確認
rbenv versions

以下のように表示され、* が付いているのが現在、利用されているバージョンとなる

  system
* 2.0.0-p0 (set by /usr/local/rbenv/version)
インストールされているバージョンを全体に適用
rbenv global ${version 番号}
適用したローカルバージョンを解除する
rbenv local --unset
システムのデフォルトに戻す
rbenv global system

ruby 2.0.0-p0 のインストール

ということで 2.0.0-p0 をインストールしてみる。

インストール
rbenv install 2.0.0-p0

とりあえず、インストールは無事終了。

おまじない
rbenv rehash

rehash しないと使えない...FreeBSD の ports を make install した時みたいですな。

使えるようにする
rbenv global 2.0.0-p0
確認
ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]

おお、簡単。

bundler のインストール

bundler とは gem を管理するツールのようですな。gem を管理するのに gem でインストールも変な感じですが...。

gem install bundler --no-ri --no-rdoc

rails 4 のインストール

勢いにまかせて rails 4.0.0 beta をインストールしてみる。

インストール

とりあえず bundle init

mkdir /tmp/rails4
cd /tmp/rails4
bundle init

生成された Gemfile を修正。

vim /tmp/rails4/Gemfile

以下のように記載。(ほんとにいくんかいな...)

# A sample Gemfile
source "https://rubygems.org"
gem 'rails', '~> 4.0.0.beta'

インストールしてみる。

bundle install

以下のようなメッセージが出るもののインストールだん。

Installing rails (4.0.0.beta1) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
rails アプリを new する
/usr/local/rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/railties-4.0.0.beta1/bin/rails new hoge --edge

edge オプションを付けると最新の gem を git から取得出来る(とのこと)。

とりあえず起動
bundle exec rails server 2>&1 | tee hoge.txt
エラー

エラーその1

/usr/local/rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/execjs-1.4.0/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)

このエラーはよく見るなってことで、Gemfile に以下を追加。

gem 'execjs'
gem 'therubyracer'

エラーその 2

/usr/local/rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-f0540c796186/railties/lib/rails/application/configuration.rb:144:in `const_get': uninitialized constant ActionDispatch::Session::EncryptedCookieStore (NameError)

とりあえずググると、これ幸い...同じようなネタRails 4 より cookie ストアが移動になりましたって...詳しくは ChangeLog を見てねと。よく解らないがネタもとに書かれてている手順で回避、これが最善の回避策とは限らないのですいません。

vim config/initializers/secret_token.rb
# config.session_store :encrypted_cookie_store # コメントアウトで無効
config.session_store :cookie_store # 追記
起動

起動!

bundle exec rails server 2>&1 | tee hogehoge.txt

以下のようなメッセージが出る...歓喜の瞬間

[2013-04-21 02:19:17] INFO  WEBrick 1.3.1
[2013-04-21 02:19:17] INFO  ruby 2.0.0 (2013-02-24) [x86_64-linux]
[2013-04-21 02:19:17] INFO  WEBrick::HTTPServer#start: pid=28059 port=3000

ブラウザでアクセスして確認。
f:id:inokara:20130421023226p:plain
ruby 2.0.0 と rails 4.0.0-beta1 で動いている(一応)。

まとめ

  • rbenv を使うことで簡単に複数の ruby バージョンを試すことが出来そう
  • 意外に簡単に rails 4 まで起動することが出来たのは、ある意味で悪かった
  • ちゃんとリリースを読み、ChangeLog を確認しなければいけないと思った
  • とりあえず、今度はこの一連の手順を cookbook 化してみる予定