题
我想知道如何将 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
+1有关打捆网站的引导,但如果你有一个简单的应用程序,并使用Sinatra的DSL在顶层,那么你需要做到以下几点:
在您的Gemfile(告诉捆绑不需要西纳特拉):
gem 'sinatra', :require => false
和在应用程序的文件(明确要求西纳特拉):
require 'rubygems'
require 'bundler'
Bundler.require
require 'sinatra'
get '/' do
'hello world'
end
要与西纳特拉应用程序中使用捆绑,你只需要做两件事情。首先,创建一个Gemfile中。
gem 'sinatra'
然后,设置您config.ru文件加载您西纳特拉应用之前加载束。
require 'rubygems'
require 'bundler'
Bundler.require
require './my_sinatra_app'
run MySinatraApp
启动与rackup开发服务器,西纳特拉将通过捆扎机被载入。
rackup