【问题标题】:Rake task is not called in production mode for ruby on rails 3在生产模式下不为 ruby​​ on rails 3 调用 Rake 任务
【发布时间】:2011-07-07 10:48:36
【问题描述】:

来自控制器:-

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 

在开发模式下会触发此 rake 任务。但在生产模式下不会触发。

PS:- 灵感来自rake in background, railscast。生产模式下 rake.log 文件中没有任何内容

【问题讨论】:

  • 如果选项是用户以任何方式生成的,这是非常危险的。想象一下,如果我通过 "k='s'; rm -rf /; 's"。
  • @spike 没问题.. 因为它不是用户生成的..

标签: ruby-on-rails ruby-on-rails-3 rake


【解决方案1】:

尝试以下系统调用:

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

【讨论】:

    【解决方案2】:

    验证“rake”是否在运行您的网络服务器/应用服务器的用户的 $PATH 中

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 2011-05-17
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多