Sinatra + Bundler?
我想知道如何使用与西纳特拉Bundler。 这个想法是使用Bundler在.gems文件夹下载的gem。
在您的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"
这也假定您已经安装了捆绑软件( gem install bundler
),并且运行了bundle install
来安装所有的gem依赖。
我相信在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
由于我的原始答案是相当古老的,但似乎仍然关注这个话题这里是最新版本的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
+1 在捆绑器网站上的指南 ,但如果你有一个简单的应用程序,并在顶层使用Sinatra的dsl,那么你需要做到以下几点:
在你的Gemfile中(告诉bundler不需要sinatra):
gem 'sinatra', :require => false
并在应用程序的文件(明确要求sinatra):
require 'rubygems' require 'bundler' Bundler.require require 'sinatra' get '/' do 'hello world' end