2008-06-18
rails2.0.2 → 2.1.0 に移行
前回は挫折してしまったのですが、本日某サービスを 2.1.0 に移行しました。
エラーへの対応
まず、自作のバリデーションライブラリでエラーが発生していました。
どうやら起動時の読み込み順序が変わった*1ようで、/config/environment.rb に書いていた、グローバル変数が nil になっていました。
このグローバル変数はライブラリ(/lib)から参照するため、ライブラリ読み込み時に値が入っていなければ困ります。
そこで、Rails::Initializer.run のブロック内で値を入れるようにしました。
(省略) Rails::Initializer.run do |config| (省略) + $GLOBAL_CONFIG = YAML.load(File.open("#{RAILS_ROOT}/config/config.yml")) end -$GLOBAL_CONFIG = YAML.load(File.open("#{RAILS_ROOT}/config/config.yml")) (省略)
続いて、gettext のエラー。
NoMethodError (undefined method `file_exists?' for #<ActionView::Base:0x47c9c60>): C:/ruby-1.8/lib/ruby/gems/1.8/gems/gettext-1.90.0/lib/gettext/rails.rb:280:in `render_file' C:/ruby-1.8/lib/ruby/gems/1.8/gems/gettext-1.90.0/lib/gettext/rails.rb:278:in `each' C:/ruby-1.8/lib/ruby/gems/1.8/gems/gettext-1.90.0/lib/gettext/rails.rb:278:in `render_file' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:1108:in `render_for_file' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:841:in `render_with_no_layout' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/layout.rb:251:in `render_without_benchmark ' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/benchmarking.rb:51:in `render' C:/ruby-1.8/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/core_ext/benchmark.rb:8:in `realtime' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/benchmarking.rb:51:in `render' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:1157:in `default_render' C:/ruby-1.8/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:1163:in `perform_action_without_fi lters'
このエラーの対処法は前回の記事を書いたときに教えて頂いた、以下のページが参考になります。
Edge Rails and gettext undefined method file_exists (NoMethodError)
http://zargony.com/2008/02/12/edge-rails-and-gettext-undefined-method-file_exists-nomethoderror
具体的には /config/initializers/gettext.rb を以下にようにします。
require 'gettext/rails' module ActionView class Base delegate :file_exists?, :to => :finder unless respond_to?(:file_exists?) end end
警告への対応
DEPRECATION WARNING: config.action_view.cache_template_extensions option has been deprecated and has no affect. Please r emove it from your config files. See http://www.rubyonrails.org/deprecation for details. (called from send at C:/ruby-1 .8/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/initializer.rb:455)
これは普通に、/config/environments/development.rb の cache_template_extensions をコメントアウト。
その他
acts_as_modified は(ほぼ)同等の機能が rails に取り込まれました。以下、参考サイト。
Ruby On Rails ピチカート街道 - Rails 2.1・その5(model の値変更を覚えている)
http://rubist.blog77.fc2.com/blog-entry-133.html
will_paginate は plugin から gem になった。以下、参考サイト。
will_paginateのインストール方法が変わっていた - idesaku blog
http://d.hatena.ne.jp/idesaku/20080508/1210249865
追記
「ザリガニが見ていた...。」さんの記事の方が詳しい&正しいので、そちらをどうぞ!
Rails2.0から2.1への移行を試してみる - ザリガニが見ていた...。
http://d.hatena.ne.jp/zariganitosh/20080621/1214110380
ただ、以下のコマンドは prototype.js が 1.6.0.1 になるので注意が必要かも。(2008/06/23現在)
rake rails:update
*1:後で調べる
- 13 http://okyuu.com/ja/tips/1489
- 9 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=b0p&q=Ruby+Rails+2.1&btnG=検索&lr=lang_ja
- 7 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP266JP266&q=input+text+変更+javascript
- 6 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=ext+カレンダー&num=50
- 4 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja:official&channel=s&hl=ja&q=undefined+method+`require_gem'&lr=&btnG=Google+検索
- 3 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=KdV&q=actionscript+カーソル&start=10&sa=N
- 2 http://72.14.235.104/search?q=cache:Y2jppsyRuMsJ:d.hatena.ne.jp/kusakari/20080112/1200048406+rails+2.1+サブドメイン&hl=ja&ct=clnk&cd=1&gl=jp&lr=lang_ja&client=firefox
- 2 http://d.hatena.ne.jp/keyworddiary/Ruby
- 2 http://d.hatena.ne.jp/kusakari
- 2 http://okyuu.com/ja/news/1487