Ruby on rails 运行时错误:can';t修改冻结阵列(Rollbar,Rails 5.1升级)

Ruby 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

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