昨日社内LT大会で「サザエ実況を支える技術」というタイトルで発表したので資料を公開します。
SuperSazaeTime History
http://super-sazae-time.herokuapp.com/
Gemfile
完全な俺得アプリなのでソースを公開するつもりはありませんが*1、代わりにGemfileだけ公開します
source 'https://rubygems.org' ruby '2.1.5' gem 'rails', '4.2.0.rc3' gem 'activeadmin', github: 'activeadmin', ref: '05c312' gem 'coffee-rails', '~> 4.0.0' gem 'devise' gem 'inherited_resources', github: "Junyulive/inherited_resources", ref: "b65f0b5" gem 'global' gem 'jbuilder', '~> 2.0' gem 'jquery-rails' gem 'less-rails-bootstrap' gem 'newrelic_rpm' gem 'omniauth-twitter' gem 'responders', '~> 2.0.2' gem 'rollbar', '~> 1.2.6' gem 'sass-rails', '~> 4.0.3' gem 'slim-rails' gem 'therubyracer' gem 'twitter' gem 'uglifier', '>= 1.3.0' group :development do gem 'annotate' gem 'heart_seed', group: :production gem 'spring' gem 'sqlite3', group: :test end group :test do gem 'factory_girl_rails', group: :development gem 'rspec-its' gem 'rspec-json_matcher' gem 'rspec-rails', group: :development gem 'timecop' end group :production do gem 'pg', group: :test gem 'rails_12factor' gem 'unicorn' end
Gemfileをidobata 風に書くのが最近のマイブームです
https://gist.github.com/kakutani/43b9f42197ab002fcdf8
Rails4.2.0.rc2 + activeadminでハマったのでメモ
Rails4.2.0.rc2 + activeadmin だとアプリ作った当時ハマったのでメモ。
当時は4.2.0.rc2だったんですが、4.2.0.rc3でもたぶん同じじゃないかなぁと思います。
急いでる人のまとめ
Before
gem 'rails', '4.1.8' gem 'activeadmin', github: 'activeadmin', ref: '05c312'
After
gem 'rails', '4.2.0.rc2' gem 'activeadmin', github: 'activeadmin', ref: '05c312' gem 'inherited_resources', github: "Junyulive/inherited_resources", ref: "b65f0b5" gem 'responders', '~> 2.0.2'
やったこと
rails 4.1.8 -> 4.2.0.rc2
bundle update
は成功したんだけど rake db:migrate:reset
でこんなエラーが出た
NameError: uninitialized constant ActionController::Responder /cache/bundle-install/ruby/2.1.0/gems/inherited_resources-1.5.1/lib/inherited_resources/responder.rb:2:in `<module:InheritedResources>' /cache/bundle-install/ruby/2.1.0/gems/inherited_resources-1.5.1/lib/inherited_resources/responder.rb:1:in `<top (required)>' /cache/bundle-install/ruby/2.1.0/gems/inherited_resources-1.5.1/lib/inherited_resources.rb:4:in `<top (required)>' /cache/bundle-install/ruby/2.1.0/bundler/gems/activeadmin-05c31283beed/lib/active_admin.rb:10:in `<top (required)>' /cache/bundle-install/ruby/2.1.0/bundler/gems/activeadmin-05c31283beed/lib/activeadmin.rb:1:in `require' /cache/bundle-install/ruby/2.1.0/bundler/gems/activeadmin-05c31283beed/lib/activeadmin.rb:1:in `<top (required)>' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/runtime.rb:76:in `require' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/runtime.rb:76:in `block (2 levels) in require' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/runtime.rb:72:in `each' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/runtime.rb:72:in `block in require' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/runtime.rb:61:in `each' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/runtime.rb:61:in `require' /home/ubuntu/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler.rb:133:in `require' /pipeline/build/config/application.rb:14:in `<top (required)>' /pipeline/build/Rakefile:4:in `require' /pipeline/build/Rakefile:4:in `<top (required)>'
rails 4.2.0で ActionController::Responder
が消えてるのが原因っぽい
http://edgeguides.rubyonrails.org/4_2_release_notes.html#respond-with-class-level-respond-to
respondersの2.0系使えとのこと
respondersの2.0.2を入れた
Bundler could not find compatible versions for gem "responders": In Gemfile: activeadmin (>= 0) ruby depends on inherited_resources (!= 1.5.0, ~> 1.4) ruby depends on responders (~> 1.0) ruby responders (2.0.2)
activeadminが依存してるgemでバージョンがコンフリクトしてた
rails4.2でも動くinherited_resourcesを探す
inherited_resourcesのforkされてるbranch一覧みたらrails 4.2対応してる人がいたのでありがたく使わせてもらう https://github.com/Junyulive/inherited_resources/commit/b65f0b55558125419f7d1287e98f39d41a7ea4e6
追伸
今回もまたLT大会で優勝できませんでした(´・ω・`)