如何推出一款西纳特拉应用作为宝石和部署呢?(How to ship a Sinatra applic

2019-08-31 13:02发布

我有一个西纳特拉应用程序和打包的作为宝石 。 它的文件布局看起来大致是这样的:

├── bin
│   └── tubemp
├── lib
│  └── tubemp.rb
├── Gemfile
└── tubemp.gemspec

我可以安装并运行它只是罚款。 调用ruby lib/tubemp.rb触发应用程序也是如此,因为西纳特拉使其自启动。 tubemp.rb

class Tubemp < Sinatra::Application
  get '/' do
    erb :index, :locals => { :title => "YouTube embeds without third party trackers." }
  end
end

二进制是真的很简单。 bin/tubemp

#!/usr/bin/env ruby
require "tubemp.rb"
Tubemp.run!

但现在我想部署此作为机架应用。 或机架式应用中部署它。 至少它应该用于生产的机器上的乘客下运行。

随着通用应用程序它是添加一个简单config.ru在申请住在一个目录。 这个文件的话,大致包括和调用run Tubemp 。 nginx的指点或Apache的在dir其中该rackup文件和应用程序的生命,开始它的乘客。 这个工作,到那里我做了一个宝石的地步; 因为现在我不再有“的目录中的应用程序生命”,另又在哪里gem install tubemp决定放置文件。

我需要创建一个wrapper应用至极捆绑tubemp宝石和它的依赖? 如果是这样,我怎么叫从宝石rackup文件? 或者,我要在这完全错了吗?

Answer 1:

忽略路径的问题 ,现在,这里是如何我解决它 :

该应用程序捆绑在一起的宝石, tubemp

一个Gemfile安装和包括gemified应用:

gem 'tubemp'

一个config.ru它运行gemified应用程序,叫做Tubemp

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

这两个文件是所有需要做出新的机架的应用程序,其中包括gemified西纳特拉,应用程序,因此可引导槽例如nginx的,乘客或者干脆rackup



文章来源: How to ship a Sinatra application as a gem and deploy it?