這是我的測試設置來複制您的問題。
# lib/tasks/whatever.rake
namespace :abc do
task :def do
puts "DEF ran in #{Rails.env} mode in the directory #{Rails.root}."
end
end
$ rake abc:def
DEF ran in development mode in the directory /tmp/boluapp
$ RAILS_ENV=production rake abc:def
DEF ran in production mode in the directory /tmp/bobluapp.
它會運行。這只是沒有去日誌。你可以看到它在運行在生產模式下的rails console
這裏運行。
>> system("cd #{Rails.root} && RAILS_ENV=#{Rails.env} rake abc:def --trace 2>&1 /tmp/rake.log")
** Invoke abc:def (first_time)
** Execute abc:def
DEF ran in production mode in the directory /tmp/boluapp.
Rake在生產模式下禁用日誌記錄。因此創建一個新的。
# lib/tasks/whatever.rb
namespace :abc do
task :def do
logger = Logger.new("#{Rails.root}/log/rake.log")
logger.level = Logger::INFO
logger.info "DEF ran in #{Rails.env} mode in the directory #{Rails.root}."
end
end
$ RAILS_ENV=production rake abc:def
$ cat log/rake.log
# Logfile created on 2011-11-23 00:00:00 -0500 by logger.rb/31641
DEF ran in production mode in the directory /tmp/boluapp.
作爲免費建議的一個備註,您可能不想要,這是運行後臺作業的不好方法。看看delayed_job寶石。
更多免費諮詢,resque寶石。 – 2011-11-23 16:56:20