【发布时间】:2012-11-03 11:50:17
【问题描述】:
我们正在开发 3.2.9 版本的 Rails 引擎。引擎是通过以下方式生成的:
rails plugin new rails_engine -mountable --skip-test-unit --dummy-path=spec/dummy
初始设置后,我们可以像在常规 Rails 应用程序中那样生成模型:
rails g model post name:string
在 db/migrate/ 下创建了一个迁移文件。接下来我们在/rails_engine下做了db:migrate:
rake db:migrate
导致错误:
Don't know how to build task 'db:migrate'
列出可用的 rake 任务:
bundle exec rake --tasks
rake build # Build test_itemx-0.0.1.gem into the pkg directory
rake clobber_rdoc # Remove RDoc HTML files
rake install # Build and install test_itemx-0.0.1.gem into system gems
rake rdoc # Build RDoc HTML files
rake release # Create tag v0.0.1 and build and push test_itemx-0.0.1.gem to Rubygems
rake rerdoc # Rebuild RDoc HTML files
其中没有 db:migrate。问题是如何将 db 任务加载回 rake。
【问题讨论】:
-
bundle exec rake db:migrate有机会吗? -
与 bundle exec 没有区别。尝试在 spec/dummy 下运行 rake db:migrate 并且它通过而没有抛出错误。但是 /spec/dummy/db/ 下的 schema.rb 仍然是空的。有点不对劲。
-
跳过测试导致了问题。要在引擎根目录中启用 rake db:migrate,需要使用以下命令创建引擎: rails plugin new my_engine --mountable --spec-path=spec/dummy
标签: ruby-on-rails ruby-on-rails-3.2 rake rake-task rails-engines