【问题标题】:Can't run rspec when using Rails 5 and acts-as-taggable-on 4使用 Rails 5 时无法运行 rspec 并充当可标记的 4
【发布时间】:2017-08-30 03:04:09
【问题描述】:

版本

  • 红宝石:2.3.3
  • 捆绑器:1.14.6
  • 导轨:5.0.2
  • 充当可标记:4.0.0
  • Rspec:3.5.4

宝石文件

gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
gem 'acts-as-taggable-on', '~> 4.0'

group :development, :test do
  gem 'rspec-rails', '~> 3.5'
end

逻辑

lib/acts_as_taggable_on/generic_parser.rb

class MyParser < ActsAsTaggableOn::GenericParser
  def parse
    ActsAsTaggableOn::TagList.new.tap do |tag_list|
      tag_list.add @tag_list.split(',').map(&:strip).reject(&:empty?)
    end
  end
end

异常

运行rpsec时,出现以下错误:

/Users/user/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'acts-as-taggable-on'. (Bundler::GemRequireError)
Gem Load Error is: uninitialized constant ActsAsTaggableOn::GenericParser

如何解决?

【问题讨论】:

  • 你试过gem update bundlerstackoverflow.com/questions/15060011/…
  • @FabrizioBertoglio 感谢您的评论。我刚才试过gem update bundler。现在 bundler 版本变成了1.15.4,但是运行rspec时出现了同样的错误。
  • 好的,升级到gem 'acts-as-taggable-on', '~&gt; 5.0'gem 'bundler', '~&gt; 1.15', '&gt;= 1.15.4'gem 'rspec', '~&gt; 3.6' 怎么样?抱歉,这确实是一个愚蠢的建议,但是您使用的是rails 5,那么为什么不使用所有内容的最新版本呢?也许这个问题在后来的版本中得到了解决?最新版本请参考rubygems.org
  • @FabrizioBertoglio 您的建议是一种方法。我使用了一个包含ActsAsTaggableOn::GenericParser 的逻辑并将源添加到问题中。现在我正在尝试使用另一种方式来实现相同的结果,然后删除该来源。并且 rspec 有效。也许这就是几个宝石之间的版本问题。非常感谢您的关注。
  • 请提供完整的跟踪信息,而不仅仅是例外情况。

标签: ruby-on-rails ruby testing rspec acts-as-taggable-on


【解决方案1】:

你的文件名不正确,你有

lib/acts_as_taggable_on/generic_parser.rb

如果类是 MyParser,Rails 需要通过文件名映射到该类,文件名应该是 my_parser.rb,因此应该是

lib/acts_as_taggable_on/my_parser.rb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2015-06-10
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多