【发布时间】:2013-08-29 09:21:46
【问题描述】:
我正在运行自定义 rake 任务...
namespace :import do
desc "Import terms of service as HTML from stdin"
task :terms => :environment do
html = STDIN.read
settings = ApplicationWideSetting.first
settings.terms_and_conditions = html
if settings.save
puts "Updated terms of service"
else
puts "There was an error updating terms of service"
end
end
end
在production 环境中运行任务时,模型ApplicationWideSetting 报告为未定义。但是,在其他环境(即development、staging、test)上运行任务时,任务运行良好。
在 Rails 控制台中运行进程,在所有环境中,都可以完成。
有谁知道发生了什么,我可以检查一下吗?
注意:我使用
运行任务puts Rails.env
检查 shell 环境 var RAILS_ENV 是否被正确设置/读取。我也尝试过在 :environment 依赖声明周围使用和不使用方括号。
其他信息: Rails v3.2.14
更多信息:我已经设置了一个全新的 Rails 应用程序,该脚本在任何环境下都能正常工作。由于有问题的安装是一个真实的生产环境,我将不得不设置另一个部署并彻底检查它。我找到了更多信息。
【问题讨论】:
-
rake import:terms RAILS_ENV=production??
-
我已导出 RAILS_ENV= 生产并将其放入标准输出以确保其设置。无论如何我都会尝试一下,但如果它有效的话会很奇怪......
-
@beck03076 可以预见的是没有效果。
-
如果从环境中删除括号会发生什么?我通常只看到
task :terms => :environment。 -
@d_ethier - 我添加了括号以拼命尝试修复它!这最初是在标准生成的 :environment 依赖项中发生的。由于这只是在生产环境下失败,并且 shell 环境变量已成功设置,我猜生产配置中存在导致故障的东西......问题是,我不知道罪魁祸首可能是因为它作为服务器和控制台运行良好。
标签: ruby-on-rails ruby rake rake-task