2009-09-24 99 views
1

我最近一直在學習Ruby,而且還沒有進入學習Rake的骯髒的空白。我一直在玩NetBeans,我用一個只打印「Hello,World!」的文件做了一個小小的Ruby項目。我正在查看NetBeans生成的Rakefile,並且我注意到它已將s.executables行註釋掉了,因此我取消了註釋,並嘗試構建它。當然它失敗了:如何使用Rake在gem中生成可執行文件?

Don't know how to build task 'bin/your_executable_here' 

我想要做的,是弄清楚如何使這項工作。我搜索了一下,並且找不到關於如何正確生成可執行文件的任何信息。這裏產生由NetBeans中的Rakefile:

 
require 'rubygems' 
require 'rake' 
require 'rake/clean' 
require 'rake/gempackagetask' 
require 'rake/rdoctask' 
require 'rake/testtask' 

spec = Gem::Specification.new do |s| 
    s.name = 'Learning' 
    s.version = '0.0.1' 
    s.has_rdoc = true 
    s.extra_rdoc_files = ['README', 'LICENSE'] 
    s.summary = 'Your summary here' 
    s.description = s.summary 
    s.author = '' 
    s.email = '' 
    s.executables = ['your_executable_here'] 
    s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*") 
    s.require_path = "lib" 
    s.bindir = "bin" 
end 

Rake::GemPackageTask.new(spec) do |p| 
    p.gem_spec = spec 
    p.need_tar = true 
    p.need_zip = true 
end 

Rake::RDocTask.new do |rdoc| 
    files =['README', 'LICENSE', 'lib/**/*.rb'] 
    rdoc.rdoc_files.add(files) 
    rdoc.main = "README" # page to start on 
    rdoc.title = "Learning Docs" 
    rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder 
    rdoc.options

對不起,如果這是一個愚蠢的問題,老實說,我試圖找到自己的信息。

編輯:我不知道必須有一個可執行文件的名稱與您在項目中指定的默認名稱相同./bin。我全力以赴。

+0

你想NetBeans中運行該文件,或者你想生成一個可執行文件的Ruby rake任務(.bat或.sh)? – khelll 2009-09-24 05:28:02

回答

1

的s.executables數組必須包含在你的寶石的bin目錄中的可執行文件的名字

s.executables = %w(my_awesome_commandline_churner) 
+0

正確,似乎沒有人關心如何記錄。 :p – Rayne 2009-09-29 20:52:36

+0

請參閱:http://docs.rubygems.org/read/chapter/20#executables 另外,如果有人懷疑,看看其他人如何做。 – 2009-10-14 05:43:48

1

此代碼用於創建一個gem文件。寶石是紅寶石的包裝管理設備。一些寶石帶有可執行腳本文件,可以從命令行運行。當創建gem時,它們被放置在./bin目錄中,當它被部署時,它們將被複制到與ruby可執行文件相同的文件夾中。

要使文件成爲可執行文件,您需要在第一行添加一個shabang(#!/ user/local/bin/ruby​​)並更改文件權限以允許執行。

+0

那麼,我需要做些什麼才能做到這一點?它只是給了我,「不知道如何建立任務」bin/testexe「」錯誤。我是否應該把文件放到相對於Rakefile的bin文件夾中?因爲我嘗試過,並且繼續給我錯誤。我開始懷疑這可能不僅僅是一個NetBeans問題... – Rayne 2009-09-24 06:08:07

+0

沒關係,我的笨蛋蠢蠢欲動了。 :\, 謝謝你的幫助。 – Rayne 2009-09-24 06:53:10

相關問題