Вопрос

Мне интересно, как можно использовать Bundler с Sinatra.Идея состоит в том, чтобы использовать драгоценные камни, которые Bundler загружает внутри папки .gems .

Это было полезно?

Решение 2

Я считаю, что описан наилучший способ здесь в блоге engineeryard:

# 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

Другие советы

Внутри вашего приложения Sinatra вам просто нужно запросить настройку bundler:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

В качестве альтернативы, если вы не хотите добавлять дополнительные require "bundler/setup" в верхней части вашего приложения вы можете вместо этого вызвать sinatra с помощью bundle exec (например, bundle exec ruby myapp.rb)

Это предполагает, что у вас есть Gemfile в корневом каталоге вашего приложения.Это может выглядеть примерно так:

source "http://rubygems.org"

gem "sinatra"

Это также предполагает, что вы уже установили bundler (gem install bundler) и что ты побежал bundle install чтобы установить все зависимости gem.

Поскольку мой первоначальный ответ был довольно старым, но, похоже, этой теме все еще уделяется внимание, вот последняя версия bundler / sinatra setup, которая будет охватывать большую часть вариантов использования:

Минимальный config.ru

require './my_sinatra_app'
run MySinatraApp

Окружающая среда env.rb файл, для которого требуются все входящие в комплект драгоценные камни (также поддерживается загрузка группы текущей среды):

require 'bundler/setup'

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

Bundler.require :default, APP_ENV.to_sym

Затем ваш файл приложения (требующий среды) с вашим приложением sinatra (Sinatra::Base):

require_relative 'env'

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

Запустите свой сервер разработки с помощью rackup, и Sinatra будет загружена через Bundler, ваше приложение будет доступно с http://localhost:9292.

$ rackup

или bundle exec rackup при необходимости

Убедитесь, что у вас есть Gemfile, подобный следующему, и вы запускаете bundle команда перед запуском приложения

source "https://rubygems.org"

gem "sinatra"

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

+1 для руководство на веб-сайте bundler, но если у вас простое приложение и вы используете dsl Sinatra на верхнем уровне, то вам нужно сделать следующее:

в вашем Gemfile (скажите, что bundler не требует sinatra):

gem 'sinatra', :require => false

и в файле приложения (явно требуется sinatra):

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

get '/' do
  'hello world'
end

Чтобы использовать bundler с приложением Sinatra, вам нужно сделать только две вещи.Сначала создайте Gemfile.

gem 'sinatra'

Затем настройте свой файл config.ru для загрузки пакета до того, как он загрузит ваше приложение Sinatra.

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

Запустите свой сервер разработки с помощью rackup, и Sinatra будет загружена через Bundler.

rackup

исходные документы bundler docs

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top