我真正问的问题是为什么要求不采用宝石的名称.而且,如果没有,那么最简单的方法就是找到秘密咒语来要求该死的东西!?
作为一个例子,如果我已经memcache-client
安装,那么我必须要求它使用
require 'rubygems' require 'memcache'
Atiaxi.. 47
我的系统似乎也不知道RubyGems的存在 - 除非我告诉它.'require'命令被RubyGems覆盖,因此它可以加载gems,但除非你已经需要RubyGems,否则它不知道如何做到这一点.所以,如果你自己编写,你可以这样做:
require 'rubygems' require 'gem-name-here'
如果您正在运行其他人的代码,则可以在命令行上执行以下操作:
ruby -r rubygems script.rb
此外,还有一个环境变量Ruby用于确定它在启动时应该加载的内容:
export RUBYOPT=rubygems
(来自http://www.rubygems.org/read/chapter/3.猎户座爱德华兹向我指出了环境变量的事情)
(如果"require'rubygems'对你不起作用,那么这个建议是有限的帮助:)
我的系统似乎也不知道RubyGems的存在 - 除非我告诉它.'require'命令被RubyGems覆盖,因此它可以加载gems,但除非你已经需要RubyGems,否则它不知道如何做到这一点.所以,如果你自己编写,你可以这样做:
require 'rubygems' require 'gem-name-here'
如果您正在运行其他人的代码,则可以在命令行上执行以下操作:
ruby -r rubygems script.rb
此外,还有一个环境变量Ruby用于确定它在启动时应该加载的内容:
export RUBYOPT=rubygems
(来自http://www.rubygems.org/read/chapter/3.猎户座爱德华兹向我指出了环境变量的事情)
(如果"require'rubygems'对你不起作用,那么这个建议是有限的帮助:)
您需要包含的文件没有标准.但是,您可以遵循一些常用的惯例,尝试并使用:
通常,文件名称与gem名称相同.所以require mygem
会工作.
通常文件是gem的lib子目录中唯一的.rb文件,因此,如果你可以获得gem的名称(也许你正在通过2.1之前的rails项目中的vendor/gems进行itterating),那么你可以检查
#{gemname}/lib
. rb文件,如果只有一个,它是一个非常好的赌注,是要求的
如果所有这些都有效,那么您所能做的就是查看gem的目录(您可以通过运行gem environment | grep INSTALLATION | awk '{print $4}'
并查看lib目录找到它,您可能需要阅读这些文件并希望有一条注释说明该做什么
require必须映射到ruby路径中的文件.您可以通过运行'gem environment'找到宝石的安装位置(查找INSTALLATION DIRECTORY):
kburton@hypothesisf:~$ gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.2.0 - RUBY VERSION: 1.8.7 (2008-08-08 patchlevel 71) [i686-linux] - INSTALLATION DIRECTORY: /usr/local/ruby/lib/ruby/gems/1.8 - RUBY EXECUTABLE: /usr/local/ruby/bin/ruby - EXECUTABLE DIRECTORY: /usr/local/ruby/bin - RUBYGEMS PLATFORMS: - ruby - x86-linux - GEM PATHS: - /usr/local/ruby/lib/ruby/gems/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://gems.rubyforge.org/ kburton@editconf:~$
然后,您可以查找您尝试需要的特定.rb文件.此外,您可以从irb打印$:的内容,以查看ruby将搜索模块的路径列表:
kburton@hypothesis:~$ irb irb(main):001:0> $: => ["/usr/local/ruby/lib/ruby/site_ruby/1.8", "/usr/local/ruby/lib/ruby/site_ruby/1.8/i686-linux", "/usr/local/ruby/lib/ruby/site_ruby", "/usr/local/ruby/lib/ruby/vendor_ruby/1.8", "/usr/local/ruby/lib/ruby/vendor_ruby/1.8/i686-linux", "/usr/local/ruby/lib/ruby/vendor_ruby", "/usr/local/ruby/lib/ruby/1.8", "/usr/local/ruby/lib/ruby/1.8/i686-linux", "."] irb(main):002:0>
还有rails人们应该记得在安装gem之后重启rails服务器