RuntimeError:无法修改冻结数组(Rollbar,Rails 5.1升级)
升级到rails 5后无法使用rspec和rollbar。
- 创建一个Rails 4应用程序
- 升级gemfile以使用rails 5
- 尝试添加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