很大程度上,RubyGems會爲您處理這個問題。您需要將您的可執行文件包含在files
列表中,並將其放入您的gemspec中的executables
。這是常見的把你的可執行文件中bin
在你的目錄,例如:
$ ls
bin/ myapp.gemspec lib/ Rakefile
$ ls bin
bin/myapp
然後你gemspec會是什麼樣子:
Gem::Specification.new do |s|
s.name = 'myapp'
# whatever else is in your gemspec
s.files = ["bin/myapp","lib/myapp.rb"] # or whatever other files you want
s.executables = ["bin/todo"]
end
在這一點上,當用戶安裝通過RubyGems的您的應用程序,myapp
會在他們的道路,並lib
會在你的應用程序的loadpath,讓您的可執行文件可以簡單地開始了:
#!/usr/bin/env ruby
require 'myapp'
# whatever other requires
唯一的問題是,在開發過程中,您不能僅僅執行bin/myapp
並讓您的應用程序運行。有些開發人員通過$:
或$LOAD_PATH
操縱負載路徑,但這被認爲是不好的形式。
如果使用捆綁,這是最簡單的只是bundle exec
本地運行你的應用程序,例如bundle exec bin/myapp
。您可以交替使用RUBYLIB
環境變量,例如RUBYLIB=lib bin/myapp
,這會將lib
置於加載路徑中。
「源可用」可能是一個更好的術語。僅僅因爲你可以看到源代碼並不意味着它是通常意義上的「開源」軟件。 – 2012-03-09 21:31:05
謝謝,我會看看那些!我不是白天的紅寶石開發人員,所以我正在努力找到一個好的基礎。 – tarnfeld 2012-03-09 21:44:18
我的意思是更多的「開源」,因爲我不知道任何有意混淆的東西。這就是「開放源碼」和「免費開源」的不同之處。儘管如此,絕大多數寶石都是以某種開源許可證的形式出版的。 – tadman 2012-03-10 00:07:51