RuntimeError:无法修改冻结数组(Rollbar,Rails 5.1升级)

升级到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 `' # ./spec/rails_helper.rb:5:in `' ... No examples found. 

在大多数情况下,这个错误是其他东西的红色鲱鱼。

遇到它时,请不要让recur不知道can't modify frozen Array错误消息,而是检查运行规范时出现的第一个错误。

例如:

失败/错误:validation:唯一性,如果:’should_be_unique?’

ArgumentError:传递要评估的字符串:if和:除非不支持条件选项。 传递一个实例方法或lambda,proc或块的符号。

调试这个并不容易,但解决方案很简单:在config/application.rb app类定义周围添加一个Module (您选择的“命名空间”)。

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

而不是

更改:

 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 
Interesting Posts