JRuby経由でローカルRailsサーバー(WEBrick)を実行していて、最終的にTorqueboxで実行されるコードをテストしたいとします。私はENV_JAVA
経由でいくつかのカスタムJavaシステムのプロパティにアクセスしようとしています。これらのシステムプロパティはTorquebox上で実行してローカルでコードをテストするときに利用できます。私はコマンドラインでシステムプロパティに "-J"引数を渡しています。
JRubyだけを実行すると、すべて正常に動作し、自分のカスタムプロパティにアクセスできます。jrubyからRailsサーバーへシステムシステムプロパティを渡す方法
C:\jruby\jruby-1.7.24\bin\jruby.exe -J-Dmy_prop=my_value -e "puts ENV_JAVA['my_prop']"
これは単に出力するために "my_value"を出力します。
私の問題は、ローカルRailsサーバーを実行しているときに、これらのカスタムプロパティにアクセスしようとしています。ローカルのRailsサーバーを起動するために私のコマンドラインは次のようなものになります。
C:\jruby\jruby-1.7.24\bin\jruby.exe -J-Dmy_prop=my_value C:\jruby\jruby-1.7.24\bin\rails s
をWEBrickには、起動すると、私のカスタムプロパティ"my_prop"
はENV_JAVA
ではなくなり。 Rails :: AppRailsLoaderモジュールの中で、exec_app_rails
は、カーネルexec
メソッドを呼び出してコマンド引数を渡すだけで、現在のプロセスを別のものに置き換えるだけです。
これはカスタムプロパティを保持しません。誰も私がこれを回避する方法を知っていますか?私は現在、Rails 4.2.6を実行しています。 Rails 5のように、モジュール名はRails::AppLoader
に変更されました。
誰もいませんか?うわー、私はこれが前に起きていないことに驚いています。その間、この問題を回避するために、私はこの仕事をするために柵の宝石を編集しなければなりませんでした。 'execのRUBY、-D-Dmy_prop = my_value、exeファイル、* ARGVに ' execのRUBY、exeファイルを、* ARGV' :宝石のlib /レール/ app_rails_loader.rbでは、私が呼び出すexec_app_rails方法を変更しなければなりませんでした' –
コメントにコードを入れるのはとても苦痛です...下記を参照してください –