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
惚れた♪
参考サイト
- rvmのgemsetを使ってRails3の開発環境を整える - 4.5帖の生活
- RVM の Gem Sets で gemset の管理 - tbrookの日記
- http://d.hatena.ne.jp/Umeyashiki/20101120/1290265604
Thank you!
まだ読んでないけど
rvm 入門 … 複数バージョンの Ruby と Rails を混在させる - まちゅダイアリー(2011-05-21)
が、すげーまとまってる気がする。。。