gpt4 book ai didi

ruby - 通过 Sinatra 应用程序将选项传递给 rackup

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:36 24 4
gpt4 key购买 nike

我是 ruby​​ 新手,正在学习 Sinatra。虽然通过要求 'sinatra' 并直接在其下设置路由来创建 Sinatra 站点非常简单且有据可查,但是通过要求 'sinatra/base' 和编写一个继承自 'Sinatra::Base' 的类,虽然仍然相对容易,但文档非常少(可能是因为它是 Sinatra 的最新功能)。

这正是我正在做的。我在 Sinatra 部分没有遇到太多麻烦,但是在 rackup/thin/server 部分我遇到了一些麻烦。显然有两种部署应用程序的方法:使用 Sinatra 本身(使用 run! 方法)和使用 rackup 文件(通常是 config.ru)。

使用 Sinatra 的 run! 方法非常直观并且非常有效,但如果我想在 heroku 上部署我的应用程序,它显然不起作用。事实上,我在 GitHub 上遇到的几乎所有 Sinatra 应用程序都使用 config.ru 文件。

使用 rackup 文件可能同样直观,但我无法理解如何将选项从 Sinatra 应用程序传递到服务器(ir:端口)。我尝试将选项合并到 rackup 的默认选项数组:

MyApp::App.default_options.merge!(
:run => false,
:env => :production,
:port => 4567
)

run MyApp::App

通过直接向应用程序添加选项:

MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production

run MyApp::App

通过在应用程序类中设置选项:

module MyApp
class App < Sinatra::Base
set :port, 4567
set :run, false
set :env, :production

# ...

# config.ru
require 'app'

run MyApp::App

上述所有方法都失败了,要么显示错误消息,要么只是不考虑任何选项。那么,在使用 rackup 文件时,有什么方法可以通过 Sinatra 应用程序将选项传递给 rackup/thin/server 吗?或者问题中的选项应该通过命令行选项直接传递给rackup/thin/服务器?

作为问题的引用,这是我正在构建的小 Sinatra 应用程序:https://github.com/AzizLight/Wiki/

最佳答案

您实际上要在命令行上直接或通过配置文件将选项传递给 thin。查看所有选项:

$ thin -h

对于生产,使用配置文件:

$ thin -C thin-production.yml -R config.ru start

这是一个示例 thin-production.yml 文件:

---
address: localhost
port: 3020
servers: 4
max_conns: 1024
max_persistent_conns: 512
timeout: 30
environment: production
pid: tmp/pids/thin-production.pid
log: log/thin-production.log
daemonize: true

关于ruby - 通过 Sinatra 应用程序将选项传递给 rackup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389181/

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