gpt4 book ai didi

deployment - 如何将 Sinatra 应用程序作为 gem 发送并部署它?

转载 作者:行者123 更新时间:2023-12-02 19:28:39 27 4
gpt4 key购买 nike

我有一个 sinatra 应用程序并打包了 as a gem 。它的文件布局大致如下:

├── 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

二进制文件也非常简单。 bin/tubemp:

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

但现在我想将其部署为 Rack-app。或者将其部署在 Rack-app 内。至少它应该在生产机器上的 Passenger 下运行。

对于通用应用程序,只需在应用程序所在的目录中添加 config.ru 即可。然后,该文件大致包含并调用 run Tubemp。将 nginx 或 apache 的乘客指向该rackup文件和应用程序所在的目录,启动它。这很有效,直到我把它变成了 gem ;因为现在我不再有“应用程序所在的目录”,除了 gem install tubemp 决定放置文件的目录。

我是否需要创建一个捆绑 tubemp-gem 及其依赖项的 wrapper 应用程序?如果是这样,我如何从rackup文件中调用gem?还是我的做法完全错误?

最佳答案

忽略path-issues现在,方法如下I solved it :

应用程序捆绑为 gem,tubemp

用于安装并包含 gem 化应用程序的Gemfile:

gem 'tubemp'

一个config.ru,它运行名为Tubemp的gemified应用程序:

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

这两个文件是制作新 Rack 应用程序所需的全部文件,其中包括gemified Sinatra-app 等是可启动的槽,例如nginx,乘客或简单的 Rack

关于deployment - 如何将 Sinatra 应用程序作为 gem 发送并部署它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16100398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com