我有一个Rails 3 gem,它有一些只能在测试环境中运行的rake任务。在其他环境中运行并不合理。在测试环境中自动运行gem任务
我的问题是Rake加载Rails系统,以便在我的宝石中找到我的任务。所以当它到达我的任务时,Rails已经加载到“开发”环境中(或用户指定的任何环境)。这意味着,为了运行我的Rake任务正确的用户必须做到:
RAILS_ENV=test rake mytask
由于我的任务只是使“测试”环境某种意义上说,这是恼人的,因为我宁愿用户能够只需键入:
rake mytask
这类似于如何测试:单元和测试:泛函自动假设测试环境和用户不需要在命令行来指定RAILS_ENV =测试。所以问题是如何修改我的测试,以便Rails切换到测试环境?
我目前的解决方法是:
Rails.env = 'test'
ActionMailer::Base.delivery_method = :test
require Rails.root.join('test/test_helper')
这似乎在一定程度上工作,但它仍在记录日志/ development.log,我认为这仍然是实际运行的“发展”的配置。任何人有任何想法?看看如何在Rails中定义测试任务本身并不能揭示如何做到这一点,我可以看到。
https://github.com/rails/rails/blob/master/railties/lib/rails/test_unit/testing.rake
天才!简单并解决了我需要分叉的另一个问题,以避免一个任务与另一个任务相混淆。希望我有一些观点,所以我可以给你一个很好的答案。我确实给你在提交信贷: https://github.com/eric1234/test_inline/commit/fe3da7efa3a2cdb7824c23cfa41697b0ceb9e8e2 – 2011-01-29 17:23:48