rubysinatrajrubyrackup

Can't launch simple Sinatra app using rackup and jRuby (no response from web server)


I've got a Sinatra "hello world" app that I am trying to run using jRuby. It works when I run the app, but not when I run rackup. Can anyone tell me what is going on here?

Here's the app, in a file 'app.rb':

require 'rubygems'
require 'bundler/setup'
require 'sinatra'

configure do
  set :bind, '0.0.0.0'
end

get '/' do
  'Boo!'
end

I can run this using bundle exec ruby app.rb and it works fine:

jonea@centos7andy[~/andy/sinatra_sand_jruby]%: bundle exec ruby app.rb
[2015-01-12 10:36:06] INFO  WEBrick 1.3.1
[2015-01-12 10:36:06] INFO  ruby 1.9.3 (2014-12-09) [java]
== Sinatra/1.4.5 has taken the stage on 4567 for development with backup from WEBrick
[2015-01-12 10:36:06] INFO  WEBrick::HTTPServer#start: pid=31654 port=4567

Here is my config.ru to call the above program:

require 'rubygems'
require 'bundler/setup'
require 'sinatra'
require './app'

run Sinatra::Application

If I run this, it appears to work, but I can't access the server using a web browser:

jonea@centos7andy[~/andy/sinatra_sand_jruby]%: bundle exec rackup -p4567
[2015-01-12 10:29:06] INFO  WEBrick 1.3.1
[2015-01-12 10:29:06] INFO  ruby 1.9.3 (2014-12-09) [java]
[2015-01-12 10:29:06] INFO  WEBrick::HTTPServer#start: pid=31553 port=4567

I note the suspicious lack of "Sinatra has taken the stage..."


Solution

  • Well, this is hardly sufficient to explain what is going on, but I can make it work if in config.ru I replace

    run Sinatra::Application
    

    with

    Sinatra::Application.run!
    

    In fact, knowing that makes me even more confused. Some sort of bug in Rack?