当前位置:  开发笔记 > 后端 > 正文

我安装了一个gem,但要求'gemname'不起作用.为什么?

如何解决《我安装了一个gem,但要求'gemname'不起作用.为什么?》经验,为你挑选了4个好方法。

我真正问的问题是为什么要求不采用宝石的名称.而且,如果没有,那么最简单的方法就是找到秘密咒语来要求该死的东西!?

作为一个例子,如果我已经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'对你不起作用,那么这个建议是有限的帮助:)



1> Atiaxi..:

我的系统似乎也不知道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'对你不起作用,那么这个建议是有限的帮助:)



2> Laurie Young..:

您需要包含的文件没有标准.但是,您可以遵循一些常用的惯例,尝试并使用:

通常,文件名称与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目录找到它,您可能需要阅读这些文件并希望有一条注释说明该做什么



3> Kyle Burton..:

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>



4> lee penkman..:

还有rails人们应该记得在安装gem之后重启rails服务器

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有