LionにRails3の開発環境を構築するよ (その3)

LionにRails3の開発環境を構築するよ (その2) - 日々此妄想 に引き続き第3回目
RVMと ruby-1.8.7-p352, ruby-1.9.2-p290 [ x86_64 ] のインストールまで終ったので次はgemsetとやらをごにょごにょしてみる


gemsetsとはなんぞや

公式https://rvm.beginrescueend.com/gemsets/ を読む

公式https://rvm.beginrescueend.com/gemsets/basics/に基本的な事が書いてある模様


かいつまむと rvm で異なるrubyを切替えて使う事ができる。
で、その選択したrubyの中でgemを色々入れるわけだけど、gemsetsを使うと色々入れるgemをグルーピングしてそれも切替えられるという事みたい。


rvmのgemsetを使ってRails3の開発環境を整える - 4.5帖の生活 こういうカオスな状態を打開できるって事みたい。



RC版やちょっと入れてみたいgemなんかも別のgemsetにガンガン ぶっこんで気に入らなかったらgemsetを消しちゃえばサッパリするって事だと妄想する


ではさっそくgemsetを作ってみる。。。

satsuki:~ hana-da$ rvm use default
Now using system ruby.
satsuki:~ hana-da$ rvm gemset list

gemsets for system (found in /Users/hana-da/.rvm/gems/system)
   *

こんな状態


1.8.7に切替えると

satsuki:~ hana-da$ rvm use 1.8.7
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352

お! こういう切替えができるのかステキ☆

satsuki:~ hana-da$ rvm 1.8.7
satsuki:~ hana-da$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.0.0]

これもアリか! つくずくステキ☆☆



でもってgemset listは

satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
   global

globalっていうgemsetができてる。

rvm install すると global な gemset が勝手にできる模様


で、

satsuki:~ hana-da$ rvm gemdir
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352

あ、globalだとそこなのね。

GEM_PATHは?

satsuki:~ hana-da$ echo $GEM_PATH
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352:/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@global

んー。2つ?


シンボリックリンクか何かなのかな?

satsuki:~ hana-da$ file /Users/hana-da/.rvm/gems/ruby-1.8.7-p352
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352: directory
satsuki:~ hana-da$ file /Users/hana-da/.rvm/gems/ruby-1.8.7-p352@global
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@global: directory

別物なんだ。


と、なると今、本当に@globalなのか気になるな。。。

satsuki:~ hana-da$ rvm gemset name
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352

あれ?@globalじゃないんだ。へーへーへー


インスコ済のgemってあるのかな?

satsuki:~ hana-da$ gem list

*** LOCAL GEMS ***

rake (0.9.2 ruby)

あ、rakeが入ってる。そういやrubyを入れるとrakeも入れてくれると どっかで見たような。。。


じゃぁ@globalには何か入ってるのかな?
gemset切替え

satsuki:~ hana-da$ rvm gemset use global

あれ、切替えましたよとか何も出ないのか。。。


じゃぁ確認してみる

satsuki:~ hana-da$ rvm gemset name
global

よしよし@globalだ


で、中身は?

satsuki:~ hana-da$ gem list

*** LOCAL GEMS ***

rake (0.9.2)

一緒だった。


あれ?
で、どうやって元のgemsetに戻すんだ? default?

satsuki:~ hana-da$ rvm gemset use default
ERROR: Gemset 'default' does not exist, rvm gemset create 'default' first.

おこられた。。。


gemset listしてみる

satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
=> global

あ、gemset list でも今どのgemsetを使ってるのか判るんだ。。。
ってか最初はなんだったんだよぉおぉぉ


gemdirは?

satsuki:~ hana-da$ rvm gemdir
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@global

当然gemdirも@global


GEM_PATHは?

satsuki:~ hana-da$ echo $GEM_PATH
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@global:/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@global

GEM_PATHからも@なしが消えた。。。

でも2つPATHがあった理由がちょっとわかった@globalはどのgemsetを使っててもloadされるわけね。



で、いろいろやってると

satsuki:~ hana-da$ rvm gemset use global
satsuki:~ hana-da$ rvm gemset name
global
satsuki:~ hana-da$ rvm use system
Now using system ruby.
satsuki:~ hana-da$ rvm use 1.8.7
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352
satsuki:~ hana-da$ rvm gemset name
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352
satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
   global

rubyを切替えると戻った。
ふむふむ。なるほどそういう事か。


defaultのgemsetを@globalにしたい気がする

satsuki:~ hana-da$ rvm gemset use global --default

かな?


ruby を systemに一旦戻して、また1.8.7に切替えてgemset listを確認してみる

satsuki:~ hana-da$ rvm system
satsuki:~ hana-da$ rvm 1.8.7
satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
   global

違うっぽい。


じゃーどっかでみたこの方法

satsuki:~ hana-da$ rvm use 1.8.7@global --default
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352 with gem set global

かな?


で、確認

satsuki:~ hana-da$ rvm gemset name
global
satsuki:~ hana-da$ rvm system
satsuki:~ hana-da$ rvm 1.8.7
satsuki:~ hana-da$ rvm gemset name
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352

