【问题标题】:Rails default key provider error only on productionRails 默认密钥提供程序错误仅在生产中
【发布时间】:2019-09-27 14:26:35
【问题描述】:

我正在尝试在生产环境中运行我的 rails 项目,我已经检查了 .env 文件,在我的开发环境中进行了测试,但是当进入生产环境时,我得到了堆栈跟踪。

/usr/local/rvm/gems/ruby-2.3.7/gems/activesupport-4.1.16/lib/active_support/dependencies.rb:247:in `require': /usr/local/rvm/gems/ruby-2.3.7/gems/aws-sdk-s3-1.30.0/lib/aws-sdk-s3/encryption/default_key_provider.rb:31: invalid multibyte char (UTF-8)
/usr/local/rvm/gems/ruby-2.3.7/gems/aws-sdk-s3-1.30.0/lib/aws-sdk-s3/encryption/default_key_provider.rb:31: syntax error, unexpected end-of-input
        def key�for(materials_description)
                ^ (SyntaxError)

【问题讨论】:

    标签: ruby-on-rails ruby aws-sdk production-environment activesupport


    【解决方案1】:

    看起来您正在直接重写 aws-sdk-s3 gem。不建议这样做。如果您想要该 gem 的自定义行为,您应该分叉它或克隆项目并为此创建一个自定义分支。如果不是这种情况,您也可以将 gem 更新到最新版本。

    话虽如此,错误在于方法名称。看这个:

    def key�for(materials_description)
    

    修复它的最佳方法是删除该行并重新编写如下:

    def key_for(materials_description)
    

    【讨论】:

    • 我并没有尝试重写 gem,实际上我删除了所有 gem 并再次运行 bundle。
    猜你喜欢
    • 2023-03-29
    • 2013-07-28
    • 2010-12-26
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多