Rob*_*udi 12 ruby rack thin sinatra rackup
我是红宝石的新手,学习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
Run Code Online (Sandbox Code Playgroud)
通过直接向应用添加选项:
MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production
run MyApp::App
Run Code Online (Sandbox Code Playgroud)
通过在应用程序类中设置选项:
module MyApp
class App < Sinatra::Base
set :port, 4567
set :run, false
set :env, :production
# ...
# config.ru
require 'app'
run MyApp::App
Run Code Online (Sandbox Code Playgroud)
上述所有方法都失败了,要么显示错误消息,要么不考虑任何选项.那么在使用rackup文件时,有没有办法通过Sinatra应用程序将选项传递给rackup/thin/the sever?或者问题中的选项应该通过命令行选项直接传递给rackup/thin/the sever?
作为问题的参考,这里是我正在构建的小型Sinatra应用程序:https://github.com/AzizLight/Wiki/
Cli*_*chl 11
您可以直接或通过配置文件在命令行上将选项传递给精简版.查看所有选项:
$ thin -h
Run Code Online (Sandbox Code Playgroud)
对于生产,请使用配置文件:
$ thin -C thin-production.yml -R config.ru start
Run Code Online (Sandbox Code Playgroud)
这是一个示例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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8635 次 |
| 最近记录: |