Я действительно понял ваш вопрос, используя ENV.
У меня было три разных секретных значения, которые я не хотел делать доступными.Это, конечно же, секретный токен приложения, а также ключ и секретный ключ Twitter.В моем секретном инициализаторе токенов:
KinTwit::Application.config.secret_token = ENV['SECRET_TOKEN']
Twitter.consumer_key = ENV['CONSUMER_KEY']
Twitter.consumer_secret = ENV['CONSUMER_SECRET']
Я размещаю свой проект на Heroku, поэтому я добавил их в качестве переменных конфигурации в Heroku.
[03:07:48] [william@enterprise ~/dev/rwc/kintwit]$ heroku config:add CONSUMER_KEY=ub3rs3cr3tk3y
Adding config vars and restarting app... done, v7
CONSUMER_KEY => ub3rs3cr3tk3y
[03:08:40] [william@enterprise ~/dev/rwc/kintwit]$ heroku config:add CONSUMER_SECRET=ub3rs3cr3tk3y
Adding config vars and restarting app... done, v8
CONSUMER_SECRET => ub3rs3cr3tk3y
[03:08:57] [william@enterprise ~/dev/rwc/kintwit]$ heroku config:add SECRET_TOKEN=ub3rs3cr3tk3y
Adding config vars and restarting app... done, v9
SECRET_TOKEN => ub3rs3cr3tk3y
Теперь значения готовымой следующий толчок.Но что, если вы не используете Heroku?Я, очевидно, не эксперт по каждому развертыванию рельсов (да, даже не профессионал в Heroku), но примером этого может служить db: migrate для тестирования.
$ RAILS_ENV=test rake db:migrate
Значение KEY =pair перед командой устанавливает переменную среды, поэтому при выполнении этой команды echo ENV['RAILS_ENV']
выведет test
.Так что, как бы вы это ни делали, это устанавливается в вашей среде.Но переменных окружения нет в вашем коде, так что вот в чем дело.