2010-04-06 14 views
5

J'ai une application Sinatra que j'ai créée et je voudrais l'empaqueter comme un binaire basé sur une gemme.L'application Sinatra dans un bijou

J'ai mon gemspec et gem mis en place pour générer un exécutable approprié qui pointe vers le my_sinatra_app.rb (qui est exécutable), mais le serveur sinatra ne fonctionne jamais. Des idées pourquoi et comment le faire fonctionner?

my_sinatra_app exécutable:

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 
# 
# This file was generated by RubyGems. 
require 'rubygems' 

version = ">= 0" 

if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then 
    version = $1 
    ARGV.shift 
end 

gem 'my_sinatra_app', version 
load Gem.bin_path('my_sinatra_app', 'my_sinatra_app', version) 

Répondre

5

Découvert: D

Vous devez envelopper votre application Sinatra dans une classe comme ceci:

class MySinatraApp < Sinatra::Application 
    # Stuff 
end 

Puis dans le fichier qui exécute l'application vous pouvez simplement faire MySinatraApp.run! Simple :)

+0

Avait exactement le même problème aujourd'hui; Cela m'a vraiment aidé. THX! – mark