【发布时间】:2014-02-28 12:41:12
【问题描述】:
我需要从另一个 Rake 任务运行一系列 Rake 任务。前三个任务需要在开发环境中运行,但最后一个任务需要在暂存环境中运行。该任务依赖于:environment,这会导致在任务运行之前加载 Rails 开发环境。
但是,我需要在暂存环境中执行最终任务。
在调用 rake 任务之前传递 RAILS_ENV=staging 标志是不好的,因为此时环境已经加载,所有这一切都会设置标志,而不是加载暂存环境。
有没有办法在特定环境中强制执行 rake 任务?
【问题讨论】:
-
你可能不能,因为环境设置是全局的。您可以通过单独的系统调用来完成,例如
system({RAILS_ENV: 'staging'}, "rake staging_command")。 -
@LeonidShevtsov 我实际上在使用
system,但它不会重新加载环境。 -
“重新加载环境”是什么意思?它确实会与整个应用程序一起重新加载 Ruby 解释器。还有什么应该重新加载?
-
我的意思是在 rake 任务运行之前没有加载 Rails 应用程序的新实例。通过从
application.rb登录,我可以清楚地看到这一点,它没有第二次加载。 -
您确定正在查看暂存环境的正确日志吗?
标签: ruby-on-rails ruby ruby-on-rails-3 rake