来自引擎根的种子数据库无法找到db / seeds.rb

时间:2011-09-26 01:10:56

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-plugins

通过以下方式创建新的Rails 3.1 gem插件后

rails plugin new core --full

我正在尝试使用以下方式播种数据库:

rake db:seed

我遇到了以下错误:

rake aborted!
can't convert nil into String

将seeds.rb文件移动到test / dummy / db目录似乎可以解决问题。有没有办法让db:seed任务知道当前的工作目录是什么,或者在哪里找到seeds.rb文件?理想的解决方案是将seeds.rb保存在我的引擎数据库目录

3 个答案:

答案 0 :(得分:1)

当我错误地命名我的种子文件“seed.rb”而不是“seeds.rb”时,我收到了这个错误。希望,这有帮助。

答案 1 :(得分:0)

尝试创建引擎

rails plugin new core --full --mountable

您现在应该可以从引擎根执行rake db:migrate了。如果它不是可安装的引擎,因为生成器通常会部署到您的应用程序(在这种情况下为test / dummy或spec / dummy),因此rake任务将从主机应用程序运行。

答案 2 :(得分:0)

我通过在dummy / db目录中创建seeds.rb来解决这个问题。在我创建的seeds.rb文件中,我刚刚添加了:

require File.expand_path('../../../../db/seeds.rb', __FILE__)

这基本上扩展并运行引擎db目录中的seeds.rb文件。

请注意

  1. 我同时使用--full和--mountable rake db:seed无效(加上其他各种事情)
  2. 我正在使用rspec进行测试,因此我的虚拟对象位于引擎的spec / dummy目录中
  3. 我修改了我的rake和rails,以便让rspec工作
  4. 我发现的有用帖子

    1. rails 3.1 engines with rspec
    2. 希望这有帮助