Ruby on rails Rails 5.1:“;未知firstpos:NilClass";-发布重新加载应用程序

Ruby on rails Rails 5.1:“;未知firstpos:NilClass";-发布重新加载应用程序,ruby-on-rails,ruby-on-rails-5.1,actiondispatch,Ruby On Rails,Ruby On Rails 5.1,Actiondispatch,在从Rails 5.0升级到5.1之后,每当应用程序重新加载时,我都会遇到这个错误,可能是由于Rails服务器期间的代码更改,或者如果我调用reload从控制台 I just faced exactly the same problem. I sovled it by setting: config/environments/development.rb from: # Do not eager load code on boot. config.eager_load = true 我刚

在从Rails 5.0升级到5.1之后,每当应用程序重新加载时,我都会遇到这个错误,可能是由于
Rails服务器期间的代码更改,或者如果我调用
reload从控制台

I just faced exactly the same problem. I sovled it by setting:

config/environments/development.rb

from:

# Do not eager load code on boot.
config.eager_load = true

我刚刚遇到了完全相同的问题。我通过设置:

config/environments/development.rb

发件人:

致:

希望这有帮助!
干杯,尼克。

好像是春季绞刑什么的。只要运行
弹簧止动块
,它就会消失。或者,您可以在不使用弹簧的情况下启动rails控制台,如下所示:


DISABLE\u SPRING=true rails c

在生产环境和测试环境中(如果您不使用SPRING)不会出现此错误。 因为这个bug“ArgumentError:unknown firstpos:NilClass”是您在尝试重新加载一些类时遇到的

在生产和测试环境中,所有东西都在缓存中,所以您的所有东西都将被缓存,并且不会发生错误

不幸的是(目前)对于开发环境,我也只找到了这个解决方案

spring stop
spring binstub --all
spring start
rails s

在将Rails从5.1升级到5.2之后,我开始出现这个问题
解决方法是:

# MONKEY PATCH!!!
# https://github.com/rails/rails/pull/32296
#
# Fixes:
# * Development mode deadlocks
# * ArgumentError: unknown firstpos: NilClass
#
# Allows use of "config.eager_load = true"


module ActionDispatch
  module Journey
    class Routes
      def simulator
        @simulator ||= begin
          gtg = GTG::Builder.new(ast).transition_table unless ast.blank?
          GTG::Simulator.new(gtg)
        end
      end
    end
  end
end
找到解决方法

拉请求没有合并,而且可能只在5.2+版本中。添加一个带有一行更改的猴子补丁完全为我解决了这个问题

config/initializers/routes.rb


我更喜欢在dev引导时使用eager_load作为一种静态代码分析器。如果你在任何地方有语法错误,你会立即知道。尽管如此,我还是试过了,不幸的是没有任何效果。我还尝试构建一个新的rails 5.1.1应用程序,无论是否使用spring,这两种方法都如预期的那样工作。。。Hummer为我工作,但仍然必须有另一种方法(或者为什么从5.1开始会有这个选项)禁用Rails的一个关键功能只是为了解决这个问题似乎是非常不可取的,更不用说对某些人来说可能是必要的功能了。我不运行Spring,当它被引入时,我们遇到了一些问题,从那以后就再也没有烦恼过。目前,我刚刚推迟了5.1的升级。5.0运行得很好。对mecan没有帮助。您可以尝试此链接以获取记录:32296已关闭以支持,并且该漏洞已确认在5.2.0中仍然存在。这是唯一对我有效的方法。我用(旧的gem,仍然有效)
gem来包装我的。补丁(“rails”,“5.2.0”)可以…结束
,所以我不会忘记用
5.2.1
来解决它仍然存在的问题,这对我来说确实有效!不需要猴子补丁,谢谢你!必须看看它是否能持续,但如果能持续,那就太棒了:)这确实修改了我的binstubs,用于
spring、rake、rspec、rails
,但它并没有让bug消失
spring stop
spring binstub --all
spring start
rails s
# MONKEY PATCH!!!
# https://github.com/rails/rails/pull/32296
#
# Fixes:
# * Development mode deadlocks
# * ArgumentError: unknown firstpos: NilClass
#
# Allows use of "config.eager_load = true"


module ActionDispatch
  module Journey
    class Routes
      def simulator
        @simulator ||= begin
          gtg = GTG::Builder.new(ast).transition_table unless ast.blank?
          GTG::Simulator.new(gtg)
        end
      end
    end
  end
end