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)
[ツッコミを入れる]