将RAILS_ENV设置为测试rake任务

时间:2011-08-19 12:46:07

标签: ruby-on-rails

我已经对我的test_helper.rb

做了这个补丁
ENV["RAILS_ENV"] = ENV["RAILS_ENV_TEST"] || "test"

这适用于我可以运行

RAILS_ENV_TEST=test_dan ruby -Itest test/unit/post_test.rb

但我希望能够运行各种测试内容,包括rake db:test:clone但不使用环境test。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

使用“test”命名空间的大多数rake任务只能在您的测试环境中运行,而不能在其他环境中运行。它被硬编码到任务中,以减轻他们在生产等环境中可能产生的破坏性影响。

您可以看到这些任务没有考虑the source中调用它们的环境。

如果您想在任何您想要的环境中运行这些任务,最好的办法是重新创建这些任务并传入环境。

namespace :any_environment_test do
  task :load => :environment do
    ...
  task :clone => :environment do
    ...

在这种特定情况下,它有点棘手,因为它听起来像是要从任何环境克隆到任何环境。如果是这种情况,您可能应该传递两个变量,例如FROM_ENV=TO_ENV=

漫长的故事,你将编写自定义任务,但可以从我上面发布的链接中激发自己。 :)