2012-07-16 164 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沒有依賴關係,並且可以工作,但是您必須記得每次都這樣做,這有點痛苦。