【问题标题】:RuntimeError: can't modify frozen Array (Rollbar, Rails 5.1 upgrade)RuntimeError: can't modify freeze Array (Rollbar, Rails 5.1 upgrade)
【发布时间】:2018-04-05 19:27:10
【问题描述】:

升级到 rails 5 后无法使用 rspec 和 rollbar。

  1. 创建一个 Rails 4 应用程序
  2. 升级 gemfile 以使用 rails 5
  3. 尝试添加 rollbar gem/support

标准配置/environment.rb:

 # Load the Rails application.
require_relative 'application'

# Initialize the Rails application.
Rails.application.initialize!

运行 rspec 时出错:

An error occurred while loading {path to specific spec file}
Failure/Error: require File.expand_path('../../config/environment', __FILE__)

RuntimeError:
  can't modify frozen Array
# ./config/environment.rb:6:in `<top (required)>'
# ./spec/rails_helper.rb:5:in `<top (required)>'
...
No examples found.

【问题讨论】:

    标签: ruby-on-rails rollbar


    【解决方案1】:

    在大多数情况下,该错误是对其他事情的转移。

    当遇到它时,不要被反复出现的can't modify frozen Array 错误消息淹没,而是检查运行规范时出现的第一个错误。

    例如:

    失败/错误:验证:唯一性,如果:'should_be_unique?'

    ArgumentError: 传递要在 :if 和 :unless 中评估的字符串 不支持条件选项。为实例传递符号 方法,或 lambda、proc 或 block。

    【讨论】:

    • 感谢您发布答案。你是怎么发现第一个错误的。我看到了同样的错误,但看不到任何其他错误。
    • 谢谢您,您可能为我节省了几个小时的前台互动时间。
    • 祝福你。 :raised_hands:
    【解决方案2】:

    只是在Maxximo Mussini 的答案之上添加一个提示。

    如果有人在终端上找不到第一个错误,请尝试在一个文件上运行 RSpec,即rspec spec/models/user_spec.rb

    你应该能够找到根案例。

    就我而言,我还没有更新 User 模型所需的本地 .env 变量

    希望对你有帮助

    【讨论】:

    • 这很有帮助,但可能应该是对您所指答案的评论,而不是它自己的答案。
    • 感谢@GregJackson 的评论,但我没有 50 声望来评论 Maximo 的答案。真的很抱歉
    【解决方案3】:

    调试这并不容易,但一种可能的解决方案很简单。这可能是与 Rollbar 的命名冲突,可能是猴子补丁。如果您看到此 RuntimeError 但未使用 Rollbar,请参阅其他答案。

    config/application.rb 中的应用类定义周围添加一个模块(您选择的“命名空间”)。

    该模块不会有太大影响。我能找到的唯一区别是,当打印出您的应用时,它现在会显示为(这就是我们找到修复与新工作应用的方式):

    &lt;MyTestAPP::Application ...&gt; 而不是&lt;Application ...&gt;

    变化:

    class Application < Rails::Application
        # Initialize configuration defaults for originally generated Rails version.
        config.load_defaults 5.1
      end
    

    收件人:

    Module MyTestApp
      class Application < Rails::Application
        # Initialize configuration defaults for originally generated Rails version.
        config.load_defaults 5.1
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2022-12-01
      • 2022-01-02
      • 1970-01-01
      • 2018-04-10
      相关资源
      最近更新 更多