2011-12-02 52 views
4

我想用sinatra和warble創建一個簡單的可執行的war文件。我有一個簡單的lib/app.rb文件:使用sinatra,warbler和jruby-openssl創建一個可執行的jar

require 'rubygems' 
require 'sinatra' 

class Hiwar < Sinatra::Application 
    get '/' do 
    body "Hi!" 
    end 
end 

與config.ru文件:

require 'rubygems' 
require 'lib/app' 

run Hiwar.new 

,並用一個配置/ warble.rb文件:

Warbler::Config.new do |config| 
    config.dirs = %w(config lib) 

    config.gems += ["sinatra","rack","rack-protection","tilt","jruby-openssl"] 

end 

當我執行時:

$ warble executable war 

我獲得:

warble aborted! 
Zip end of central directory signature not found 

Tasks: TOP => war:files 
(See full trace by running task with --trace) 

我已經看到,如果我從列表中移除寶石「JRuby的OpenSSL的」,它不抱怨,並創建war文件,但是當我執行它,它提出了一個500錯誤:

undefined method `ssl?' for class `Sinatra::Request' 

是否有一種簡單的方法來生成一個可執行的jar與sinatra?

+0

如果我執行「rackup -p 4567」,它工作正常...所以我的問題是如何開發從西納特拉戰爭文件... – Labra

+0

西納特拉什麼版本的?我得到了同樣的錯誤(顯然來自非常不同的代碼),我認爲它可能與版本有關。 –

+0

這個問題有沒有進展?我對這個問題很感興趣。 – Pred

回答

0

看看Rawr,它允許您使用jruby-complete將Ruby解釋器嵌入到jar中。

我花了最近3天得到一個名爲FontX的工作演示,它將.ttf轉換爲各種其他字體格式。運行'rake rawr:jar'進行編譯,然後rake start即可查看。

FontX on Github

相關問題