Как я могу определить переменные окружения локально и не изменять их определения / выдвигать их в heroku? - PullRequest
8 голосов
/ 23 февраля 2012

У меня есть много учетных данных, которые мне нужно обработать, чтобы подключить мое приложение к amazon s3 и другим сервисам.

Я запустил приложение heroku и запустил его с s3, и он отлично работает.Я определил свои учетные данные для доступа к s3 в следующем примере: http://devcenter.heroku.com/articles/config-vars

Однако теперь я хочу иметь доступ к s3 из локальной среды разработки.Очевидно, что конфигурационные переменные, которые я определил на heroku, недоступны на моем локальном хосте.Как я могу определить эти ключи локально?Кроме того, я, в частности, ищу решение, которое является безопасным (например, если я определяю свои ключи в виде обычного текста в инициализаторе или что-то еще, я не хочу, чтобы этот файл помещался в heroku).

Для справки, вот что я добавляю в свою модель, чтобы запустить скрепку с s3

 has_attached_file :photo,
:storage => :s3,
:bucket => 'bucket_name',
:s3_credentials => {
  :access_key_id => ENV['S3_KEY'],
  :secret_access_key => ENV['S3_SECRET']
}

Ответы [ 3 ]

10 голосов
/ 23 февраля 2012

Лучшим местом для определения таких вещей, как это, если вы не хотите, чтобы они делились, вероятно, является инициализатор.

# config/initializers/s3_constants.rb


if Rails.env.development?
  S3_KEY = "mys3key"
  S3_SECRET = "mys3secret"
end

Убедитесь, что этот файл добавлен в .gitignore, поэтому он не будет перемещенвместе с остальной частью вашего репозитория.

Реально говоря, константы, которые различаются в зависимости от среды, должны действительно находиться в файле для этой среды (скажем, здесь development.rb) ... но эти файлы должнытакже действительно будет добавлен в вашу систему контроля версий, и если вы определенно хотите исключить эти данные из git, то лучшим файлом, вероятно, будет отдельный файл, который вы не делаете.

2 голосов
/ 23 февраля 2012

Просто определите переменные среды в вашем файле .bash_profile, как и любую другую переменную среды.Возможно, оставьте комментарий, чтобы разграничить раздел как переменные среды, специфичные для Rails.

#~/.bash_profile
# Rails constants
S3_KEY="blady"
S3_SECRET="bladybloo123"

Также, возможно, вы захотите изменить имя на что-то более конкретное, чтобы можно было определить несколько соединений s3..

0 голосов
/ 24 февраля 2012

heroku предоставляет конфигурацию heroku: добавьте, и вы предоставите KEY = значение. см. документацию config vars

...