私はルビーに不慣れで、シナトラを学んでいます。直下のルートを要求して設定することでSinatraサイトを作成するの'sinatra'
は非常に簡単で、かなり文書化されていますが、''sinatra/base'
から継承するクラスを要求して作成することでアプリケーションを作成すること'Sinatra::Base
は、比較的簡単ですが、文書化が非常に不十分です(おそらく、シナトラのかなり最近の機能)。
そしてそれはまさに私がしていることです。シナトラの部分ではあまり問題はありませんが、ラックアップ/シン/サーバーの部分で少し問題があります。どうやら、アプリケーションをデプロイする方法は2つありますrun!
。Sinatra自体を使用する(メソッドを使用する)方法と、ラックアップファイルを使用する方法(通常はconfig.ru
)です。
Sinatraのrun!
方法を使用することは非常に直感的で魅力のように機能しますが、アプリをherokuにデプロイしたい場合は機能しないようです。実際のところ、GitHubで遭遇したほとんどすべてのSinatraアプリはconfig.ru
ファイルを使用しています。
ラックアップファイルの使用も同様に直感的かもしれませんが、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
上記のすべての方法は、エラーメッセージを表示するか、オプションを考慮しなかったために失敗しました。それで、ラックアップファイルを使用するときにSinatraアプリを介してラックアップ/シン/サーバーにオプションを渡す方法はありますか?または、質問のオプションをコマンドラインオプションを介してラックアップ/シン/サーバーに直接渡す必要がありますか?
問題への参照として、これが私が構築している小さなSinatraアプリケーションです:https ://github.com/AzizLight/Wiki/