夜の Discovery このページをアンテナに追加 RSSフィード Twitter

セイバーメトリクス対応!野球の成績・チーム・試合管理の決定版!『ガチャスポ ベースボール』

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:後で調べる

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証