Локальный запуск сервера rails в рабочей среде (ошибка InvalidMessage) - PullRequest
0 голосов
/ 30 апреля 2018

Я использую Ruby 2.5.1 и Rails 5.2.0. Я запустил rails s -e production, и он выдает эту ошибку:

/home/roy/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/message_encryptor.rb:206:in `rescue in_decrypt': ActiveSupport::MessageEncryptor::InvalidMessage
(ActiveSupport::MessageEncryptor::InvalidMessage)

Как мне сделать это правильно?


EDIT: Та же самая ошибка появляется всякий раз, когда я пытаюсь отредактировать файл учетных данных, используя

EDITOR="nano --wait" bin/rails credentials:edit

Также я понял, что я еще не создал производственную базу данных, поэтому я попробовал это, используя

RAILS_ENV=production bundle exec rails db:reset

(я знаю, db: сброс немного избыточен, но он должен работать, пытаясь создать, перенести и заполнить сервер)

К сожалению, я получаю такую ​​же ошибку (InvalidMessage error)

Unsupported rails environment for compass
rake aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
/home/roy/apps/myappname/config/environment.rb:5:in `<main>'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'

Caused by:
OpenSSL::Cipher::CipherError: 
/home/roy/apps/myappname/config/environment.rb:5:in `<main>'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => db:create => db:load_config => environment

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Похоже, ваше решение удалить master.key и credentials.yml.enc означает, что вы используете Rails 5.2. Эта настройка изменилась с аналогичного зашифрованного secrets.yml.enc файла, используемого в Rails 5.1.

Цель состоит в том, чтобы разрешить фиксацию секретных ключей (AWS, Rails 'secrect_key_base) в хранилище кода проекта. Обычно они устанавливаются с помощью переменных ENV. Теперь соавторам нужно только поделиться master.key, сгенерированным для расшифровки, изменения или чтения содержимого credentials.yml.enc.

Когда вы удалили оба файла master.key и credentials.yml.enc, рельсы создали новую пару, теперь вы смогли расшифровать credentials.yml.enc, и этот файл был инициализирован с новым значением Rails secret_key_base, необходимым для избежания ActiveSupport::MessageEncryptor::InvalidMessage. Если вы отследите источник этого сообщения, скорее всего, оно ссылается на базу секретных ключей учетных данных Rails: Rails.application.credentials.secret_key_base.

Это хорошие описания по теме:
https://medium.com/cedarcode/rails-5-2-credentials-9b3324851336 https://www.engineyard.com/blog/rails-encrypted-credentials-on-rails-5.2

0 голосов
/ 01 мая 2018

Хорошо, наконец-то все заработало.

Я просто удалил свои master.key и credentials.yml.enc файлы и затем запустил

bin/rails credentials:edit

Который создал новые файлы. После этого все работало нормально.

Хотя я не очень понимаю, почему это работает. Кто-нибудь может дать хорошее объяснение этому?

...