【问题标题】:private method `include' called for ActionDispatch::Assertions:Module (NoMethodError)为 ActionDispatch::Assertions:Module (NoMethodError) 调用私有方法“include”
【发布时间】:2020-05-16 00:10:03
【问题描述】:

我尝试运行旧的 Rails 应用程序,但在访问主页时出现此错误: 我正在使用 ruby​​ 2.0.0p648。

private method `include' called for ActionDispatch::Assertions:Module (NoMethodError)
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/turbolinks-5.2.1/lib/turbolinks.rb:25:in `block (2 levels) in <class:Engine>'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/activesupport-4.2.11.1/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/activesupport-4.2.11.1/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/activesupport-4.2.11.1/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/activesupport-4.2.11.1/lib/active_support/lazy_load_hooks.rb:44:in `each'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/activesupport-4.2.11.1/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/actionpack-4.2.11.1/lib/action_controller/base.rb:266:in `<class:Base>'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/actionpack-4.2.11.1/lib/action_controller/base.rb:164:in `<module:ActionController>'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/actionpack-4.2.11.1/lib/action_controller/base.rb:5:in `<top (required)>'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/static.rb:69:in `ext'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/static.rb:27:in `match?'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/static.rb:114:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/rack-1.6.13/lib/rack/sendfile.rb:113:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/railties-4.2.11.1/lib/rails/engine.rb:518:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/railties-4.2.11.1/lib/rails/application.rb:165:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/rack-1.6.13/lib/rack/content_length.rb:15:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/puma-3.11.4/lib/puma/configuration.rb:225:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/puma-3.11.4/lib/puma/server.rb:632:in `handle_request'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/puma-3.11.4/lib/puma/server.rb:446:in `process_client'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/puma-3.11.4/lib/puma/server.rb:306:in `block in run'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/puma-3.11.4/lib/puma/thread_pool.rb:120:in `call'
/home/armano/.rbenv/versions/2.0.0-p648/lib/ruby/gems/2.0.0/gems/puma-3.11.4/lib/puma/thread_pool.rb:120:in `block in spawn_thread'

这是我的 Gemfile:

source 'https://rubygems.org'

gem 'rails', '~> 4.0'
gem 'sqlite3', '~> 4.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'

# Use jquery as the JavaScript library
gem 'jquery-rails'
gem 'turbolinks'

gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc

group :development, :test do
  gem 'byebug'
end

group :development do
  gem 'web-console', '~> 2.0'
  gem 'spring'
end

gem 'puma', '~> 3.11'

这里有人遇到过这个错误吗?你怎么修好它的?谢谢

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

Ruby on Rails 4.0 版在mid 2013 and end of 2014 之间是最新的。在那段时间里,turbolinks 的版本是in the 1.3-2.5 range

我会将 turbolinks 降级到最新的 1.x 版本

# in the Gemfile
gem 'turbolinks', '~> 1.3'

运行

bundle install

然后再试一次。

【讨论】:

    【解决方案2】:

    对于大多数 gem,您已经在 Gemfile 中指定了一个版本,但没有为 turbolinks 指定一个版本。如果您也没有 Gemfile.lock,这会使该捆绑包安装 RubyGems 中可用的最后一个版本,目前是 5.2.1(根据错误消息,这是您正在使用的版本)。我假设当前版本的 turbolinks 不适用于 Ruby 2.0,因为它真的很旧,甚至不再维护。所以,我建议您使用与上次运行时相同的 turboliinks 版本。如果你不知道我会用旧版本尝试哪一个。查看版本列表:https://rubygems.org/gems/turbolinks/versions

    或者,您可以将 Ruby 更新到较新的版本。但我会逐步这样做,因为这可能会破坏其他事情。无论如何,您可能想要更新 Ruby,正如我已经提到的那样,它是一个不接收安全更新的旧版本。

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多