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.

War es hilfreich?

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

Quelle bundler docs

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top