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

有帮助吗?

解决方案 2

我相信最好的方法已被描述 这里 在 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

其他提示

在你的末日的应用程序,你就必须要求捆绑安装:

require "bundler/setup"
require "sinatra"

get "/" do
  "Hello world!"
end

另外,如果你不想在你的应用程序的顶部添加额外的require "bundler/setup",你可以不是通过bundle exec援引西纳特拉(例如bundle exec ruby myapp.rb

这假设你在你的应用程序的根Gemfile。它看起来是这样的:

source "http://rubygems.org"

gem "sinatra"

这还假定您已经安装了捆绑(gem install bundler),并且你跑bundle install安装所有的gem依赖。

由于我原来的答复是很旧,但人们似乎仍然关注这个话题这里的捆绑/西纳特拉安装最新版本将涵盖大部分使用情况:

一个最小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::Base):

require_relative 'env'

class MyApp < Sinatra::Base
  get "/" do
    "hello world"
  end
end

启动与rackup开发服务器,西纳特拉将通过捆扎机被加载,你的应用程序将会从 HTTP访问://本地主机: 9292

$ rackup

bundle exec rackup如果需要

请确保你有一个类似的Gemfile下列之一,你启动应用程序之前运行bundle命令

source "https://rubygems.org"

gem "sinatra"

gem "puma" # a better rack server than the default webrick
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top