Ruby on Rails: как мне указать среду скрипта бегуна - PullRequest
11 голосов
/ 17 апреля 2009

Я использую скрипт оболочки для запуска некоторых скриптов бегуна в моем приложении Ruby on Rails. Мне нужно запустить его в производственной базе данных, но следующее:

#!/bin/bash
/usr/bin/ruby RAILS_ENV=production ../script/runner ../lib/tasks.rb 

выдает ошибку:

/usr/bin/ruby: No such file or directory -- RAILS_ENV=production (LoadError)

Я попытался заставить его в config / environment.rb

ENV['RAILS_ENV'] ||= 'production'

или даже

ENV['RAILS_ENV'] = 'production'

но даже при этом он все еще работает в среде разработки.

Обновление: я могу заставить скрипты подключаться к нужной базе данных, отредактировав файл config / database.yml, но мне интересно, как это правильно сделать.

Ответы [ 5 ]

25 голосов
/ 26 апреля 2009

Помощь в командной строке для скрипта / бегуна дает вам ваш ответ.

script/runner -e production Model.method
5 голосов
/ 26 апреля 2009

Если вы переделаете свой скрипт так:

#!/bin/bash
RAILS_ENV=production
/usr/bin/ruby ../script/runner ../lib/tasks.rb

... это сделает его неизменным на весь срок действия скрипта. Чтобы он оставался на время сеанса оболочки, измените его на

#!/bin/bash
export RAILS_ENV=production
/usr/bin/ruby ../script/runner ../lib/tasks.rb
5 голосов
/ 17 апреля 2009

Если это ваша команда, порядок ваших аргументов - ваша самая большая проблема.

/usr/bin/ruby RAILS_ENV=production ../script/runner ../lib/tasks.rb

отличается от.

/usr/bin/ruby ../script/runner ../lib/tasks.rb RAILS_ENV=production

Второй пример ищет файл, первый устанавливает переменную времени выполнения, а ruby ​​интерпретирует ее как файл, который вы хотите запустить.

1 голос
/ 26 апреля 2009

Вы можете установить переменную окружения следующим образом:

RAILS_ENV=production /usr/bin/ruby ../script/runner ../lib/tasks.rb
0 голосов
/ 15 октября 2014
RAILS_ENV=production script/rails runner 'user = User.find(:first, :conditions => {:admin => true}) ; user.password, user.password_confirmation = "mypasswd"; user.save!'

у меня сработало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...