2012-08-10 90 views
2

我已經創建了暴露在Linux下工作的可執行文件的寶石。在Windows中,如果我瀏覽到安裝了寶石的目錄,我可以在命令行中運行它,但我有調用ruby時指定-Ilib自己。OCRA和腳本標記的RubyGems爲可執行gemspec

我想使用Ocra將其可執行文件+依賴項(其餘的gem)+ Ruby轉換爲其他用戶的exe文件,但文檔似乎是說手動搞亂加載路徑對Ocra來說是個壞主意。

我如何告訴OCRA在不使用Ruby的負載路徑自己搞亂了寶石的可執行腳本的工作?我想這將取決於有一些是這樣我可以運行的可執行腳本,它利用的事實,他們是已安裝的寶石的一部分優勢和計算出的依賴我。

回答

1

我的問題被證明需要兩個部分答案:

  1. 關於Windows如何Rugbygems包的可執行文件的基本無知:這使他們在bin /目錄在Ruby安裝目錄,將其加入到Ruby安裝的路徑。腳本本身不可執行,但Rubygems爲每個可執行文件創建一個.bat文件包裝器,例如。用於mygem.rb一個伴隨mygem.rb.bat文件將從在命令提示任何地方運行。

  2. 的OCRA腳本因此,可以使用下面的運行:ocra path/to/Ruby/bin/mygem.rb

當心,如果你啓動某種形式的服務器爲您的可執行文件時運行OCRA最終可能運行的一部分,決不繼續創建可執行文件。因此,有必要檢查OCRA是否啓動服務器之前運行:


if not defined? Ocra 
    #do server startup stuff here 
end 

其實我結束了在它創建一個與if not defined?代碼「安裝程序」的劇本,以免惹我的可執行腳本,我可能需要其他用途。

+0

+1 for'if not defined? Ocra' – Pakman 2014-03-11 20:03:55