Und*_*ion 25 ruby rake ruby-on-rails ruby-on-rails-3
我需要从另一个Rake任务运行一系列Rake任务.前三个任务需要在开发环境中运行,但最终任务需要在登台环境中运行.该任务依赖于该任务:environment导致在任务运行之前加载Rails开发环境.
但是,我需要在暂存环境中执行最终任务.
RAILS_ENV=staging在调用rake任务之前传递一个标志是不好的,因为此时已经加载了环境,所有这一切都将设置标志,而不是加载登台环境.
有没有办法可以在特定环境中强制执行rake任务?
kdd*_*isz 19
我之前已经完成了这种方式,尽管不是最优雅的方式:
task :prepare do
system("bundle exec rake ... RAILS_ENV=development")
system("bundle exec rake ... RAILS_ENV=development")
system("bundle exec rake ... RAILS_ENV=test")
system("bundle exec rake ... RAILS_ENV=test")
system("bundle exec rake ... RAILS_ENV=test")
system("bundle exec rake ... RAILS_ENV=test")
end
Run Code Online (Sandbox Code Playgroud)
它总是对我有用.我很想知道是否有更好的方法.
Mat*_*rtz 14
我解决它的方法是在调用任务之前添加一个依赖项来设置rails env:
namespace :foo do
desc "Our custom rake task"
task :bar => ["db:test:set_test_env", :environment] do
puts "Custom rake task"
# Do whatever here...
puts Rails.env
end
end
namespace :db do
namespace :test do
desc "Custom dependency to set test environment"
task :set_test_env do # Note that we don't load the :environment task dependency
Rails.env = "test"
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21760 次 |
| 最近记录: |