Question

Je me demande comment on peut utiliser Bundler avec Sinatra. L'idée est d'utiliser les pierres précieuses que les téléchargements Bundler dans le dossier .gems.

Était-ce utile?

La solution 2

Je crois que la meilleure façon est décrite ici 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

Autres conseils

Dans 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 appeler au lieu via sinatra bundle exec (par exemple bundle exec ruby myapp.rb)

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

source "http://rubygems.org"

gem "sinatra"

Cela suppose aussi que vous avez Bundler déjà installé (de gem install bundler) et que vous RAN 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 configuration Bundler / sinatra qui couvrira la plupart des cas d'utilisation:

Une config.ru minimale

require './my_sinatra_app'
run MySinatraApp

Un fichier env.rb de l'environnement qui exige toutes les pierres précieuses (empaquetés 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 app (nécessitant l'environnement) avec votre application sinatra (de Sinatra::Base):

require_relative 'env'

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

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

$ rackup

ou bundle exec rackup si nécessaire

Assurez-vous que vous avez un Gemfile comme celui et que 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 sur le site Bundler , mais si vous avez une application simple et utilisez Sinatra dsl au niveau supérieur, vous devez faire ce qui suit:

dans votre 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

Pour utiliser Bundler avec une application Sinatra, il vous suffit de faire deux choses. Tout d'abord, créez un Gemfile.

gem 'sinatra'

Ensuite, configurez votre fichier config.ru pour charger le paquet avant de charger votre application Sinatra.

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

Démarrez votre serveur de développement avec rackup et Sinatra sera chargé via Bundler.

rackup

sources Bundler docs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top