Я пытаюсь найти лучшее решение для хранения секретных ключей (в частности, ключи S3 и разработки — это те, которые я пытаюсь настроить), что позволит моему приложению работать как локально, так и на Heroku. Мое исследование до сих пор (почти целый день на это :()) показывает мне несколько вариантов, однако у меня были проблемы с каждым, которые я описываю ниже:
Вариант 1) Использование предоставленного файла .gitignored rails 4.1 secrets.yml прекрасно подходит для разработки, вы просто используете
Rails.application.secrets._secret_
в учетных данных s3 в своей модели, и все в порядке. Но при отправке в Heroku вам нужноheroku config:set key=value
для каждой переменной, что само по себе хорошо, но тогда вам нужно заменить синтаксисRails.application.secrets...
наENV['key']
, и это делает рельсы, предназначенные secrets.yml и соответствующий хороший синтаксис, непригодными для использования. Единственный способ, которым я вижу, как это работает, - это сENV
, установленным как локально, так и на героку, немного утомительно, и он не будет использовать предназначенный для рельсов файл secrets.yml.Вариант 2) Использование гема «figaro» — это хорошо, поэтому драгоценный камень создает для вас файл application.yml и .gitignores его для вас, а также предоставляет удобную команду rake для массового создания Heroku
ENV
. Но я не понимаю, как вы собираетесь использовать одну и ту же версию приложения как для локальной разработки, так и для рабочей среды heroku без необходимости снова устанавливатьENV
в каждой среде. Хорошо, figaro ускоряет настройкуENV
на героку с помощью команды rake, но все же делает secrets.yml бесполезным и требует установкиENV
для каждого ключа в каждой среде.Вариант 3) Я нашел еще один драгоценный камень;
gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'
, который призван облегчить нашу жизнь. Этот драгоценный камень, похожий на фигаро, обеспечивает рейк-комендацию для массового набора HerokuENV
s. Но я предполагаю, что это по-прежнему оставляет нам одну и ту же проблему набораENV
повсюду. Однако я даже не смог зайти так далеко с этим драгоценным камнем, при попытке использовать его я столкнулся с этим сообщением об ошибке;git://github.com/alexpeattie/heroku_secrets.git (на мастере) еще не проверен. Сначала запустите
bundle install
.
Ни bundle
, ни bundle install
здесь ничего не делают, и поиск по этой проблеме заставил меня попробовать bundle install --deployment
, который вместо того, чтобы идентифицировать и решать проблему, предлагает обходное решение, помещая все мои драгоценные камни в каталог поставщика, а не то, как это настроено. я отменил это изменение.
- Другие варианты) dotenv - не пробовал, foreman - не пробовал, предварительно загружая файл, содержащий vars перед rails.initialize, пробовал, но не понравилось.
После всех сегодняшних поисков, игр, попыток реализовать и повторно реализовать варианты вышеперечисленного и многое другое, я все еще не понимаю, как заставить это приложение работать как в героку, так и в локальной среде разработки достойным образом. Я, конечно, хотел бы добиться этого, используя рельсы secrets.yml, предназначенные для настройки без особых настроек, но я сделаю то, что мне нужно, чтобы это заработало. Я очень новичок в этом деле разработчика, поэтому мне требуется больше времени, чем большинству, чтобы разобраться в вещах, но это действительно поставило меня в тупик, и я твердо держу голову в руках, прося о помощи, пожалуйста, покажи мне свет, о гении программирования.
Вот некоторые другие ссылки, которые я нашел, прочитал и с некоторыми попытался реализовать, если это поможет в этом вопросе:
Справочные страницы конфигурации Heroku: https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application
Тесно связанный вопрос; Как сделать вы управляете секретными ключами и героку с помощью Ruby on Rails 4.1.0beta1?
Статья о различных решениях; http://www.gotealeaf.com/blog/managing-environment-configuration-variables-in-rails
Еще одна статья о различных решениях; http://tammersaleh.com/posts/managing-heroku-environment-variables-for-local-development/
Ошибка "Блок не проверен"; не извлечен... установка пакета НЕ исправляет помогите!
Тем не менее, несмотря на все это обсуждение, я не могу найти способ заставить это работать как в локальной среде разработки, так и в рабочей среде heroku без ручной установки ENV
s. Есть ли способ, и если да, пожалуйста, просветите меня.