違うっぽい。


でも、一回logoutすると。。。

satsuki:~ hana-da$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.0.0]
satsuki:~ hana-da$ rvm gemset name
global

だよねー。そうだよねー。
でもdefaultのrubyがrvmで入れたrubyってのは標準大好きっ子なので ちょっとイヤ


systemに戻す

satsuki:~ hana-da$ rvm use system --default
Now using system ruby.
Now using system ruby.

なぜ2行?


logoutして、確認

satsuki:~ hana-da$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
satsuki:~ hana-da$ rvm gemset name
/Library/Ruby/Gems/1.8
satsuki:~ hana-da$ rvm 1.8.7
satsuki:~ hana-da$ rvm gemset name
/Users/hana-da/.rvm/gems/ruby-1.8.7-p352

戻った


まーでもrubyを切替えた時に選択されているgemsetが@globalって必要はない気がする。
というか、そうするとたぶん使いにくいと思うので、これはこれでヨシとする

やっとgemsetをつくってみる

さて、ではgemsetを作ってrailsを。。。ってversion何を入れよう。。。今の最新って何だっけ???浦島太郎だ。
gemsetの名前をrails[version]にしたいから入れたいものが決まらないとgemsetつくれないお。。。


gemコマンドのおさらいするか。


とりあえずrailのversion一覧が欲しいなぁ。。。
gem listだっけ?

satsuki:~ hana-da$ gem list -r rails

*** REMOTE GEMS ***

rails (3.0.10)
rails-3-settings (0.1.1)
:

出てきすぎ。。。。しかも最新版だけか。


ちなみに gem list は前方一致(start_with)でgem searchは部分一致(contains)なのね

satsuki:~ hana-da$ gem list -r rails | wc -l
     206
satsuki:~ hana-da$ gem search -r rails | wc -l
     594

ふむ。どうでもいいw


exact matchはどうやるんだー。
マニュアルhttp://docs.rubygems.org/read/book/2嫁てか。

gem query -n [正規表現] が可能っぽい

satsuki:~ hana-da$ gem query -rn '^rails$'

*** REMOTE GEMS ***

rails (3.0.10)

あらステキ


んーでも過去のバージョンをひっぱってくる方法がわからん。。。
公式にも書いてない。。。
で、苦しまぎれに gem help

satsuki:~ hana-da$ gem help list
Usage: gem list [STRING] [options]

  Options:
    -i, --[no-]installed             Check for installed gem
    -v, --version VERSION            Specify version of gem to list
                                     for use with --installed
    -d, --[no-]details               Display detailed information of gem(s)
        --[no-]versions              Display only gem names
    -a, --all                        Display all gem versions
        --[no-]prerelease            Display prerelease versions
:

あんじゃん。--allじゃん。

satsuki:~ hana-da$ gem help query
Usage: gem query [options]

  Options:
    -i, --[no-]installed             Check for installed gem
    -v, --version VERSION            Specify version of gem to query
                                     for use with --installed
    -n, --name-matches REGEXP        Name of gem(s) to query on matches the
                                     provided REGEXP
    -d, --[no-]details               Display detailed information of gem(s)
        --[no-]versions              Display only gem names
    -a, --all                        Display all gem versions
        --[no-]prerelease            Display prerelease versions
:

gem query にもあんじゃんw



と、いう事でrailsを調べる

satsuki:~ hana-da$ gem query -ran '^rails$'

*** REMOTE GEMS ***

rails (3.0.10, 3.0.9, 3.0.8, 3.0.7, 3.0.6, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.3.14, 2.3.12, 
2.3.11, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2, 2.1.1, 
2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 
1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 
0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 
0.9.0, 0.8.5, 0.8.0)

ふぅ。道のり長かった。


と、いう事で3系は3.0.10で2系は2.3.14だな。

ちなみに使った事あるのは1.2.3w

本当にgemsetを作る

あとは簡単。。。な、はず。
1.8.7にして

satsuki:~ hana-da$ rvm use 1.8.7
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352

うむ


rails_2.3.14というgemsetとrails_3.0.10というgemsetを一気に作る

satsuki:~ hana-da$ rvm gemset create rails_2.3.14 rails_3.0.10
ERROR: Gemset 'rails_3.0.10' does not exist, rvm gemset create 'rails_3.0.10' first.
'rails_2.3.14' gemset created (/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@rails_2.3.14).
'rails_3.0.10' gemset created (/Users/hana-da/.rvm/gems/ruby-1.8.7-p352@rails_3.0.10).

ん???
なんか怒られたけど。。。できた?


確認する

satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
   global
   rails_2.3.14
   rails_3.0.10

できてるっぽい。

勢いにのってrailsも!!!

じゃぁまず2.3.14から

ruby 1.8.7を選択

satsuki:~ hana-da$ rvm use 1.8.7
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352

よし


んで gemset rails_2.3.14を選択

satsuki:~ hana-da$ rvm gemset use rails_2.3.14

だんまりっ子なので、確認する

satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
   global
=> rails_2.3.14
   rails_3.0.10


じゃーrails入れるお

