2015-12-15 157 views
0

我跟着本教程http://guides.rubygems.org/make-your-own-gem想出如何創建紅寶石寶石,但我無法弄清楚如何創建一個可執行文件。我的可執行文件寶石不能正常工作

我原本以爲我在我自己的代碼中犯了一個錯誤,但是用這個教程本身創建的實際gem似乎並沒有像我期望的那樣工作。所以我會以教程本身的實際寶石爲基礎。

如果捆綁從教程的確切寶石(寶石被命名爲hola)爲Rails應用程序,並嘗試使用可執行命令hola,你得到的是錯誤信息:

$ rails hola spanish 
# => Error: Command 'hola' not recognized 

$ ruby hola spanish 
# => ruby: No such file or directory -- hola (LoadError) 

$ hola spanish 
# => -bash: hola: command not found 

即使我嘗試執行命令這種方式似乎不工作:

$ ruby -Ilib ./bin/hola spanish 
# => ruby: No such file or directory -- ./bin/hola (LoadError) 

這似乎執行什麼是當我的手在本教程中重建實際的創業板目錄中,然後鍵入這個問題的唯一時間:

$ ruby -Ilib ./bin/hola spanish 
# => hola mundo 

但是,這是無用的,因爲建立一個可執行的全部意義在於能夠在實際項目中執行它不是寶石目錄(即:有人下載你的寶石,並能夠與單用它可執行關鍵字,如rake routes然後做一些事情)。

我可以從這個官方rubygems.org教程捆綁hola寶石,並用它作爲我期待執行的方式可執行文件,像這樣:

$ hola spanish 
# => hola mundo 

如果這是可能的,怎麼會是它完成了嗎?

+1

你的'.gemspec'文件是什麼樣的? – matt

+0

'bundle exec hola'不起作用? –

+2

您是否嘗試過使用'gem install'安裝內置的gem?看看這些錯誤,似乎gem沒有安裝在系統上,或者它無法在您的gem路徑中找到可執行文件。 –

回答

0

經過大量的研究,我發現,這個問題最終是一個重複:

Building gem, executable not found

,使這項工作的解決方法是編輯在讀.gemspec部分:

s.files = ["lib/hola.rb", "lib/hola/translator.rb"] 

並將其更改爲:

s.files = Dir["{bin,lib}/**/*"] 

現在當我輸入命令它完美的作品,像這樣:

$ hola spanish 
# => hola mundo 

$ hola english 
# => hello world