试图在 gem 中要求 active_support
Posted
技术标签:
【中文标题】试图在 gem 中要求 active_support【英文标题】:trying to require active_support in gem 【发布时间】:2013-09-14 22:55:32 【问题描述】:我有一个 ruby gem,我想在 rails active_support 模块中包含的 gem 中使用 Hash.from_xml 方法。我的 gemspec 中有以下代码:
gem.add_dependency 'active_support', '~> 3.0.0'
但是,当我在本地构建和安装 gem、运行 irb、需要 gem 时,我没有看到包含主动支持的方法?
关于我做错了什么或如何调试有什么建议吗?谢谢!
【问题讨论】:
尝试与require 'active_support/all'
一起使用。或者,如果您只想使用哈希方法,请使用 require 'active_support/core_ext/hash'
。
错误:执行 gem 时 ... (Gem::DependencyError) 无法解析依赖项:sports_data_api 需要 active_support/all (~> 3.0.0)、active_support/all (~> 3.0.0)
【参考方案1】:
你需要require
你需要的方法来自ActiveSupport
;默认情况下不会添加它们。
正如 Yevgeniy 在评论中提到的那样,如果您需要所有东西,或者例如,如果您只想要 Hash
扩展,那么执行此操作的方法是 require 'active_support/all'
,然后使用 require 'active_support/core_ext/hash'
。请注意,这通常不在 gemspec 中,而是在您的 gem 用于设置自身的任何文件中。
也许更好的是 require
所需的 ActiveSupport
文件在需要它们的实际文件中,但这只是个人喜好问题。
【讨论】:
好的,谢谢。为什么当我把它放在上面的gemspec中时它不起作用?当我在文件中需要它而不是 gemspec 时,发生了什么不同的事情?感谢您的帮助! 您的 gemspec 引用了 gems。该 gem 被称为“active_support”。require
引用文件,可能来自 gems。不过,您可能已经能够做到gem "active_support", :require => "active_support/all"
。以上是关于试图在 gem 中要求 active_support的主要内容,如果未能解决你的问题,请参考以下文章
将gem放入gemfile的危险是有人试图安装它不支持gem?
Ruby gems 的问题(坏了?)试图让指南针在 npm 中工作