试图在 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 中工作

Weechat Ruby 插件 - 尝试要求任何 gem 会导致错误

Ruby:自定义 gem 需要其中的模块“要求”

在 Ruby 中安全地需要 gem

如果彼此依赖,如何要求ruby gem中的文件