Pregunta

Me pregunto cómo se puede utilizar Bündler con Sinatra. La idea es utilizar las gemas que Bundler descargas dentro de la carpeta .gems.

¿Fue útil?

Solución 2

Creo que la mejor forma en que se describe aquí en el 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

Otros consejos

Dentro de su aplicación Sinatra, sólo hay que exigir la instalación bundler:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

Como alternativa, si no desea agregar el require "bundler/setup" adicional en la parte superior de su aplicación, en su lugar puede invocar a través de Sinatra bundle exec (por ejemplo bundle exec ruby myapp.rb)

Esto supone que tiene un Gemfile en la raíz de su aplicación. Se podría tener este aspecto:

source "http://rubygems.org"

gem "sinatra"

Esto también supone que ya ha instalado bundler (gem install bundler) y que se ejecutó bundle install para instalar todas las dependencias de la gema.

A medida que mi respuesta original era bastante viejo, pero parece que hay todavía la atención sobre este tema aquí es la versión más reciente de bundler / configuración Sinatra que cubrirá la mayor parte de los casos de uso:

A config.ru mínimo

require './my_sinatra_app'
run MySinatraApp

Un archivo env.rb entorno que requiere que todos los paquetes de gemas (también soporta la carga de grupo del entorno actual):

require 'bundler/setup'

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

Bundler.require :default, APP_ENV.to_sym

A continuación, el archivo de aplicación (que requiere el medio ambiente) con su aplicación Sinatra (Sinatra::Base):

require_relative 'env'

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

Iniciar el servidor de desarrollo con rackup, y Sinatra se carga a través de Bündler, su aplicación será accesible desde http: // localhost: 9292 .

$ rackup

o bundle exec rackup si es necesario

Asegúrese de que tiene un Gemfile como el siguiente y ejecutar el comando antes de iniciar bundle la aplicación

source "https://rubygems.org"

gem "sinatra"

gem "puma" # a better rack server than the default webrick
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top