Как использовать переменную среды Rails в скрипте развертывания Capistrano? - PullRequest
5 голосов
/ 26 ноября 2009

Если у меня есть константа в моей среде Rails, например, ...

SOME_CONSTANT = 3

Возможно ли как-то получить доступ к этому в моем capistrano deploy.rb? Это кажется простым, но я не могу понять, как.

Ответы [ 4 ]

3 голосов
/ 27 ноября 2009

Это сработало:

создал файл config/initializers/my_constant.rb

поместил туда мою константу (rails автоматически загружает туда файлы, чтобы я мог использовать константу в моем приложении)

затем в deploy.rb добавили load 'config/initializers/my_constant', чтобы его можно было использовать и там.

2 голосов
/ 27 ноября 2009

Вы должны получить к нему доступ через хеш ENV [] (это Ruby), вот пример использования переменной окружения TERM.

puts "Your Terminal is #{ENV['TERM']}"

Если вам нужна константа ruby, из вашей среды rails вы должны загрузить ее:

require 'config/environment'

Помните, что это загрузит всю вашу прикладную среду, вам следует подумать о том, чтобы использовать что-то вроде AppConfig или SimpleConfig (вставьте другой инструмент здесь) для хранения конфигураций, тогда вам нужно только загрузить инструмент, который обрабатывает ваши файлы конфигурации.

1 голос
/ 26 ноября 2009

Почему бы не определить эти константы в файле в lib /, а затем запросить файл как в приложении Rails, так и в Capfile?

0 голосов
/ 27 ноября 2009

Поскольку это значение используется не только приложением rails, я бы, вероятно, сохранил бы такую ​​информацию о конфигурации в независимом от языка формате (yaml, json, ini, xml), который можно легко анализировать различными инструментами, не опасаясь возможных побочных эффектов. .

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