我安装了宝石,但需要“gemname”不起作用。 为什么?(I have a gem insta

2019-07-03 16:31发布

这个问题我真的问的是,为什么需要不带宝石的名称。 此外,在它没有的情况下,什么是寻找秘密咒语,要求该死的东西,最简单的办法!?

举个例子,如果我有memcache-client安装的话,我有权要求它使用

require 'rubygems'
require 'memcache'

Answer 1:

有什么需要包含该文件是没有标准的。 但也有一些普遍遵循惯例,你可以可以按照尝试和使用:

  • 通常情况下,文件名为相同的名称作为宝石。 所以require mygem会工作。
  • 通常,该文件是在创业板的lib子目录中唯一的.rb文件,所以,如果你能得到的宝石的名称(也许你正在通过供应商itterating /在预先2.1 Rails项目宝石),那么你可以检查#{gemname}/lib的.RB文件,如果只有一个,它是一个相当不错的选择那就是需要一个

如果所有的作品,那么所有你能做的就是看看宝石的目录(您可以通过运行找到gem environment | grep INSTALLATION | awk '{print $4}'和看在lib目录下,你可能需要阅读文件并希望有一个注释说明做什么



Answer 2:

我的系统也似乎不知道RubyGems的存在 - 除非我告诉它。 该“规定”命令得到由RubyGems的覆盖,所以它可以加载的宝石,但除非你有RubyGems的已经要求它不知道该怎么做。 所以,如果你在写你自己的,你可以这样做:

require 'rubygems'
require 'gem-name-here'

如果你正在运行别人的代码,你可以做到这一点与在命令行:

ruby -r rubygems script.rb

此外,还有一个环境变量的Ruby用它来确定它应该在启动时加载:

export RUBYOPT=rubygems

(从http://www.rubygems.org/read/chapter/3 。环境变量的事情是向我指出的猎户座爱德华兹 )

(如果“要求‘RubyGems的’不为你工作,但是,这个建议是有限的帮助:)



Answer 3:

该要求必须映射到Ruby的路径下的文件。 你可以找出宝石是通过运行“宝石环境”安装(寻找安装目录):

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看到的是红宝石将用于模块搜索路径列表:

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>


Answer 4:

此外轨人们应该记住安装的宝石后重新启动服务器导轨



Answer 5:

您需要包括只有当你使用宝石安装宝石“的rubygems”。 否则,秘密咒语会火起来IRB和尝试不同的组合。 此外,让您包括创业板的安装目录的目录,在LOAD_PATH你可以通过-I选项Ruby解释。 需要注意的是$ LOAD_PATH是一个数组,这意味着你可以从你的脚本中,将其添加目录。



Answer 6:

这个问题我真的问的是,为什么需要不带宝石的名称。

安装宝石获取文件到您的系统。 它不会作出什么这些文件将被称为索赔。
正如劳里指出,有几个约定,他们是如何命名的,但没有什么强制执行这就是,很多创业板的作者很遗憾没有坚持给他们。

此外,在它没有的情况下,什么是寻找秘密咒语,要求该死的东西,最简单的办法!?

阅读你的宝石文档?
我觉得google搜索rdoc gemname通常会发现你的宝石官方rdocs ,通常告诉你如何使用它。

内存缓存也许不是最好的例子,因为他们认为你会使用它的轨道,和“需要”将已经为你做了,但我看到大多数其他的有实例显示正确的“需要”咒语



Answer 7:

我只是遇到的一个问题是,实际建成的宝石不包括所有的,它应该有文件。

有问题files是,有在中gemspec语法错误,但在生成过程中被抛出任何错误。

万一别人在这里添加此运行到同样的问题。



Answer 8:

我也有这个问题,因为在安装OS X Lion中,发现即使我跑到下面的代码我仍然会得到警告消息。 require 'rubygems' require 'nokogiri'

我想在这里和在网络上发布的解决方案的负荷,但最终我的工作它的解决方案是简单地按照指示在http://martinisoftware.com/2009/07/31/nokogiri-on-leopard.html重新安装的libxml和来自的libxslt源,但要确保我安装的libxml的版本匹配的,是由引入nokogiri预期的一个。

有一次,我这样做了,警告就走了。



Answer 9:

因为我使用RVM,并试图使用Ruby的版本错误我有这个问题。 有问题的宝石需要1.9.2和我设置2.0.0作为我默认! 也许一个愚蠢的错误,但一个别人到达此页面上可能会取得。



Answer 10:

手表宝石的来源和检查lib目录。 如果没有rb文件,那么你必须指向宝石主要rb在子目录中的文件:

require 'dir/subdir/file'

对于/lib/dir/subdir/file.rb



文章来源: I have a gem installed but require 'gemname' does not work. Why?
标签: ruby rubygems