0

私はラックの完全な初心者です。私は2つのsinatraクラスengine_a.rbとengine_b.rbを持っています

次のようなruファイルを使用してrackoptionsを渡したい

$ rackup config.ru -O engine=a

次のようなラックを使用したセレクティブ ローディングを使用したい

require 'engine_a'
require 'engine_b'

if rackoption == a
  run eng_a.new
else if rackoption == b
  run eng_b.new
end

同じことをするという私のアナロジーが間違っているかどうか教えてください。そうでない場合、誰かが同じ動作を実現するのに役立つコードを手伝ってくれませんか。これらに関する十分なチュートリアルがありませんでした。

また、ラックがそれを行うための適切なツールかどうかも教えてください。

4

1 に答える 1

0

@padde は良い点を指摘してくれます。より多くの情報を提供する必要があります。ただし、選択的に実行する簡単な方法の 1 つは、環境変数を使用することです。明らかな古典的な使用法は、いくつかのものを本番環境で実行し、いくつかのものを開発環境などで実行することです。

if ENV["RACK_ENV"] == "production"
  # do this
elsif ENV["RACK_ENV"] == "staging"
 # do something almost the same
else
 # do something quite different
end

通常、Rack はこれらの変数を設定しますが、別の変数を使用することもできます。コマンドラインから実行したい場合は、env MYVAR=1 bin/rackup config.ru.

@padde のリクエストを検討し、あなたが最善だと信じている実装ではなく、あなたの目標を教えてください(何が最善か本当にわからないか、そうでなければ質問しないことを考慮してください;) そうすれば、おそらくより良い答えが得られるでしょう。

于 2013-06-19T15:37:47.050 に答える