【问题标题】:in `decode64': undefined method `unpack1' for nil:NilClass (NoMethodError)在“decode64”中:nil 的未定义方法“unpack1”:NilClass (NoMethodError)
【发布时间】:2020-07-22 10:20:17
【问题描述】:

将新的 Rails 应用程序部署到 Heroku 后,出现 NoMethodError。在本地一切正常。我不确定如何以及在何处添加该方法。

我是 ruby​​ 的新手(一般编码),它似乎在 ruby​​-config 中,而不是在这个特定的应用程序中,但我在将其他应用程序部署到 Heroku 时没有任何问题,所以我想知道如何配置本来可以改变的。

我已将 Postgres 和 Redis 添加到 Heroku,并且正在使用 ruby​​ 2.6.3 和 Rails 6.0.0.rc1

错误信息:

/app/vendor/ruby-2.6.3/lib/ruby/2.6.0/base64.rb:59:in `decode64': undefined method `unpack1' for nil:NilClass (NoMethodError)
2019-07-25T08:43:02.237469+00:00 app[web.1]: from /app/app/models/user/connected_account.rb:37:in `<class:ConnectedAccount>'
2019-07-25T08:43:02.237508+00:00 app[web.1]: from /app/app/models/user/connected_account.rb:31:in `<main>'
2019-07-25T08:43:02.237532+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
2019-07-25T08:43:02.237554+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
2019-07-25T08:43:02.237576+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
2019-07-25T08:43:02.237614+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2019-07-25T08:43:02.237651+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
2019-07-25T08:43:02.237674+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.1.6/lib/zeitwerk/kernel.rb:16:in `require'
2019-07-25T08:43:02.237696+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0.rc1/lib/active_support/dependencies.rb:302:in `block in require'
2019-07-25T08:43:02.237720+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0.rc1/lib/active_support/dependencies.rb:268:in `load_dependency'

【问题讨论】:

  • 请发布完整的堆栈跟踪。

标签: ruby-on-rails ruby


【解决方案1】:

如果您调用Base64.decode64(nil),则会发生错误。然而,该方法在这里严格要求 String 对象。

您可能会使用一些变量调用该方法,该变量通常应该是一个字符串,但由于某种原因当前是nil。检查您的完整堆栈跟踪和相关数据以将传递的数据修复为字符串。

【讨论】:

    【解决方案2】:

    您的环境中可能缺少RAILS_MASTER_KEY

    从您的堆栈跟踪中,错误是在/app/app/models/user/connected_account.rb:37 生成的:

      attr_encrypted :access_token, key: Base64.decode64(Rails.application.credentials.access_token_encryption_key)
    

    对于您的生产环境,您可以通过运行找到密钥:

    cat config/credentials/production.key
    

    【讨论】:

    • 确实如此。它通过设置heroku config:set RAILS_MASTER_KEY=&lt;your-master-key&gt; 起作用
    【解决方案3】:

    因为这似乎是针对 Jumpstart 用户,here's the relevant solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多