문제

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

소스 번들러 문서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top