2011-03-09
■ [ruby] rak 1.0を1.9に対応させる方法
gems/rak-1.0/bin/rakを直接編集して以下のパッチを当てるととりあえずエラーは出なくなる。
「これが最善かどうか分からないから」という理由でマージされてないけど。 まあ、オプションでエンコーディングを指定できるようにするのが良いんでしょうね。 デフォルトはEncoding.default_externalで。
■ [ruby] Rails2と3の起動コマンドを使い分ける方法
$ gem install rails $ gem install rails -v 2.3.11
とやるとRails 3.0.4と2.3.11が両方インストールされた状態になるんだけど、単にrailsコマンドを実行すると新しい方が優先されるので
$ rails -v Rails 3.0.4
となって、rails2のコマンドが使えなくなるように見える。
が、実はRubyGemsが自動生成する実行スクリプトは第一引数が「_(.*)_」という形式だったらバージョン指定とみなすという機能がある。
ので、上の例だと _2.3.11_ を頭につけることで、
$ rails _2.3.11_ -v Rails 2.3.11
のように古い方のrailsコマンドを実行することができる。
以下 cat `which rails` の出力。
#!/home/yhara/.rvm/rubies/ruby-1.9.2-p136/bin/ruby # # This file was generated by RubyGems. # # The application 'rails' is installed as part of a gem, and # this file is here to facilitate running it. # require 'rubygems' version = ">= 0" if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then version = $1 ARGV.shift end gem 'rails', version load Gem.bin_path('rails', 'rails', version)