Sinatra で Bundler を使用する方法を考えています。アイデアは、Bundler が .gems フォルダー内にダウンロードする gem を使用することです。
5 に答える
Sinatra アプリ内では、バンドラーのセットアップを要求するだけです。
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 依存関係をインストールするために実行したことも前提としています。
最良の方法は、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
私の元の答えはかなり古いものでしたが、このトピックにはまだ注意が向けられているようです。これは、ユースケースのほとんどをカバーするバンドラー/シナトラセットアップの最新バージョンです。
最小限の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
バンドラー 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