ネイルガン サーバー 1 台
レール用の binstub を生成することは可能です...</p>
$ bundle binstubs rails
…そしてそれを編集して、JRUBY_OPTS を設定します。
ENV['JRUBY_OPTS'] = '--1.9 --ng --nailgun-port 2113'
load Gem.bin_path('rails', 'rails')
このようにして、クライアントのバンドラーでラップされた部分のみが、バンドラーでラップされたネイルガン サーバーで実行されます。
ネイルガンは信号を伝達しないため、コントローラーを使用して停止することをお勧めします。
class RailsController < ApplicationController
def stop
Process.kill :INT, 0
end
end
基準:
$ time bin/rails -v # modified
Rails 3.0.11
real 0m3.737s
user 0m6.579s
sys 0m0.223s
$ time bin/rails -v # unmodified
Rails 3.0.11
real 0m5.547s
user 0m12.739s
sys 0m0.411s
$ time bundle exec rails -v
Rails 3.0.11
real 0m9.145s
user 0m20.708s
sys 0m0.682s
2 つのネイルガン サーバー
2 番目の「非バンドル実行」サーバーは、理論上は使用できます。明示的な再起動を回避し、強制終了を許可するには (Ctrl-C を 2 回押す)、次のループをお勧めします。
$ while sleep 1; do jruby --ng-server 2112; done
外部クライアントで 2 番目の nailgun インスタンスのポートを指定する必要があります。
$ JRUBY_OPTS='--1.9 --ng --nailgun-port 2112' bin/rails s
パフォーマンスの向上は見られず、「間違った」コンソールに出力が表示されるのは面倒です。しかし、おそらくこれは他のシステムではより高速です。そして、他の誰かがこのアプローチを改善する方法を見るかもしれませんか?