debiancdn

AWS, Content Delivery Network and Debian

donrailsのrails2.3対応

研究でつかってるprogramの前哨戦で,donrailsのrails2.3化を行った.

  • etchだとdebでいれたgemではだめ.gemが1.3.1よりあたらしいものを要求する.まあとってきてインストールするだけだが,それにあわせて必要なgemをいれなおさないといけない.
    actionmailer (2.3.2)
    actionpack (2.3.2)
    actionwebservice (2.3.2)
    activerecord (2.3.2)
    activeresource (2.3.2)
    activesupport (2.3.2)
    hpricot (0.8.1)
    libxml-ruby (1.1.3)
    libxml-xmlrpc (0.1.5)
    mocha (0.9.5)
    mysql (2.7)
    packet (0.1.15)
    rails (2.3.2)
    rake (0.8.4)
    rubygems-update (1.3.2)
    will_paginate (2.2.2)
    

    使うのはこんなかんじ.

  • rake rails:update
    • application.rbがapplication_controller.rbを変えろ,と出た.
  • actionwebservice (2.3.2)をいれる
  • security_extensionsを使うのをやめた.
    • app/viewsでかきかえるためには,こうなってるところをはずさないといかん.
      <%= hidden_field_tag(:session_id_validation, security_token) %>
      

      その数は.

      cfardm-2:~/playground/donrails/app/views$ gfind -name \*.rhtml |xargs grep token |wc
            35     324    5043
      

      かなり多いな.面倒なので,

      module ApplicationHelper
        def security_token # dummy for 2.3.2
          return rand.to_s
        end
      

      という具合でdummyをいれた.

    • あとはnotes_controller.rb
       protect_from_forgery :except => [:catch_trackback, :trackback, :catch_ping]
      
  • controllerの中で session :off を使うのをやめた
  • Test::Unit::TestCaseがなくなったので,それを書き換え
  • request.session.session_idは使えない。request.session_options[:id]を使う。
    • これはwarningなのでそれに従って書き換える.
  • testのときに同一のテスト関数内で2つのテストをしてるときの引数の取扱がかわった.たとえば
        post :delete_article, :deleteid => {'40000' => '1'}
        assert_equal "<br>Not exists (no delete):40000", flash[:note2]
        assert_redirected_to :action => 'manage_article'
        post :delete_article,
        :hideid => {'4' => '0'}, :deleteid => nil
        assert_equal "<br>Hyde status:4 is 0", flash[:note2]
        assert_redirected_to :action => 'manage_article'
    

    こんなんじで引数を変えて,2つの postを評価しているときには,2つ目のほうには使わない引数には nil を与えるなどしてやらないといかん

  • RAILS_ROOT/lib を読まなくなった.
    NameError (uninitialized constant ApplicationController::AntiSpam): app/controllers/application_controller.rb:199:in `don_is_spam?'
    

    とかでたので,environment.rbをいじった.

    config.load_paths += %W( #{RAILS_ROOT}/lib )
    
  • ActiveRecordで,formatというのをカラム名にできなくなった.予約語?
    • dbのMigrateをやった.そしてコードもなおしまくり.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中