satsuki:~ hana-da$ gem install rails --version=2.3.14
Fetching: activesupport-2.3.14.gem (100%)
Fetching: activerecord-2.3.14.gem (100%)
Fetching: rack-1.1.2.gem (100%)
Fetching: actionpack-2.3.14.gem (100%)
Fetching: actionmailer-2.3.14.gem (100%)
Fetching: activeresource-2.3.14.gem (100%)
Fetching: rails-2.3.14.gem (100%)
Successfully installed activesupport-2.3.14
Successfully installed activerecord-2.3.14
Successfully installed rack-1.1.2
Successfully installed actionpack-2.3.14
Successfully installed actionmailer-2.3.14
Successfully installed activeresource-2.3.14
Successfully installed rails-2.3.14
7 gems installed
Installing ri documentation for activesupport-2.3.14...
:

はいった。
てかriとrdocもはいった。さすがにriとrdocはいらんかったな。。。

satsuki:~ hana-da$ rails -v
Rails 2.3.14

おさげ。

で、3.0.10

特に何も問題なかったので割愛w


の、予定だったけどrails3はbundle installするのがナウイらしい
Rails3 を Bundler でインストールする - How to Install Rails3 by Bundler - bekkou68 の日記 この辺を参考に。。。

bundlerを@globalに入れちゃう
これで@globalの恩恵を味わってみる

satsuki:~ hana-da$ rvm use 1.8.7
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352
satsuki:~ hana-da$ rvm gemset use global
satsuki:~ hana-da$ rvm gemset list

gemsets for ruby-1.8.7-p352 (found in /Users/hana-da/.rvm/gems/ruby-1.8.7-p352)
=> global
   rails_2.3.14
   rails_3.0.10

だいぶ慣れてきた


で、gem install bundler

satsuki:~ hana-da$ gem install bundler
Fetching: bundler-1.0.18.gem (100%)
Successfully installed bundler-1.0.18
1 gem installed
Installing ri documentation for bundler-1.0.18...
Installing RDoc documentation for bundler-1.0.18...

あ、またriとrdocいれちまった。。。


gemset を rails_3.0.10 に切替えて確認

satsuki:~ hana-da$ rvm gemset use rails_3.0.10
satsuki:~ hana-da$ gem list

*** LOCAL GEMS ***

bundler (1.0.18)
rake (0.9.2)

おーすげー


で、railsのプロジェクトディレクトリに移動し bundle install

satsuki:Rails hana-da$ cd bundle_1st/
satsuki:bundle_1st hana-da$ ls
satsuki:bundle_1st hana-da$ bundle install
Could not locate Gemfile

で怒られるw


という事で bundle init

satsuki:bundle_1st hana-da$ bundle init
Writing new Gemfile to /Users/hana-da/Documents/Development/Rails/bundle_1st/Gemfile
satsuki:bundle_1st hana-da$ ls
Gemfile
satsuki:bundle_1st hana-da$ cat Gemfile 
# A sample Gemfile
source "http://rubygems.org"

# gem "rails"

でけた


最新版のrailが入るように、おまじないして bundle install

satsuki:bundle_1st hana-da$ echo 'gem "rails"' >> Gemfile
satsuki:bundle_1st hana-da$ bundle install
Fetching source index for http://rubygems.org/
Using rake (0.9.2) 
Installing abstract (1.0.0) WARNING: abstract-1.0.0 has an invalid nil value for @cert_chain

Installing activesupport (3.0.10) 
Installing builder (2.1.2) WARNING: builder-2.1.2 has an invalid nil value for @cert_chain

Installing i18n (0.5.0) 
Installing activemodel (3.0.10) 
Installing erubis (2.6.6) 
Installing rack (1.2.3) 
Installing rack-mount (0.6.14) 
Installing rack-test (0.5.7) 
Installing tzinfo (0.3.29) 
Installing actionpack (3.0.10) 
Installing mime-types (1.16) 
Installing polyglot (0.3.2) 
Installing treetop (1.4.10) 
Installing mail (2.2.19) 
Installing actionmailer (3.0.10) 
Installing arel (2.0.10) 
Installing activerecord (3.0.10) 
Installing activeresource (3.0.10) 
Using bundler (1.0.18) 
Installing rdoc (3.9.2) 
Installing thor (0.14.6) 
Installing railties (3.0.10) 
Installing rails (3.0.10) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

ステキな予感


gem listしてみる

satsuki:bundle_1st hana-da$ gem list

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.10)
actionpack (3.0.10)
activemodel (3.0.10)
activerecord (3.0.10)
:

キタキター


そして謎のファイルが出きている

satsuki:bundle_1st hana-da$ ls
Gemfile		Gemfile.lock

Gemfile.lockって何だ?
まぁいいか。

確認タイム☆

satsuki:~ hana-da$ rvm use 1.8.7@rails_2.3.14 && rails -v
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352 with gemset rails_2.3.14
Rails 2.3.14
satsuki:~ hana-da$ rvm use 1.8.7@rails_3.0.10 && rails -v
Using /Users/hana-da/.rvm/gems/ruby-1.8.7-p352 with gemset rails_3.0.10
Rails 3.0.10

惚れた♪