2009-05-21 17 views

答えて

7

mod_rubyを実行しているすべてのApacheインスタンスは、Rubyインタプリタを共有します。これは、共有ホスト上、またはマシンごとに複数のRailsアプリケーションが実行されている環境では、まったく使用できないことを意味します。 1つのマシン上で同じアプリケーションの複数のコピーを実行することは可能かもしれませんが、バグを追跡するのが容易ではありません。レールはシングルスレッドなので、1台のマシンにつき1つのルビプロセスを実行することは考えられないことです。

また、それをすべて実行するわけではありません。より多くの深さでの議論については

、チェックアウトthis Phusion employee's blog

2

「mod_rubyとは、名前空間内のすべてのお互いの上にそのアプリの 散歩を意味し、Apacheプロセスごとに通訳を使用しています。少なくとも、Railsのために、それは 許容できないのですしたがって、mod_rubyが必要な場合は、Apacheの設定ごとに1アプリです。 " - あなたはまだ彼らのホスティング環境にルビーを含めるようにしようとしなかったmod_ruby FAQ

Dreamhostをチェックアウトし、それを使用したい場合には、いくつかを揶揄されていますことを今David Heinemeier Hansson

、このこの努力から彼らの結論に自分のブログから。

7

mod_rubyは共有Rubyインタプリタを生成するとの回答がありましたが、これは特に問題となるのは、クラスが相互に絡み合うということです。たとえば、特定のデータベースへの接続を定義するActiveRecord :: Baseを考えてみましょう。このクラスの状態は、さまざまなRailsアプリケーションによって異なります。そのため、同じインタプリタで複数のRailsアプリケーションを実行すると、深刻なクラスの戦いが発生します。

もう1つの答えは、Railsはシングルスレッドであると述べましたが、これはRails 2.2.2では必ずしも当てはまりません。私はその答えにコメントとしてこれを残したいが、私はカルマstraitjacketにいる:)

関連する問題