FactoryGirlのfactoryファイルにcolorという名前のカラムの記述があると、erb2hamlが原因でrakeタスクがこける。
migrationコマンドをうつと、wrong number of arguments (1 for 2)でマイグレーションができない。
traceログをみるとなぜかfactoryファイルの下記の記述のうち、"color"の行で落ちている。
# coding: utf-8 FactoryGirl.define do factory :campaigns_question do sequence(:note) {|n| "test#{n}"} color "gray" background "#fff" end end
my-MacBook-Air:myapp bismar$ bundle exec rake db:migrate --trace ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! wrong number of arguments (1 for 2) /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/erb2haml-0.1.2/lib/erb2haml/railties/erb2haml.rake:8:in `color' /Users/bismar/myapp/spec/factories/campaigns_questions.rb:11:in `block (2 levels) in <top (required)>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/syntax/default.rb:22:in `instance_eval' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/syntax/default.rb:22:in `factory' /Users/bismar/myapp/spec/factories/campaigns_questions.rb:3:in `block in <top (required)>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/syntax/default.rb:16:in `instance_eval' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/syntax/default.rb:16:in `run' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/syntax/default.rb:7:in `define' /Users/bismar/myapp/spec/factories/campaigns_questions.rb:2:in `<top (required)>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:236:in `load' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:236:in `block in load' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:225:in `block in load_dependency' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:597:in `new_constants_in' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:225:in `load_dependency' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:236:in `load' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/find_definitions.rb:20:in `block (2 levels) in find_definitions' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/find_definitions.rb:19:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/find_definitions.rb:19:in `block in find_definitions' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/find_definitions.rb:15:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl-2.3.2/lib/factory_girl/find_definitions.rb:15:in `find_definitions' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/factory_girl_rails-1.4.0/lib/factory_girl_rails/railtie.rb:23:in `block in <class:Railtie>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/lazy_load_hooks.rb:34:in `call' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/lazy_load_hooks.rb:34:in `execute_hook' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/lazy_load_hooks.rb:42:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/application/finisher.rb:46:in `block in <module:Finisher>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/initializable.rb:25:in `instance_exec' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/initializable.rb:25:in `run' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/initializable.rb:50:in `block in run_initializers' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/initializable.rb:49:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/initializable.rb:49:in `run_initializers' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/application.rb:134:in `initialize!' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/application.rb:77:in `method_missing' /Users/bismar/myapp/config/environment.rb:6:in `<top (required)>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:242:in `require' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:242:in `block in require' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:225:in `block in load_dependency' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:597:in `new_constants_in' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:225:in `load_dependency' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/activesupport-3.0.14/lib/active_support/dependencies.rb:242:in `require' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/application.rb:103:in `require_environment!' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/railties-3.0.14/lib/rails/application.rb:218:in `block in initialize_tasks' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' /Users/bismar/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain' /Users/bismar/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load' /Users/bismar/myapp/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>' Tasks: TOP => db:migrate => environment
つい先日、hamlを導入した際、rakeタスクで自動でerbファイルをhamlに変換してくれるgem、erb2hamlを導入したが、変換後もgemは消さずに残しておいた。これが原因だった。
colorの記述があると、"erb2haml / lib / erb2haml / railties / erb2haml.rake"に記述されてる"color"メソッドと見なされ、エラーになってしまう。
当然、erb2hamlを消したらエラーが解消した。
erb2haml、らくちんでいいやと思って導入したが、結構雑な作りなのでおすすめはしない。
ファイルの指定もできないので、後で知ってこっちの方がよかったかもと思った。↓
http://screencasts.org/episodes/using-haml-with-rails-3