문제
Sinatra와 함께 Bundler를 어떻게 사용할 수 있는지 궁금합니다. 아이디어는 Bundler가 .gems 폴더 내부에서 다운로드하는 보석을 사용하는 것입니다.
해결책 2
나는 가장 좋은 방법이 묘사된다고 생각합니다 여기 엔진 야드 블로그 :
# 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
모든 보석 의존성을 설치합니다.
내 원래 대답이 꽤 오래되었지만이 주제에 여전히주의를 기울이는 것 같습니다. 여기에는 대부분의 사용 사례를 다루는 Bundler/Sinatra 설정의 최신 버전입니다.
최소 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 웹 사이트의 가이드, 그러나 간단한 앱이 있고 최상위 수준에서 Sinatra의 DSL을 사용하는 경우 다음을 수행해야합니다.
당신의 보석에서 (Bundler에게 Sinatra를 요구하지 말라고 말하십시오) :
gem 'sinatra', :require => false
앱 파일에서 (Sinatra가 명시 적으로 필요) :
require 'rubygems'
require 'bundler'
Bundler.require
require 'sinatra'
get '/' do
'hello world'
end
Sinatra 응용 프로그램과 함께 Bundler를 사용하려면 두 가지만 수행하면됩니다. 먼저, 보석을 만듭니다.
gem 'sinatra'
그런 다음 sinatra 앱을로드하기 전에 Bundle을로드하려면 config.ru 파일을 설정하십시오.
require 'rubygems'
require 'bundler'
Bundler.require
require './my_sinatra_app'
run MySinatraApp
Rackup을 사용하여 개발 서버를 시작하면 Bundler를 통해 Sinatra가로드됩니다.
rackup