rails2.2.2からrails2.3.14へアップデート
参考url
とりあえずrailsのバージョンを上げる
gem install rails -v2.3.14 --no-rdoc --no-ri
testの継承元がActiveSupportに変更されている。
test/test_helper.rbで
-class Test::Unit::TestCase +class ActiveSupport::TestCase
とする。
controllelr/application.rbがcontroller/application_controller.rbにかわっている
中身は変える必要がなさそうなので単純にリネームする。
config/boot.rbとconfig/enviroments/test.rbを変更する
rails2.2に上げる時にもやったんだけどrailsguideのscaffoldあたりまでを新しいrailsバージョンでやっておいて
config配下の設定ファイルをdiffで差分を確認しています。
config/boot.rb
def load_initializer require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" Rails::Initializer.run(:install_gem_spec_stubs) + Rails::GemDependency.add_frozen_gem_path end rescue Gem::LoadError => load_error - $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.) - exit 1 + if load_error.message =~ /Could not find RubyGem rails/ + STDERR.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.) + exit 1 + else + raise + end def load_rubygems + min_version = '1.3.2' require 'rubygems' - min_version = '1.3.1'
config/environments/test.rb
+ config.action_view.cache_template_loading = true
validates_date_timeでエラーになる
こんなふうにHogeモデルを初期化すると
hoge = Hoge.new('written_on(1i)' => "", 'written_on(2i)' => "", 'written_on(3i)' => "") hoge#written_on_before_type_cast => '-00-00'
ってなってしまう。
なので、validates_date_timeプラグインの中で
+ raw_value = nil if (raw_value == "" || raw_value =~ /-00-00/)
ってコードを追加した。
根本的な問題解決ではないので、この対処はやっちゃだめ(やってる自分が言ってるのって説得力ないな)。
最低限アプリ側のコードで対処しろってツッコミが来そうですな。このあとのrails3.0へのアップグレードで対応しました。
反省点
- validates_date_timeの対処がイマイチ感満載だなぁ
- rails newで作った各ファイルたちをdiffで確認するのはかなりおすすめ