Я пытался настроить GitHub-действия с Rails, однако я столкнулся с проблемой с RAILS_MASTER_KEY
(мое предположение).
Это сообщение об ошибке, которое я получаю на последнем шаге # Build and run tests
:
rails aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
/home/runner/work/my-project/my-project/config/environment.rb:5:in `<main>'
/home/runner/work/my-project/my-project/bin/rails:9:in `<top (required)>'
/home/runner/work/my-project/my-project/bin/spring:15:in `require'
/home/runner/work/my-project/my-project/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
ArgumentError: key must be 16 bytes
.github/workflows/main.yml
:
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
db:
image: postgres:11
env:
POSTGRES_PASSWORD: xxxxxx
ports: ['5432:5432']
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
# Download a copy of the code in the repository before running CI tests
- name: Checkout repository
uses: actions/checkout@v2
# Setup Ruby
- name: Setup Ruby
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6.6
# NPM install
- name: NPM install with caching
uses: bahmutov/npm-install@v1.1.0
# with:
# cmd: install
# Build and run tests
- name: Build and run tests
env:
DATABASE_URL: postgres://postgres:@localhost:5432/test
RAILS_ENV: test
RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
run: |
sudo apt-get -yqq install libpq-dev
gem install bundler
bundle install --jobs 4 --retry 3
bundle exec rails db:prepare
bundle exec rails test
Я предполагаю, что это делать с моей переменной RAILS_MASTER_KEY.
Я проверил ключ, который я сохранил в переменных ENV моего проекта, и он оказался размером 32 байта. Я не уверен, как лучше поступить, и не решаюсь удалить ключ, опасаясь, что сломаю другие части приложения. В моей книге было бы гораздо предпочтительнее задать для ключа возможность быть легальным с 32 байтами - просто я не знаю, как и где ...
Есть мысли о том, как решить эту проблему?