¿Sinatra + Bundler ?


Me pregunto cómo se puede usar Bundler con Sinatra. La idea es utilizar las gemas que Bundler descarga dentro de la .carpeta de gemas.

Author: Arslan Ali, 2009-11-10

5 answers

Dentro de su aplicación Sinatra, solo tiene que requerir la configuración del bundler:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

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

Esto asume que usted tiene un Gemfile en la raíz de su aplicación. Podría verse así:

source "http://rubygems.org"

gem "sinatra"

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

 47
Author: Ryan McGeary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-27 04:18:58

Creo que la mejor manera se describe aquí {[3] } 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
 11
Author: khelll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-26 18:30:30

Como mi respuesta original era bastante antigua, pero parece que todavía hay atención a este tema, aquí está la última versión de la configuración de bundler / sinatra que cubrirá la mayor parte del caso de uso:

Un mínimo config.ru

require './my_sinatra_app'
run MySinatraApp

Un archivo de entorno env.rb que requiere todas las gemas incluidas (también admite la carga del 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 la aplicación (que requiere el entorno) con su aplicación sinatra (Sinatra::Base):

require_relative 'env'

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

Comience su desarrollo servidor con rackup, y Sinatra se cargará a través de Bundler, su aplicación será accesible desde http://localhost:9292 .

$ rackup

O bundle exec rackup si es necesario

Asegúrese de tener un Gemfile como el siguiente y ejecute el comando bundle antes de iniciar la aplicación

source "https://rubygems.org"

gem "sinatra"

gem "puma" # a better rack server than the default webrick
 9
Author: makevoid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-06 13:23:09

+ 1 para la guía en el sitio web de bundler, pero si tiene una aplicación simple y usa el dsl de Sinatra en el nivel superior, entonces debe hacer lo siguiente:

En tu Gemfile (dile a bundler que no requiere sinatra):

gem 'sinatra', :require => false

Y en el archivo de la aplicación (requiere explícitamente sinatra):

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

get '/' do
  'hello world'
end
 8
Author: Eugene Bolshakov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 09:20:58

Para usar bundler con una aplicación Sinatra, solo necesita hacer dos cosas. Primero, crea un Gemfile.

gem 'sinatra'

Luego, configure su config.ru archivo para cargar el paquete antes de que cargue su aplicación Sinatra.

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

Inicie su servidor de desarrollo con rackup, y Sinatra se cargará a través de Bundler.

rackup

Fuente bundler docs

 0
Author: Damian Simon Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-21 13:00:12