Pergunta

Eu estou querendo saber como se pode usar Bundler com Sinatra. A ideia é usar as jóias que Empacotador de downloads dentro das .gems pasta.

Foi útil?

Solução 2

Eu acredito que a melhor maneira é descrito aqui em 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

Outras dicas

Dentro de sua aplicação Sinatra, você só tem que exigem a configuração bundler:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

Como alternativa, se você não deseja adicionar o require "bundler/setup" adicional na parte superior do seu aplicativo, você pode, em vez de invocação Sinatra via bundle exec (por exemplo bundle exec ruby myapp.rb)

Isso pressupõe que você tem um Gemfile na raiz da sua aplicação. Ele pode ter esta aparência:

source "http://rubygems.org"

gem "sinatra"

Isso também pressupõe que você já instalou bundler (gem install bundler) e que você correu bundle install para instalar todas as dependências gema.

Como a minha resposta original era bastante antigo, mas parece haver ainda a atenção para este tema aqui é a versão mais recente do bundler setup / sinatra que cobrirá a maior parte do caso de uso:

A config.ru mínima

require './my_sinatra_app'
run MySinatraApp

Um arquivo de ambiente env.rb que requer todas as pedras preciosas empacotados (também suporta o carregamento de grupo do ambiente atual):

require 'bundler/setup'

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

Bundler.require :default, APP_ENV.to_sym

Em seguida, o arquivo de aplicativo (que exige o meio ambiente) com a sua aplicação Sinatra (Sinatra::Base):

require_relative 'env'

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

Comece o seu servidor de desenvolvimento com rackup, e Sinatra será carregado via Bundler, seu aplicativo estará acessível a partir http: // localhost: 9292 .

$ rackup

ou bundle exec rackup se necessário

Certifique-se de que você tem um Gemfile como a seguinte e você corre o comando bundle antes de iniciar o aplicativo

source "https://rubygems.org"

gem "sinatra"

gem "puma" # a better rack server than the default webrick

1 para a href="http://gembundler.com/sinatra.html" guia no site bundler , mas se você tiver um aplicativo simples e usar Sinatra DSL no nível superior, então você precisa fazer o seguinte:

no seu Gemfile (dizer bundler não exigem Sinatra):

gem 'sinatra', :require => false

e no arquivo do aplicativo (explicitamente exigem Sinatra):

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

get '/' do
  'hello world'
end

Para usar bundler com um aplicativo de Sinatra, você só precisa fazer duas coisas. Primeiro, crie um Gemfile.

gem 'sinatra'

Em seguida, configure seu arquivo config.ru para carregar o pacote antes de carregar a sua aplicação Sinatra.

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

Comece o seu servidor de desenvolvimento com rackup, e Sinatra será carregado via Bundler.

rackup

fonte bundler docs

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top