Deployment 如何将Sinatra应用程序作为gem发布并部署?

Deployment 如何将Sinatra应用程序作为gem发布并部署?,deployment,gem,sinatra,rack,Deployment,Gem,Sinatra,Rack,我有一个sinatra应用程序并打包了它。其文件布局大致如下所示: ├── bin │   └── tubemp ├── lib │  └── tubemp.rb ├── Gemfile └── tubemp.gemspec 我可以很好地安装和运行它。调用ruby-lib/tubemp.rb也会启动应用程序,因为Sinatra使其能够自动启动tubemp.rb: class Tubemp < Sinatra::Application get '/' do erb :index

我有一个sinatra应用程序并打包了它。其文件布局大致如下所示:

├── bin
│   └── tubemp
├── lib
│  └── tubemp.rb
├── Gemfile
└── tubemp.gemspec
我可以很好地安装和运行它。调用
ruby-lib/tubemp.rb
也会启动应用程序,因为Sinatra使其能够自动启动<代码>tubemp.rb:

class Tubemp < Sinatra::Application
  get '/' do
    erb :index, :locals => { :title => "YouTube embeds without third party trackers." }
  end
end
但现在我想将其部署为Rack应用程序。或者将其部署到机架应用程序中。至少它应该在生产机器上的乘客下运行

对于通用应用程序,只需在应用程序所在的目录中添加一个
config.ru
。然后,该文件大致包括并调用
runtubemp
。将nginx或apache的乘客指向此机架文件和应用程序所在的目录,启动它。 这很管用,直到我把它变成了一块宝石;因为现在我不再有“应用程序所在的目录”,除了
gem install tubemp
决定放置文件的地方

我是否需要创建一个
包装器
应用程序来捆绑tubemp gem及其依赖项?如果是这样,如何从
框架文件调用gem?还是我完全错了?

现在忽略,下面是如何做到的:

应用程序绑定为gem,
tubemp

安装并包含gemified应用程序的
Gemfile

gem 'tubemp'
运行配对应用程序的
config.ru
,名为
Tubemp

#!/usr/bin/env ruby
require "tubemp.rb"
Tubemp.run!
require 'rubygems'
require 'bundler/setup' # To allow inclusion via the Bundle/Gemfile
require 'sinatra'       # Sinatra is required so we can call its "set"
require 'tubemp'        # And include the application

# Set the environment to :production on production
set :environment, ENV['RACK_ENV'].to_sym

# And fire the application.
run Tubemp
这两个文件是创建新机架应用程序所需的全部内容,其中包括 Geminated Sinatra应用程序,因此可通过nginx等启动, 乘客或简单地
行李架