2013-02-26 [長年日記]

_ [Ruby] GitLab on Ruby 2.0 (2)

昨日の続き。 RSpecのテストで、./spec/requests/api/*.rbが全滅していたので、それを調べてみました。

まずlib/api.rbを見ると、Grape::APIとあるので、grapeのサイトを見に行って、最近の履歴を眺めつつ、新しいバージョンでの変更点はないかな?と探すとCHANGELOG.mdがあって、そこに

0.3.1 (2/25/2013)

  • #351: Compatibility with Ruby 2.0 - @mbleigh.

とあったので、その#351を見に行ったら、@hsbtさんが言ってたprotected なメソッドに対する respond_to? の挙動に関する話だったので、とりあえずgrapeのバージョンを上げました。 そしてspecを走らせると、今度はGrape::Entityが無いと怒られ、これもCHANGELOG.mdを確認したら

0.3.0 (02/21/2013)

  • #294: Extracted Grape::Entity into a grape-entity gem - @agileanimal.

とあったので、grape-entityを追加。次は、error_formatが無いと怒られ、これもCHANGELOG.mdを確認したら

0.2.3 (24/12/2012)

  • #285: Removed error_format from API settings, now matches request format - @dblock.

とあったので、error_formatを消して、ようやくspecがとおりました。

あとは、ruby 1.9.3p392でテストが壊れていないことを確認してから、フォークして、ブランチ作って、コミットして、プッシュして、pull requestを出すというおなじみの流れ。

これで、まだruby 2.0.0p0で落ちるテストは、spinachが一つと

  • Scenario: Import team from another project
    • Then I should see "Mike" in team list as "Reporter" # features/steps/project/project_team_management.rb:30

specが三つ。

  • rspec ./spec/models/users_project_spec.rb:57 # UsersProject import_team
  • rspec ./spec/models/users_project_spec.rb:60 # UsersProject import_team project 2 should get user 1 as developer. user_2 should not be changed
  • rspec ./spec/models/users_project_spec.rb:63 # UsersProject import_team project 2 should get user 1 as developer. user_2 should not be changed

四つともプロジェクトのインポート関連なので、たぶん原因は同じだと思うのですが、今のところまだ見つけられていません。 たぶん、その道の人がみたら一瞬で直せたりするんだろうなぁと思いつつ、今日は時間切れ。

でもまあ、テストから判断すれば、「プロジェクトのインポート以外は」すでにruby 2.0.0p0で問題なく動くとも言えるので、手元のGitLabはもうruby 2.0.0p0での運用でいいかな。

[追記] app/models/project_team.rbのdef importを見ると、最後に

  rescue
    false
  end

というコードがあったので、ここでraiseさせてみると、

     NoMethodError:
       private method `initialize_dup' called for #<UsersProject:0x007ff5427060e0>

おー、まさに@hsbtさんがRailsに出したpull requestまんまのエラー。 いまのところ、この修正が入った3.2系のgemは出ていないので、手元で手パッチしたら、めでたくspecがすべて通りました!

spinachは、全部緑だったけれど、最後にバックトレースがあって、

/home/git/gitlab/app/controllers/team_members_controller.rb:37:in `update': undefined method `update_attributes' for nil:NilClass (NoMethodError)
        from /home/git/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.12/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
...

うーむ。今度こそ今日は時間切れ。

というわけで、ruby 2.0.0p0対応のRails 3.2系リリースはあるのかしら?


トップ «前の日記(2013-02-25) 最新