Ruby on rails 运行时错误:can';t修改冻结阵列(Rollbar,Rails 5.1升级)
升级到rails 5后无法使用rspec和rollbarRuby on rails 运行时错误:can';t修改冻结阵列(Rollbar,Rails 5.1升级),ruby-on-rails,rollbar,Ruby On Rails,Rollbar,升级到rails 5后无法使用rspec和rollbar 创建Rails 4应用程序 升级gemfile以使用rails 5 尝试添加滚动条gem/support 标准配置/environment.rb: # Load the Rails application. require_relative 'application' # Initialize the Rails application. Rails.application.initialize! 运行rspec时出错: An er
# 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.
加载{特定规范文件的路径}时出错
失败/错误:需要文件。展开\u路径(“../../config/environment”,\u文件\u)
运行时错误:
无法修改冻结数组
#./config/environment.rb:6:in`'
#./spec/rails\u helper.rb:5:in`'
...
没有找到任何例子。
调试这并不容易,但一个可能的解决方案很简单。这可能是与Rollbar的命名冲突,也可能是被修补过的东西。如果您看到这个运行时错误,但没有使用Rollbar,请参阅其他答案
在config/application.rb
中的应用程序类定义周围添加一个模块(“名称空间”由您选择)
这个模块不会有太大影响。我能找到的唯一区别是,当打印出你的应用程序时,它现在将显示为(这就是我们如何找到修复程序和新的工作应用程序):
而不是
更改:
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 5.1
end
类应用程序
致:
模块MyTestApp
类应用程序
在大多数情况下,这个错误是对其他错误的掩饰
当遇到它时,不要被反复出现的无法修改冻结数组错误消息淹没,而是检查运行规范时出现的第一个错误
例如:
失败/错误:验证:唯一性,如果:“应该是唯一的吗?”
ArgumentError:传递要在:if和:除非中计算的字符串
不支持条件选项。传递实例的符号
方法或lambda、proc或block
只需在您的答案上添加一个提示
如果任何人在终端上找不到第一个错误,请尝试在一个文件上运行RSpec,即RSpec spec/models/user_spec.rb
您应该能够找到根案例
在我的例子中,我没有更新用户所需的本地.env
变量
希望对您有所帮助谢谢您发布答案。你是如何发现第一个错误的。我看到了相同的错误,但看不到任何其他错误。谢谢你,你为我节省了可能数小时的桌面交互时间。祝福你:举手:这很有帮助,但可能是对你所指答案的评论,而不是它自己的答案。谢谢@GregJackson的评论,但我没有50%的声誉来评论Maximo的答案。真的很抱歉
Module MyTestApp
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 5.1
end
end