4

升级到 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.
4

3 回答 3

24

在大多数情况下,这个错误是对其他事情的转移注意力。

遇到它时,不要对反复出现的can't modify frozen Array错误消息感到不知所措,而是检查运行规范时出现的第一个错误。

例如:

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

ArgumentError:传递要在 :if 和 :unless 条件选项中评估的字符串。而是为实例方法或 lambda、proc 或块传递符号。

于 2018-05-16T13:00:04.797 回答
3

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

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

您应该能够找到根本案例。

就我而言,我没有更新模型.env所需的局部变量User

希望能帮助到你

于 2020-05-20T05:27:30.013 回答
-3

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

. _ config/application.rb_

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

<MyTestAPP::Application ...>代替<Application ...>

改变:

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-04-05T19:27:10.090 回答