Frage
Ich Frage mich, wie kann man Bundler mit Sinatra.Die Idee ist, verwenden Sie die Edelsteine, die Bundler-downloads im inneren des .Edelsteine-Ordner.
Lösung 2
Ich glaube, der beste Weg beschrieben wird hier auf 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
Andere Tipps
In Ihrem Sinatra App, die Sie gerade die Bündler Setup benötigen müssen:
require "bundler/setup"
require "sinatra"
get "/" do
"Hello world!"
end
Alternativ können, wenn Sie nicht wollen, die zusätzliche require "bundler/setup"
an der Spitze der App hinzuzufügen, können Sie stattdessen aufrufen sinatra über bundle exec
(z bundle exec ruby myapp.rb
)
Dies setzt voraus, dass Sie eine Gemfile
in der Wurzel Ihrer Anwendung haben. Es könnte wie folgt aussehen:
source "http://rubygems.org"
gem "sinatra"
Dies setzt auch voraus, dass Sie bereits bundler installiert haben (gem install bundler
) und dass Sie alle Juwel Abhängigkeiten installieren lief bundle install
.
Als meine ursprüngliche Antwort war ziemlich alt, aber es scheint immer noch die Aufmerksamkeit auf dieses Thema hier ist die neueste version von bundler/sinatra-setup, die decken die meisten der use-case:
Eine minimale config.ru
require './my_sinatra_app'
run MySinatraApp
Eine Umgebung env.rb
Datei, die erfordert, dass alle mitgelieferten Edelsteine (unterstützt auch das laden der aktuellen Umwelt-Gruppe):
require 'bundler/setup'
APP_ENV = ENV["RACK_ENV"] || "development"
Bundler.require :default, APP_ENV.to_sym
Dann wird Ihre app-Datei (die Umwelt) mit Ihrer sinatra-app (Sinatra::Base
):
require_relative 'env'
class MyApp < Sinatra::Base
get "/" do
"hello world"
end
end
Start your development server mit rackup, und Sinatra geladen wird via Bundler, Ihre app verfügbar ist http://localhost:9292.
$ rackup
oder bundle exec rackup
wenn nötig
Stellen Sie sicher, Sie haben eine Gemfile wie folgt ein und führen Sie die bundle
Befehl vor dem Start der app
source "https://rubygems.org"
gem "sinatra"
gem "puma" # a better rack server than the default webrick
1 für die Führung auf dem Bündler Website , aber wenn Sie eine einfache Anwendung haben und verwenden Sinatras dsl auf der obersten Ebene, dann müssen Sie folgendes tun:
in Ihrem Gemfile (sagen Bündler nicht erfordern sinatra):
gem 'sinatra', :require => false
und in der Datei app (explizit erfordern sinatra):
require 'rubygems'
require 'bundler'
Bundler.require
require 'sinatra'
get '/' do
'hello world'
end
Um Bündler mit Sinatra-Anwendung zu verwenden, müssen Sie nur zwei Dinge zu tun. Erstellen Sie zunächst eine Gemfile.
gem 'sinatra'
Dann richten Sie Ihre config.ru Datei, um das Bündel zu laden, bevor es Ihre Sinatra App geladen wird.
require 'rubygems'
require 'bundler'
Bundler.require
require './my_sinatra_app'
run MySinatraApp
Starten Sie Ihren Entwicklungsserver mit rackup und Sinatra wird über Bündler geladen werden.
rackup