代码之家  ›  专栏  ›  技术社区  ›  khelll

西纳特拉+捆绑机?

  •  37
  • khelll  · 技术社区  · 15 年前

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

    5 回复  |  直到 9 年前
        1
  •  48
  •   Ryan McGeary    14 年前

    在您的Sinatra应用程序中,您只需要求bundler设置:

    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"
    

    这还假设您已经安装了bundler( gem install bundler )你跑了 bundle install

        2
  •  11
  •   Martin Tournoij ravi.zombie    10 年前

    我相信最好的方式是描述 here 在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
    
        3
  •  10
  •   makevoid    7 年前

    由于我最初的答案很老,但似乎仍有人关注此主题,以下是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
    

    http://localhost:9292 .

    $ rackup
    

    bundle exec rackup

    确保您有一个如下所示的GEM文件,然后运行 bundle

    source "https://rubygems.org"
    
    gem "sinatra"
    
    gem "puma" # a better rack server than the default webrick
    
        4
  •  8
  •   Eugene Bolshakov    14 年前

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

    gem 'sinatra', :require => false
    

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

    require 'rubygems'
    require 'bundler'
    Bundler.require
    require 'sinatra'
    
    get '/' do
      'hello world'
    end
    
        5
  •  0
  •   theterminalguy    7 年前

    gem 'sinatra'

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

    require 'rubygems'
    require 'bundler'
    
    Bundler.require
    
    require './my_sinatra_app'
    run MySinatraApp
    

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

    rackup

    source bundler docs