私が本当に理解していないことの1つは、カスタム起動オプションをmongrelインスタンスに渡す方法です。
一般的なアプローチは環境変数の使用であることがわかりますが、私の環境では、Railsアプリケーションが多くの異なるクライアントにサービスを提供しているため、これは機能しません。多くのコードはクライアント間で共有されますが、既存の機能をオーバーロードまたは拡張したり、新しい機能を導入したりするためにコントローラーとビューをサブクラス化することによって実装する多くの違いもあります。これをすべて機能させるには、クライアント固有のモジュールへのパスをモジュールのロードパス($:)に追加するだけです。
特定のクライアントのアプリケーションを起動するために、TARGET=AMAZONEなどの環境変数を使用できるようになりました。残念ながら、一部のシステムでは、複数の雑種クラスターを実行しており、各クラスターは異なるクライアントにサービスを提供しています。これらのシステムのいくつかはWindowsで実行され、mongrelを起動するためにmongrel_servicesをインストールしました。明らかに、これは私の環境変数を不適切にします。
この余分なデータをアプリケーションに渡すことは、実際の課題であることが証明されています。まず、mongrel_rails service_installは、文書化されていない[カスタム]コマンドラインパラメーターを拒否します。インストールプログラムを使用してサービスをインストールするのは簡単なので、私はあまり心配していません。
ただし、実行時にカスタムコマンドラインオプション--targetをmongrel_rails startに渡すようにmongrel_servicesをインストールしても、mongrel_railsがスイッチを認識しないため、エラーが発生します。
だからここに私が見たものがありました:
追加のパラメーターを渡します。
mongrel_rails start --targetXYZ..。
構成ファイルを使用してtarget:XYZを追加してから、次の手順を実行します。
mongrel_rails start -C x:\ myapp \ myconfig.yml
ファイルを変更します。
Ruby \ lib \ ruby \ gems \ 1.8 \ gems \ mongrel-1.1.5-x86-mswin32-60 \ lib \ mongrel \ command.rb
おそらく--scriptオプションを使用できますが、その上で見つけたすべてのドキュメントはUnix用でした
1と2は単に機能しません。私は4で遊んだが、何もできなかった。ですから、3を使うしかありませんでした。比較的単純ですが、rubyライブラリのコードを変更するのは嫌いです。
特に残念なのは、2が機能しないことです。設定ファイルに他の[カスタム]オプションを追加するのはどうしてそんなに不合理なのですか?実はこれはレールに欠けている基本的な部分だと思います。どういうわけか、アプリケーションは、期待するコマンドライン引数を登録してアクセスできる必要があります。
現在のインフラストラクチャを使用してこれをよりエレガントに行う方法を誰かが知っているなら、私はチョコレートの魚をプレゼントします!!!