【发布时间】:2026-01-19 02:50:02
【问题描述】:
过去几天我一直在为我的项目启动并运行 redis/resque。我的初始化程序中有一些代码告诉 Resque 要使用的 redis 的 URL;此 URL 存储在环境变量中。初始化代码很简单:
Resque.redis = Redis.new(url: "#{ENV['REDISTOGO_URL']}")
现在,当我运行 rails server 时,这段代码运行良好。当我使用工头 (foreman start) 启动服务器时,它也运行良好。但是,当我尝试运行控制台时,它会出现以下错误:gems/redis-3.2.1/lib/redis/client.rb:405:in '_parse_options': invalid uri scheme '' (ArgumentError)。无论我尝试自行运行控制台 (rails console) 还是与工头 (foreman run rails console) 一起运行控制台,都会出现此错误。
通过排除过程,我确定错误是由上面的 Resque 初始化行引起的。当我将其注释掉时,控制台启动时没有任何问题。真正令人困惑的是,当我现在在工作控制台中执行该行时,它运行良好!经过一番摸索,似乎我的环境变量在初始化代码之前没有加载。
这是一个奇怪的问题。非常感谢任何帮助!
【问题讨论】:
-
你是如何设置环境变量的?
-
哪个特定的 Rails 4 版本? IIRC
before_configuration回调发生了变化。也许尝试备份一个版本(就像我猜你正在使用 4.2?),看看是否可以解决它,至少是暂时的。 -
我正在从本地项目目录中的文件加载我的环境变量。我在启动控制台之前使用以下命令加载它们:
source variables。我检查了运行printenv以确保它们在 shell 中正确加载,并且我可以确认 REDISTOGO_URL 已正确定义。
标签: ruby-on-rails ruby-on-rails-4