sinatrajrubywarbler

Generate war file using warbler


I am trying to generate war file using warbler for jruby, but i got stuck and i am getting this error:

warble aborted!
NoMethodError: undefined method `booter=' for nil:NilClass
config/warble.rb:9:in `block in initialize' /Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/config.rb:216:in `initialize'
config/warble.rb:4:in `<eval>' 
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/task.rb:46:in `initialize'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/application.rb:27:in `load_rakefile' 
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/application.rb:79:in `run'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/lib/warbler/application.rb:74:in `run' 
/Users/xxx/.rvm/gems/jruby-9.0.5.0/gems/warbler-2.0.4/bin/warble:11:in `<top>'
/Users/xxx/.rvm/gems/jruby-9.0.5.0/bin/warble:23:in `<top>'
(See full trace by running task with --trace)

my config file in config/warble.rb:

Warbler::Config.new do |config|
  config.dirs = %w(app config views)
  config.gems += ["sinatra"]
  config.gems -= ["rails"]
  config.jar_name = "jsinatra"
  config.webxml.booter = :rack
  config.webxml.jruby.compat.version = "1.9"
  config.webxml.rackup.path = '/WEB-INF/config.ru'
end

any help, advice apricciated. thank you.

over all, i am trying to create docker container and i am using pdf file as a reference but the pdf is somehow vaguely written. http://www.ibm.com/developerworks/cloud/library/cl-sinatra-softlayer-app/cl-sinatra-softlayer-app-pdf.pdf


Solution

  • Worked for me

    In the pdf I posted there is file named rackup.ru with this contents:

    require "sinatra"
    require File.dirname(__FILE__) + '/app/main'
    run MyApp
    

    After hours of googling, I decided to create identical file and name it config.ru. Worked.

    Not working

    I have also tried to change

    config.webxml.rackup.path = '/WEB-INF/config.ru'
    

    to

    config.webxml.rackup.path = '/WEB-INF/rackup.ru'
    

    Did not work.