rails勉強中でのメモ(修正)
4月ぐらいに買ってた「ruby on railsによるwebアプリケーションスーパーサンプル」という本を最近やってて
pluginのインストールのところでenginesとlogin_engineを入れる部分でつまずいたのでメモ。
現在の環境であるMacBookに入ってるRailsが1.2.6
Railsの最新版は2.0.2で、pluginであるenginesの最新版が2.0系。
実際に本で紹介されてるのは最新版を取得と書いてあるけど1.2系なのでpluginをインストールするときは
ruby script/plugin install http://svn.rails-engines.org/engines/tags/rel_1.2.2/ruby script/plugin install http://svn.rails-engines.org/engines/tags/rel_1.2.0
とかやらないとenginesの2.0系とかが入ってくるので、rails2.0以降で使ってください!とおこられてしまう。
同じようにlogin_engineも落としてきた。
kenan%
ruby script/plugin install http://svn.rails-engines.org/login_engine/tags/rel_1.0.4/ruby script/plugin install http://svn.rails-engines.org/login_engine/tags/rel_1.0.2/
バージョンが間違っていたようです。
kenan% ruby script/generate plugin_migration
exists db/migrate
create db/migrate/003_login_engine_to_version_2.rb
うまくできたー
次はrake db:migrateでMySQLのバージョンによるSQLの問題がでたので考え中。
generate plugin_migrationで作成した003_login_engine_to_version_2.rbも正常に作り直すと
003_login_engine_to_version_1.rbとなるはず。
なんかgenereteスクリプトがうまく動かなかったので手直ししちゃいました。(良くないことだろうけど。。。
class LoginEngineToVersion2 < ActiveRecord::Migration
def self.up
Rails.plugins["login_engine"].migrate(2)
enddef self.down
Rails.plugins["login_engine"].migrate(0)
end
end
となっていたのを以下のように直しました。
class LoginEngineToVersion1 < ActiveRecord::Migration
def self.up
Rails.plugins["login_engine"].migrate(1)
enddef self.down
Rails.plugins["login_engine"].migrate(0)
end
end
本についてたサンプルで出力されたファイルと同じソースなので大丈夫でしょう。
これでdb:migrationもうまく行ってlogin認証機能が追加できました。
作業メモ:rake db:migrate すると undefined method `last' for {}:Hash と出る。
結論:rakeのバージョンがおかしい。
gem list rake
LOCAL GEMS ***
rake (0.8.1, 0.7.3)
にて現在入っているrakeバージョンを確認
0.7.3を使いたいので
rake _0.7.3_ db:migration
すれば任意のバージョンを使用できる。