相关疑难解决方法(0)

添加自定义种子文件

我想用虚拟数据填充新功能,但不想使用db/seeds.rb文件,因为它已经有种子,其他数据与此功能无关.

要运行默认seeds.rb文件,请运行该命令rake db:seed.

如果我在被db调用的目录中创建一个文件seeds_feature_x.rb,那么rake命令会运行(仅)该文件是什么样的?

ruby rake ruby-on-rails seed ruby-on-rails-3.2

71
推荐指数
3
解决办法
3万
查看次数

Rails:让这个rake任务知道它在测试环境中

我在我的lib/tasks文件夹中定义了以下rake任务:

namespace :db do
  namespace :test do
    task :prepare => :environment do
      Rake::Task["db:seed"].invoke
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,它的作用是在我运行时为测试数据库播种rake db:test:prepare.我这样做是因为我有一些必须存在的基本记录才能使应用程序正常运行,所以它们不是可选的,也不能真正被嘲笑.

另外,我有一个在开发和生产中使用S3进行资产存储的模型,但我不希望它使用S3进行测试.我在模型中设置了一个方法,用于将存储路径从S3更改为本地ifRails.env.test?

但是,这不起作用.我想知道rake任务是否知道它被调用的环境,事实证明它不是.我把它放在我的seeds.rb文件的顶部:

puts "Environment Check: Rails Environment = #{Rails.env}"
Run Code Online (Sandbox Code Playgroud)

果然,当任务运行时,这打印: Environment Check: Rails Environment = development

那么,我怎样才能重做这个rake任务,以便当它播种测试数据库时它知道它正在为测试数据库播种?

environment rake ruby-on-rails seed ruby-on-rails-3

16
推荐指数
2
解决办法
1万
查看次数