Sinatra + Bundler?

时间:2009-11-10 07:11:31

标签: ruby sinatra bundler

我想知道如何将Bundler与Sinatra一起使用。我们的想法是使用Bundler在.gems文件夹中下载的宝石。

5 个答案:

答案 0 :(得分:47)

在Sinatra应用程序中,您只需要设置捆绑器:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

或者,如果您不想在应用顶部添加额外的require "bundler/setup",则可以通过bundle exec调用sinatra(例如bundle exec ruby myapp.rb

这假设您的应用程序根目录中有Gemfile。它可能看起来像这样:

source "http://rubygems.org"

gem "sinatra"

这也假设您已经安装了bundler(gem install bundler)并且运行了bundle install来安装所有gem依赖项。

答案 1 :(得分:11)

我认为最好的方法是在EngineYard博客上描述here

# 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

答案 2 :(得分:10)

由于我原来的答案已经很老了,但似乎仍然关注这个主题,这是最新版本的bundler / sinatra设置,它将涵盖大部分用例:

最小config.ru

require './my_sinatra_app'
run MySinatraApp

环境env.rb文件,需要所有捆绑的gem(也支持加载当前环境的组):

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启动您的开发服务器,并通过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

答案 3 :(得分:8)

+1 guide on the bundler website,但如果您有一个简单的应用并在顶层使用Sinatra的dsl,那么您需要执行以下操作:

你的Gemfile中的

(告诉bundler不要求sinatra):

gem 'sinatra', :require => false

并在应用程序的文件中(明确要求sinatra):

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

get '/' do
  'hello world'
end

答案 4 :(得分:0)

要将Bundler与Sinatra应用程序一起使用,您只需要做两件事。首先,创建一个Gemfile。

gem 'sinatra'

然后,在加载Sinatra应用程序之前,设置config.ru文件以加载包。

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

使用rackup启动开发服务器,并通过Bundler加载Sinatra。

rackup

source bundler docs