我真正问的问题是为什么要求不采用宝石的名称.而且,如果没有,那么最简单的方法就是找到秘密咒语来要求该死的东西!?
作为一个例子,如果我已经memcache-client
安装,那么我必须要求它使用
require 'rubygems'
require 'memcache'
Run Code Online (Sandbox Code Playgroud)
Ati*_*axi 47
我的系统似乎也不知道RubyGems的存在 - 除非我告诉它.'require'命令被RubyGems覆盖,因此它可以加载gems,但除非你已经需要RubyGems,否则它不知道如何做到这一点.所以,如果你自己编写,你可以这样做:
require 'rubygems'
require 'gem-name-here'
Run Code Online (Sandbox Code Playgroud)
如果您正在运行其他人的代码,则可以在命令行上执行以下操作:
ruby -r rubygems script.rb
Run Code Online (Sandbox Code Playgroud)
此外,还有一个环境变量Ruby用于确定它在启动时应该加载的内容:
export RUBYOPT=rubygems
Run Code Online (Sandbox Code Playgroud)
(来自http://www.rubygems.org/read/chapter/3.猎户座爱德华兹向我指出了环境变量的事情)
(如果"require'rubygems'对你不起作用,那么这个建议是有限的帮助:)
Lau*_*ung 38
您需要包含的文件没有标准.但是,您可以遵循一些常用的惯例,尝试并使用:
require mygem
会工作.#{gemname}/lib
. rb文件,如果只有一个,它是一个非常好的赌注,是要求的如果所有这些都有效,那么您所能做的就是查看gem的目录(您可以通过运行gem environment | grep INSTALLATION | awk '{print $4}'
并查看lib目录找到它,您可能需要阅读这些文件并希望有一条注释说明该做什么
Kyl*_*ton 10
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:~$
Run Code Online (Sandbox Code Playgroud)
然后,您可以查找您尝试需要的特定.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>
Run Code Online (Sandbox Code Playgroud)