2011-07-07 24 views
0

從控制器: -Rake任務不是在生產模式要求Ruby on Rails的3

call_rake :parse_venue, :venue_list_id => venue_list.id 


def call_rake(task, options = {}) 
    options[:rails_env] ||= Rails.env 
    args = options.map { |n, v| "#{n.to_s.upcase}='#{v}'" } 
    system "rake #{task} #{args.join(' ')} --trace 2>&1 >> #{Rails.root}/log/rake.log &" 
end 

在開發模式下,該耙任務被觸發。但在生產模式情況下,它不會被觸發。

PS: - 靈感來自rake in background, railscast。沒有什麼rake.log文件在生產模式

+0

如果選項是以任何方式生成的,這是非常危險的。想象一下,如果我傳遞「k ='s'; rm -rf /;'s」。 –

+0

@spike沒有問題..因爲它沒有用戶生成.. –

回答

0

試試下面的系統調用:

system "#{args.join(' ')} rake #{task} --trace 2>&1 >> #{Rails.root}/log/rake.log &" 
+0

沒有它沒有工作.. :( –

0

驗證「回扣」是在用戶的$ PATH運行Web服務器/應用服務器

相關問題