37

Sinatra で Bundler を使用する方法を考えています。アイデアは、Bundler が .gems フォルダー内にダウンロードする gem を使用することです。

4

5 に答える 5

48

Sinatra アプリ内では、バンドラーのセットアップを要求するだけです。

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

または、アプリの上部に追加を追加したくない場合は、代わりに(例: )require "bundler/setup"を介して sinatra を呼び出すことができます。bundle execbundle exec ruby myapp.rb

Gemfileこれは、アプリケーションのルートにがあることを前提としています。次のようになります。

source "http://rubygems.org"

gem "sinatra"

これは、すでに bundler ( gem install bundler)がインストールされていbundle installて、すべての gem 依存関係をインストールするために実行したことも前提としています。

于 2009-11-11T02:42:36.187 に答える
11

最良の方法は、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
于 2009-11-13T04:35:07.643 に答える
10

私の元の答えはかなり古いものでしたが、このトピックにはまだ注意が向けられているようです。これは、ユースケースのほとんどをカバーするバンドラー/シナトラセットアップの最新バージョンです。

最小限のconfig.ru

require './my_sinatra_app'
run MySinatraApp

バンドルされたすべての gem を必要とする環境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

開発サーバーをラックアップで起動すると、Bundler を介して Sinatra が読み込まれ、アプリは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
于 2010-07-22T17:16:39.657 に答える
8

バンドラー Web サイトのガイドの +1ですが、単純なアプリがあり、最上位で Sinatra の DSL を使用している場合は、次のことを行う必要があります。

あなたのGemfileで(Bundlerにsinatraを必要としないように伝えてください):

gem 'sinatra', :require => false

およびアプリのファイルで(明示的にsinatraが必要です):

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

get '/' do
  'hello world'
end
于 2010-12-21T09:20:58.173 に答える