37

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

4

5 回答 5

48

在您的 Sinatra 应用程序中,您只需要安装捆绑程序:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

或者,如果您不想require "bundler/setup"在应用顶部添加附加内容,您可以改为通过bundle exec(例如bundle exec ruby myapp.rb)调用 sinatra

这假设您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

由于我的原始答案很老,但似乎仍然关注这个主题,这是最新版本的 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 启动您的开发服务器,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
于 2010-07-22T17:16:39.657 回答
8

+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 回答
0

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

gem 'sinatra'

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

require 'rubygems'
require 'bundler'

Bundler.require

require './my_sinatra_app'
run MySinatraApp

使用 rackup 启动您的开发服务器,然后 Sinatra 将通过 Bundler 加载。

rackup

源捆绑器文档

于 2018-03-21T13:00:12.123 回答