2012-07-16 166 views
4

当我尝试在命令行上图书馆,我收到LoadError消息红宝石命令行LoadError

$ ruby -v 
ruby 1.8.7 (2012-06-29 patchlevel 370) 

$ gem list | grep coderay_bash 
coderay_bash (1.0.2) 

$ ruby -rcoderay_bash /bin/coderay -v 
ruby: no such file to load -- coderay_bash (LoadError) 

$ ruby -rubygems -rcoderay_bash /bin/coderay -v 
ruby: no such file to load -- coderay_bash (LoadError) 

它看起来与红宝石1.9.2

$ ruby -v 
ruby 1.9.2p290 (2011-07-09) 

$ ruby -rcoderay_bash /bin/coderay -v 
CodeRay 1.0.7 
+0

您需要'-rubygems',而不是'-rubygems'。 – Linuxios 2012-07-16 01:21:42

+1

@Linuxios:错了。 RubyGems包含一个'ubygems.rb'文件,以便启用这个不错的技巧。 – 2012-07-16 01:25:48

+0

@JörgWMittag:真的吗?凉! – Linuxios 2012-07-16 01:26:23

回答

2

工作在Ruby 1.8,你需要的任何东西require与RubyGems一起安装,直到你require 'rubygems'才能被访问。 1.9取消了这个要求。

您有几种选择此:

  • 只要把require 'rubygems'在你的文件的顶部。这对于1.9来说是无害的,因为它在代码中,并且没有人使用你的应用程序必须记住任何东西
  • 将您的shebang行更改为#!/usr/bin/env ruby -rubygems这告诉Ruby解释器需要rubygems,但允许用户避免这通过发送文件到ruby直接,如果他们由于某些原因被RubyGems冒犯了
  • 总是运行ruby并使用-rubygems,例如ruby -rubygems my_app.rb这对代码中的RubyGems没有依赖关系,并且可以工作,但是您必须记得每次都这样做,这有点痛苦。