Problemas para que mi aplicación basada en sinatra funcione en Heroku

Hice una aplicación simple de Sinatra para ejecutar una página de inicio. Ya está trabajando en mi computadora. Ahora quería alojarlo en heroku, pero no puedo hacerlo funcionar. No estoy muy familiarizado con conceptos como "Gemfile" o "Procfile".

Mi aplicación de ruby ​​requiere Sinatra, haml y sinatra / r18n. Mi gemfile se ve así:

source :rubygems gem 'sinatra' gem 'thin' gem 'sinatra-r18n' gem 'haml' 

My Procfile se ve así:

 web: bundle exec ruby app.rb -p $PORT 

Mi app.rb comienza así:

 # app.rb require 'rubygems' require 'sinatra' require 'sinatra/r18n' require 'haml' enable :sessions helpers do def set_lang (langcode) ... 

Otros files en el directory incluyen el file Gemfile.lock que se creó a través de la installation del package si recuerdo correctamente y las carpetas para "r18n", "public", "views".

Si inicio la aplicación en heroku, el command "heroku ps" dice que la aplicación está "arriba", pero si uso "heroku abierto" aparece un "Error interno del server".

Aquí están los "loggings heroku" después de empujarlo a heroku:

 2012-09-15T19:34:54+00:00 heroku[slugc]: Slug comstacktion started 2012-09-15T19:35:01+00:00 heroku[api]: Release v13 created by -@gmail.com 2012-09-15T19:35:01+00:00 heroku[api]: Deploy bebc79e by -@gmail.com 2012-09-15T19:35:01+00:00 heroku[web.1]: State changed from up to starting 2012-09-15T19:35:01+00:00 heroku[slugc]: Slug comstacktion finished 2012-09-15T19:35:02+00:00 heroku[web.1]: Starting process with command `bundle exec ruby app.rb -p 54979` 2012-09-15T19:35:05+00:00 heroku[web.1]: Stopping all processes with SIGTERM 2012-09-15T19:35:05+00:00 heroku[web.1]: State changed from starting to up 2012-09-15T19:35:06+00:00 app[web.1]: == Sinatra/1.1.0 has taken the stage on 20773 for production with backup from Thin 2012-09-15T19:35:06+00:00 app[web.1]: >> Thin web server (v1.4.1 codename Chromeo) 2012-09-15T19:35:06+00:00 app[web.1]: >> Maximum connections set to 1024 2012-09-15T19:35:06+00:00 app[web.1]: >> Listening on 0.0.0.0:20773, CTRL+C to stop 2012-09-15T19:35:06+00:00 app[web.1]: >> Stopping ... 2012-09-15T19:35:06+00:00 app[web.1]: 2012-09-15T19:35:06+00:00 app[web.1]: == Sinatra has ended his set (crowd applauds) 2012-09-15T19:35:07+00:00 heroku[web.1]: Process exited with status 0 

¿Alguien tiene una idea de lo que está mal aquí? Tal vez algo obvio si estás más familiarizado con los conceptos usados. También tomaría indicios de material que me ayuda a resolver el problema, pero hasta ahora todo lo que busqué en Google no me ayudó.

Actualización 28-09 Ahora eliminé el código de file del Procfile y aún recibo el "Error interno del server". Aquí hay un poco más de logging que debe include el locking:

  2012-09-28T18:04:50+00:00 heroku[web.1]: State changed from down to starting 2012-09-28T18:04:58+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e production -p 30813` 2012-09-28T18:05:01+00:00 heroku[web.1]: State changed from starting to up 2012-09-28T18:05:02+00:00 app[web.1]: /app/views/start.haml:1:in `evaluate_source' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:209:in `instance_eval' 2012-09-28T18:05:02+00:00 app[web.1]: Encoding::CompatibilityError - incompatible character encodings: ASCII-8BIT and UTF-8: 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:209:in `evaluate_source' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:127:in `evaluate' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:144:in `cached_evaluate' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/haml.rb:24:in `evaluate' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:76:in `render' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:452:in `render' 2012-09-28T18:05:02+00:00 app[web.1]: /app/app.rb:28:in `block in <top (requinetworking)>' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:370:in `haml' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:1032:in `call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:1032:in `block in compile!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:620:in `instance_eval' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:620:in `route_eval' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:656:in `block in process_route' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:653:in `catch' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:604:in `block (2 levels) in route!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:653:in `process_route' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:603:in `block in route!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:602:in `each' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:602:in `route!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:530:in `block in call!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:706:in `instance_eval' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:741:in `dispatch!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:706:in `block in invoke' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:706:in `catch' 2012-09-28T18:05:02+00:00 heroku[router]: GET fierce-crag-6255.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=73ms status=500 bytes=30 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:706:in `invoke' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:516:in `call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:530:in `call!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:1168:in `synchronize' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/id.rb:200:in `call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/commonlogger.rb:20:in `call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/id.rb:205:in `context' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:1142:in `block in call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:80:in `block in pre_process' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:53:in `process' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:78:in `pre_process' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:38:in `receive_data' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:78:in `catch' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.1.0/lib/sinatra/base.rb:1142:in `call' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/backends/base.rb:63:in `start' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/server.rb:159:in `start' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/controllers/controller.rb:86:in `start' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/runner.rb:185:in `run_command' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/runner.rb:151:in `run!' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/bin/thin:6:in `<top (requinetworking)>' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/bin/thin:19:in `load' 2012-09-28T18:05:02+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/bin/thin:19:in `<main>' 2012-09-28T18:05:02+00:00 app[web.1]: 212.90.85.15 - - [28/Sep/2012 18:05:02] "GET / HTTP/1.1" 500 30 0.0591 2012-09-28T18:05:03+00:00 app[web.1]: 212.90.85.15 - - [28/Sep/2012 18:05:03] "GET /favicon.ico HTTP/1.1" 200 1416 0.0109 2012-09-28T18:05:03+00:00 heroku[router]: GET fierce-crag-6255.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=13ms status=200 bytes=1416 2012-09-28T18:05:03+00:00 heroku[router]: GET fierce-crag-6255.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=4ms status=200 bytes=1416 2012-09-28T18:05:03+00:00 app[web.1]: 212.90.85.15 - - [28/Sep/2012 18:05:03] "GET /favicon.ico HTTP/1.1" 200 1416 0.0026 

Sí, lo descubrí por mi count. Debería haber puesto más atención a Encoding::CompatibilityError - incompatible character encodings: ASCII-8BIT and UTF-8: en los loggings heroku. Eliminé todas las diéresis alemanas y ahora está funcionando. El problema ahora con la encoding se aborda aquí . Espero poder resolver esto de alguna manera. Gracias a todos de todos modos!

No necesariamente necesitas un file de process. Si quieres que heroku ejecute tu aplicación de manera pnetworkingeterminada, simplemente quítala. En su lugar, agregue un file config.ru de una manera como en este pequeño ejemplo de heroku.