Этот ответ мне очень помог. Он указывает вам, как настроить файл secrets.yml в процессе производства и как его прочитать из среды:
У меня была та же проблема, и я решил ее, создав среду переменная, подлежащая загрузке, каждый раз, когда я вошел в систему для производства и выполнил мини-руководство по его настройкам:
https://gist.github.com/pablosalgadom/4d75f30517edc6230a67
Я использовал Rails 4.1 с Unicorn v4.8.2, когда я попытался развернуть мой приложение не запускалось должным образом, и в файле unicorn.log я нашел это сообщение об ошибке:
"ошибка приложения: Отсутствует secret_key_base для" производственной "среды, устанавливается это значение в config/secrets.yml(RuntimeError)"
После некоторых исследований я узнал, что Rails 4.1 изменил способ управляйте secret_key, поэтому, если вы читаете файл secrets.yml, расположенный по адресу [exampleRailsProject]/config/secrets.yml вы найдете что-то вроде это:
Не сохраняйте секреты производства в репозитории,
вместо этого читать значения из среды. production: secret_key_base: <% = ENV [ "SECRET_KEY_BASE" ]% > Это означает, что рельсы
рекомендует использовать переменную среды для secret_key_base на вашем рабочем сервере, чтобы решить эту ошибку, вы должны выполните следующие действия, чтобы создать переменную среды для Linux (в моей case Ubuntu) на вашем рабочем сервере:
1.- В терминале вашего производственного сервера выполните следующую команду:
$RAILS_ENV = секция производства rake Это возвращает большую строку с буквы и цифры, скопируйте это (мы будем ссылаться на этот код как GENERATED_CODE).
2.1. Войдите в систему как пользователь root на свой сервер, найдите этот файл и отредактируйте его: $vi/etc/profile
Перейти к нижней части файла ( "SHIFT + G" для капитала G в VI)
Напишите переменную среды с GENERATED_CODE (нажмите клавишу "i" для записи в VI), обязательно в новой строке в конце файла:
export SECRET_KEY_BASE = GENERATED_CODE Сохраните изменения и закройте файл (мы нажимаем клавишу "ESC", а затем записываем клавиши ": x" и "ENTER" для сохранения и выход в VI)
2.2 Но если вы входите в систему как обычный пользователь, позвоните ему example_user для этого метода, вам нужно будет найти один из этих других файлов:
$vi ~/.bash_profile $vi ~/.bash_login $vi ~/.profile Эти файлы в порядке важности, это означает, что если у вас есть первый файл, то вам не нужно будет писать в других. Итак, если вы нашли это 2 файла в вашем каталоге "~/.bash_profile" и "~/.profile" вам только нужно будет записать в первом "~/.bash_profile", потому что Linux будет читать только этот, а другой будет проигнорирован.
Затем мы перейдем к нижней части файла ( "SHIFT + G" для капитала G в VI)
И мы напишем нашу переменную среды с нашим GENERATED_CODE (Нажмите клавишу "i", чтобы писать в VI), обязательно в новой строке в конце файла:
export SECRET_KEY_BASE = GENERATED_CODE Написав код, сохраните изменения и закрыть файл (мы нажимаем клавишу "ESC", а затем записываем ": x" и "ENTER" для сохранения и выхода в VI)
3.- Вы можете проверить, что наша переменная среды правильно установлена в Linux с помощью этой команды:
$printenv | grep SECRET_KEY_BASE или с помощью:
$echo $SECRET_KEY_BASE Когда вы выполняете эту команду, если все прошло нормально, он покажет вам GENERATED_CODE. Наконец, с вся конфигурация, которую вы должны выполнить, проблемы с вашим Rails-приложением с Unicorn или другим.
Когда вы закроете свой терминал и снова войдите в систему сервера, вы будете иметь эту переменную окружения и готовы к использованию он.
И вот оно! Я надеюсь, что этот мини-справочник поможет вам решить эту ошибку.
Отказ от ответственности: я не гуру Linux или Rails, поэтому, если вы что-то найдете неправильная или любая ошибка, я буду рад ее исправить!