一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

MacOSXでrakeをアップデートする

 redmineを1.8.0から1.8.1にアップデートする時にdb:migrate時に以下のようなエラーが出た。

$ rake db:migrate RAILS_ENV="production"
(in /Users/username/Rails/redmine-0.8.1)
rake aborted!
wrong number of arguments (3 for 1)
/Users/username/Rails/redmine-0.8.1/rakefile:10
(See full trace by running task with --trace)

 これはrakeのバージョンが古いままだったからだ。gem listで確認すると0.8.3なのだが、バージョンを確認すると古いまま。

$ gem list

 *** LOCAL GEMS ***

actionmailer (2.2.2)
actionpack (2.2.2)
activerecord (2.2.2)
activeresource (2.2.2)
activesupport (2.2.2)
gem_plugin (0.2.3)
mysql (2.7)
rails (2.2.2)
rake (0.8.3)
RedCloth (4.1.9)
refe (0.8.0.3)

$ rake --version
rake, version 0.7.3

 whichで確認するとパスが/usr/bin/rakeになっている。

$ which rake
/usr/bin/rake

 そこで旧rakeを移動し、/opt/local/bin配下のrakeへシンボリックリンクを張る。

$ sudo /usr/bin/rake /usr/bin/rake.old
$ sudo ln -s /opt/local/bin/rake /usr/bin/rake

 パスとバージョンを確認。

$ which rake
/opt/local/bin/rake
$ rake --version
rake, version 0.8.3

 この後にredmineのdb:migrateを実行したら問題なく動作。ふー、しかしなんでrakeは/usr/binにあるのだろうか。