我正在尝试使用 sinatra 和 warble 创建一个简单的可执行 war 文件。我有一个简单的 lib/app.rb 文件,其中包含:
require 'rubygems'
require 'sinatra'
class Hiwar < Sinatra::Application
get '/' do
body "Hi!"
end
end
一个 config.ru 文件,其中包含:
require 'rubygems'
require 'lib/app'
run Hiwar.new
和一个 config/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)
我已经看到,如果我从列表中删除 gem“jruby-openssl”,它不会抱怨并创建 war 文件,但是当我执行它时,它会引发 500 错误:
undefined method `ssl?' for class `Sinatra::Request'
有没有更简单的方法来生成带有 sinatra 的可执行 jar?