secret_token.rb файлу включає довгий рандомізований рядок, який використовується для перевірки цілісності підписаних файлів cookie (наприклад, сеансів користувача, коли люди входять у ваш веб-додаток).
Документація говорить:
Скористайтеся наявною базою secret_key_base з secret_token.rbініціалізатора, щоб встановити змінну середовища SECRET_KEY_BASE для того, хто з користувачів запускає програму Rails у виробничому режимі. Крім того, ви можете просто скопіювати наявний секретний_ключ_бази зsecret_token.rb ініціалізатора в secrets.yml у розділі виробництва, замінивши <%= ENV["SECRET_KEY_BASE"] %>.
Оскільки це важливий файл, і ви не можете помістити його в .gitignore, вважається гарною практикою використовувати змінну env для зберігання secret_key_baseзначення:
створити .env або .powenvфайл і зберегти його як:
export SECRET_TOKEN="9489b3eee4eccf317ed77407553e8adc97baca7c74dc7ee33cd93e4c8b69477eea66eaedeb18af0be2679887c7c69c0a28c0fded0a71ea472a8c4laalal19cb"
А потім в config/initializers/secret_token.rb
YourAppName::Application.config.secret_key_base = if Rails.env.development? or Rails.env.test?
('a' * 30)
else
ENV['SECRET_TOKEN']
end
Ця стаття (трохи стара і) довга, але справді повна корисної інформації по темі.
ОНОВЛЕННЯ 04.05.15
Починаючи з Rails 4.2, secret_token.rbфайлу більше немає . За новою конвенцією існуєconfig/secrets.yml файл, призначений для зберігання секретів програми.
Почитайте як оновити існуючу програму до 4.2.x відповідно до інновацій.
Технічно мета secrect_key_base- бути секретним входом для програмиkey_generator методу програми (перевірка Rails.application.key_generator).
Додаток key_generator, а отжеsecret_key_base , використовуються трьома основними функціями в рамках Rails:
- Виведення ключів для зашифрованих файлів cookie, до яких доступ
cookies.encrypted .
- Виведення ключа для файлів cookie з підписом HMAC, до яких можна отримати доступ
cookies.signed .
- Виведення ключів для всіх названих програм
message_verifier екземплярів програми.
Перегляньте більше про кожен із трьох у статті @michaeljcoyne .
secret_key_baseяк і раніше використовується, але зберігаєтьсяconfig/credentials.yml.encзамість. Цей файл зашифровано. Ви можете знайти більше інформації про нову систему облікових даних тут або запуститиrails credentials:help.