[英]How to load db rake tasks in rails 3.2.9 engine
我们正在 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。
这是预期的行为。 请记住,它是一个可安装的引擎。 它没有自己的环境。 您需要将其安装到 Rails 应用程序(不是引擎而是实际应用程序)。 引擎没有任何数据库。 它使用在其挂载的父应用程序中定义的数据库。 所以很明显你的 db:migrate 不起作用。
在您的父应用程序中为引擎执行以下操作:
使用 :path 或 :git 选项将您的引擎安装在 rails 应用程序的 Gemfile 中作为另一个引擎
gem 'engine_name', :path=>'path/to/engine/directory'
bundle install
rake engine_name:install:migrations
rake db:migrate
我已经在我的引擎文件夹中输入了 spec/dummy 并且刚刚运行了 rake db:migrate 加上同样的测试环境,并添加了 db/schema.rb 。 但我之前必须手动添加 spec/dummy/db 文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.