【问题标题】:Ruby/Rails - delayed_job Rails.env is "development" when I'm in productionRuby/Rails - 当我在生产中时,delayed_job Rails.env 是“开发”
【发布时间】:2012-01-27 05:45:23
【问题描述】:

我正在运行 Ruby 1.9.2/Rails 3.0.9。

我正在使用collective idea fork of delayed_job

我开始延迟工作是这样的: RAILS_ENV=production script/delayed_job start

它从我的生产数据库中提取作业。

但是,在处理它们时,Rails.env 被评估为“开发”。 我正在上传一些图片(使用回形针),它们将转到我的 CDN 主机上的“开发”目录。

进一步的证据:

如果我在delayed_job 运行的代码中使用if 语句,Rails.env 的计算结果为“development”。

也就是说,

x = 1  
if Rails.env == "production"
  x = 2
end

x 仍然等于 1

x = 1  
if Rails.env == "development"
  x = 2
end

x 现在等于 2。

为什么 Rails.env == “开发”? 我该如何解决?

谢谢。

【问题讨论】:

  • 您的脚本/delayed_job 文件中有什么内容?
  • 我没碰过它:require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))require 'delayed/command'Delayed::Command.new(ARGV).daemonize

标签: ruby-on-rails ruby-on-rails-3 delayed-job


【解决方案1】:

您必须在 Paperclip 配置周围的某处硬编码“开发”。我会做一个完整的源代码搜索,看看是不是这样。

【讨论】:

  • 我不这么认为。回形针路径是通过 :rails_env 变量设置的。我将用另一个例子/更多证据来编辑我的原始帖子。
  • 延迟工作不会只是将“开发”注入您的代码。它显然是在你的代码库中的某个地方硬编码的。小错误会引起巨大的头痛。只需进行完整的源代码搜索,看看是否是这种情况。
  • 大声笑,呃,我在一个方法中有这么漂亮的小代码行:function_call if Rails.env = "development"我现在感到又蠢又生气。感谢您的帮助。
  • 它恰好是我们中最好的。
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 2014-04-16
  • 2015-05-24
  • 2011-11-30
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多