Я провел последние пару дней, чтобы получить redis/resque и запустить для моего проекта. У меня есть код в моем инициализаторе, который сообщает Resque URL redis для использования; этот 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', чтобы убедиться, что они правильно загружены в оболочку, и я могу подтвердить правильность определения REDISTOGO_URL. – staxim