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?
Répondre
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
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.
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
+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
Yehuda Katz a un grand article sur l'utilisation aujourd'hui Bundler: http: // yehudakatz .com/2009/11/03/using-the-new-gem-bundler-today/ –
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