2009-11-10 6 views
35

Je me demande comment on peut utiliser Bundler avec Sinatra. L'idée est d'utiliser les gemmes que Bundler télécharge dans le dossier .gems.Sinatra + Bundler?

+3

Yehuda Katz a un grand article sur l'utilisation aujourd'hui Bundler: http: // yehudakatz .com/2009/11/03/using-the-new-gem-bundler-today/ –

+1

Aussi, la documentation bundler elle-même a un bon exemple de la façon de configurer une application sinatra http://gembundler.com/sinatra.html et c'est courant. – christophercotton

Répondre

10

Je crois que la meilleure façon est décrite here sur le blog EngineYard:

# This makes sure the bundled gems are in our $LOAD_PATH 
require File.expand_path(File.join(File.dirname(__FILE__), 'vendor', 'gems', 'environment')) 

# This actually requires the bundled gems 
Bundler.require_env 

class MyApp < Sinatra::Base 
    # stuff 
end 
47

l'intérieur de votre application Sinatra, il vous suffit d'exiger la configuration du Bundler:

require "bundler/setup" 
require "sinatra" 

get "/" do 
    "Hello world!" 
end 

Sinon, si vous ne voulez pas ajouter le require "bundler/setup" supplémentaire en haut de votre application, vous pouvez plutôt invoquer sinatra via bundle exec (par exemple bundle exec ruby myapp.rb)

Ceci suppose que vous avez un Gemfile à la racine de votre application. Il pourrait ressembler à ceci:

source "http://rubygems.org" 

gem "sinatra" 

Cela suppose également que vous avez déjà installé Bundler (gem install bundler) et que vous avez exécuté bundle install installer toutes les dépendances de pierres précieuses.

+2

si vous utilisez Bundler.require: par défaut, il n'est pas nécessaire d'exiger manuellement 'sinatra' ou d'autres gemmes – makevoid

+0

http://bundler.io/v1.3/sinatra.html – khelll

9

Comme ma réponse initiale était assez vieux, mais il semble y avoir encore d'attention à ce sujet est ici la dernière version de Bundler/setup sinatra qui couvrira la plupart des cas d'utilisation:

Un minimum config.ru

require './my_sinatra_app' 
run MySinatraApp 

Un environnement env.rb fichier qui nécessite toutes les pierres précieuses groupées (prend également en charge le chargement du groupe de l'environnement actuel):

require 'bundler/setup' 

APP_ENV = ENV["RACK_ENV"] || "development" 

Bundler.require :default, APP_ENV.to_sym 

Ensuite, votre fichier application (nécessitant l'environnement) avec votre application sinatra (Sinatra::Base):

require_relative 'env' 

class MyApp < Sinatra::Base 
    get "/" do 
    "hello world" 
    end 
end 

Démarrer votre serveur de développement avec rackup, et Sinatra sera chargé via Bundler, votre application sera accessible à partir http://localhost:9292.

$ rackup 

ou bundle exec rackup si nécessaire

Assurez-vous que vous avez un Gemfile comme celui et vous exécutez la commande suivante bundle avant de commencer l'application

source "https://rubygems.org" 

gem "sinatra" 

gem "puma" # a better rack server than the default webrick 
7

+1 pour le guide on the bundler website, mais si vous avez une application simple et utilisez Dsl de Sinatra au plus haut niveau, alors vous devez faire ce qui suit:

en notre Gemfile (dire Bundler pas besoin sinatra):

gem 'sinatra', :require => false 

et dans le dossier de l'application (nécessite explicitement sinatra):

require 'rubygems' 
require 'bundler' 
Bundler.require 
require 'sinatra' 

get '/' do 
    'hello world' 
end