所以我在这里有点假,我正在使用宝石内部的示例,the AMQP gem for ruby here on github,我已经撤回了回购并在其中一个示例文件(this one)中有这样几行:
$LOAD_PATH.unshift File.expand_path("../../../../lib", __FILE__)
require "amqp"
# [...]
加载路径指向this directory。所以我的问题主要是这个,当我安装了gem并且我尝试使用ruby或者甚至在IRB中运行文件时在引用这些lib文件时它不会在gems examples目录之外工作...为什么?即使我require "amqp"
?
非常感谢任何想法。
更新我想知道是否有两个相互矛盾的宝石或库,例如,该库链接到:
https://github.com/ruby-amqp/amqp
我很困惑,因为我不知道这是否与宝石“amqp”相同,我怎么知道,.gemspec
和Gemfile
对我来说并不清楚,它似乎还有其他的东西:
custom_gem "amq-client", :git => "git://github.com/ruby-amqp/amq-client.git", :branch => "master"
custom_gem "amq-protocol", :git => "git://github.com/ruby-amqp/amq-protocol.git", :branch => "master"
在.gemspec
中有:
s.add_dependency "amq-client"
任何帮助,帮助我理解这将是如此棒!
答案 0 :(得分:0)
据推测,它包含了这一行,因此您可以直接从源代码树运行示例文件,而无需安装gem。
如果您已安装gem,并且已加载RubyGems,那么您应该只能说require "amqp"
并且它将是适当的。
请注意,您需要加载RubyGems才能使require "amqp"
加载AMQP gem;您需要在源文件的开头执行require "rubygems"
,或者使用-rubygems
启动Ruby,或者设置RUBYOPT
环境变量export RUBYOPT=rubygems
。有关详细信息,请参阅the RubyGems manual。