如何在rails 3.2.9引擎中加载db rake任务

时间:2012-11-14 21:55:11

标签: ruby-on-rails ruby-on-rails-3.2 rake rake-task rails-engines

我们正在研究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'

列出可用的佣金任务:

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。

2 个答案:

答案 0 :(得分:2)

这是预期的行为。请记住,它是可安装的引擎。它没有自己的环境。您需要将其安装到Rails应用程序(不是引擎而是实际的应用程序)。引擎没有任何数据库。它使用在其安装它的父应用程序中定义的数据库。显然你的db:migrate不起作用。

在您的父应用中为引擎执行以下操作:

  1. 使用以下命令将引擎安装在rails应用程序的Gemfile中作为另一个引擎:path或:git option

    gem'engine_name',:path =>'path / to / engine / directory'

  2. bundle install

  3. rake engine_name:install:migrations

  4. rake db:migrate

答案 1 :(得分:1)

我在我的引擎文件夹中输入了spec / dummy,并且刚刚运行了rake db:migrate加上测试Env的相同内容,并添加了db / schema.rb。 但我必须先手动添加spec / dummy / db文件夹。