Sinatraを学ぶのは初めてのルビーです。 'sinatra'
を要求してSinatraサイトを作成し、ルートを直接設定するのはかなり簡単で文書化が容易ですが、'sinatra/base'
を要求してアプリケーションを作成し、'Sinatra::Base
'から継承するクラスを作成するのは比較的簡単ですが、これはSinatraのかなり最近の機能だからです)。Sinatraアプリケーションを使ってラックアップにオプションを渡す
これはまさに私がやっていることです。私はSinatraの部分であまりにも多くの問題を抱えていませんが、私はラック/薄い/サーバーの部分に少し問題があります。 Sinatra自体(run!
メソッドを使用)を使用し、ラックアップファイル(通常はconfig.ru
)を使用して、アプリケーションを展開する方法は2通りあります。
Sinatraのrun!
メソッドを使用する方法は非常に直感的で、魅力的なように機能しますが、私がherokuにアプリケーションをデプロイしたい場合は、明らかに動作しません。実際、私がGitHubで遭遇したほとんどすべてのSinatraアプリは、config.ru
というファイルを使用しています。
ラックアップファイルを使用すると、同じように直感的になるかもしれませんが、Sinatraアプリケーションからサーバーにオプションを渡す方法を理解できません(ir:ポート)。
module MyApp
class App < Sinatra::Base
set :port, 4567
set :run, false
set :env, :production
# ...
# config.ru
require 'app'
run MyApp::App
すべて:アプリケーションクラスの中からオプションを設定することにより、
MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production
run MyApp::App
:アプリへの直接のオプションを追加することにより、
MyApp::App.default_options.merge!(
:run => false,
:env => :production,
:port => 4567
)
run MyApp::App
:私はrackupのデフォルトのオプションの配列にオプションをマージしようとしました上記の方法は、エラーメッセージを表示するか、またはオプションを考慮しないことによって失敗しました。だから、ラックアップファイルを使用するときに、Sinatraアプリ経由でラックアップ/シン/サーバーにオプションを渡す方法はありますか?または、質問のオプションは、コマンドラインオプションを使用して直接rackup/thin/severに渡す必要がありますか? https://github.com/AzizLight/Wiki/
どうもありがとう:)完璧に動作 –