Domanda

Mi chiedo come si possa usare Bundler con Sinatra. L'idea è quella di utilizzare le gemme che scarica Bundler all'interno della cartella .gems.

È stato utile?

Soluzione 2

credo che il modo migliore è descritto qui su EngineYard blog:

# 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

Altri suggerimenti

All'interno della vostra Sinatra app, è sufficiente richiedere la configurazione Bundler:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

In alternativa, se non si desidera aggiungere il require "bundler/setup" aggiuntivo in cima alla vostra applicazione, si può invece richiamare Sinatra via bundle exec (ad esempio bundle exec ruby myapp.rb)

Questo presuppone che si dispone di un Gemfile nella root della vostra applicazione. Potrebbe assomigliare a questo:

source "http://rubygems.org"

gem "sinatra"

Questo presuppone anche che è già stato installato Bundler (gem install bundler) e che è stato eseguito bundle install per installare tutte le dipendenze gemma.

Come la mia risposta originale era piuttosto vecchio, ma sembra che ci sia ancora l'attenzione su questo tema qui è l'ultima versione di fardellatrice / setup Sinatra che coprirà la maggior parte del caso d'uso:

Un config.ru minima

require './my_sinatra_app'
run MySinatraApp

Un file env.rb ambiente che richiede tutte le gemme in bundle (supporta anche il caricamento del gruppo del contesto attuale):

require 'bundler/setup'

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

Bundler.require :default, APP_ENV.to_sym

Allora il vostro file app (che richiede l'ambiente) con la tua applicazione Sinatra (Sinatra::Base):

require_relative 'env'

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

Avviare il server di sviluppo con rackup, e Sinatra verrà caricato tramite Bundler, la vostra applicazione sarà accessibile da http: // localhost: 9292 .

$ rackup

o bundle exec rackup se necessario

Assicurarsi di avere un Gemfile come la seguente e si esegue il comando bundle prima di avviare l'applicazione

source "https://rubygems.org"

gem "sinatra"

gem "puma" # a better rack server than the default webrick
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top