Github 操作和 RAILS_MASTER_KEY

Dom*_*cke 5 ruby-on-rails environment-variables github-actions

我一直在尝试使用 Rails 设置 GitHub 操作,但是我遇到了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
Run Code Online (Sandbox Code Playgroud)

.github/workflows/main.yml

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
Run Code Online (Sandbox Code Playgroud)

我推断这与我的 RAILS_MASTER_KEY 变量有关。

我检查了存储在项目 ENV 变量中的密钥,它恰好是 32 个字节。我不确定如何最好地进行,并且我对删除密钥犹豫不决,担心我会破坏应用程序的其他部分。在我的书中,将密钥的选项设置为合法的 32 个字节会更可取——只是我不知道如何以及在哪里......

关于如何解决这个问题的任何想法?

cdm*_*dmo 13

@Ruslan Vaeev 给出了答案的第一部分 - 将主密钥值添加到 GitHub 存储库 Secret。接下来,在您的工作流程 yml 文件中使用该秘密,例如${{ secrets.RAILS_MASTER_KEY }}

env:
  RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} 
Run Code Online (Sandbox Code Playgroud)


Dan*_*llo 4

我遇到了同样的问题,并通过为我的测试环境创建凭据找到了解决方案。

EDITOR=vim rails credentials:edit --environment --test

您可能需要将测试密钥文件上传到存储库,以便可以解密凭据文件。请注意仅维护测试信息。

我在这里找到了解释:https://blog.saeloun.com/2019/10/10/rails-6-adds-support-for-multi-environment-credentials.html

我在这里上传了我的配置:https ://tello.io/ruby-rails-github-actions-mysql