1

ほとんどの Web アプリケーションはかなり標準的な CRUD です。作成時にライブでクライアントにプッシュするデータが必要です。AJAX 用に別のより軽量なスタック (Sinatra や EventMachine など) を実行する価値はありますか?

1 つのスタックを実行すると、Rails のオーバーヘッドが発生します。これにはより多くのRailsプロセス/サーバーが必要になる可能性があります.データベースクエリなしでこれらの間で通信するにはどうすればよいですか? ゼロMQ? 最後に、Rails は何百もの同時接続を処理するのに適していますか?

2 つのスタックを実行する場合、承認ロジックを複製する必要があります。

どの方法が成功しましたか?

4

1 に答える 1

1

ActionController::MetalRails 3 では、新しいルーティング構文を使用し、コントローラーを から継承するか、定義するだけで、非常に簡単に Rack アプリをフックできますself.call

Railscast #222 を読んで(または視聴して)、 wycats のブログをチェックしてください (抜粋の例については以下を参照してください)。

この道をたどる場合に対処する必要がある追加のケースについてはすでに認識しているので、行き詰まる前にそれが必要であることを確認してください。通常、プログラマーよりもサーバーに $ を投下する方が安価です。ハードウェアと帯域幅はかなり安価です。

個人的には、アプリが既に実行されていてトラフィックが多すぎて詰まらない限り、これは「時期尚早の最適化」に該当するように感じます。


いくつかの良い例:

# config/routes.rb
# Hook in Sinatra
root :to => HomeApp
# Write your own barebones Rack compatible code
match "/processes" => ProcessesApp
# Even specify an inline proc
match "/heartbeat", :to => proc {|env| [200, {}, ["App is running"]] }

# /lib/home_app.rb
class HomeApp < Sinatra::Base  
  get "/" do  
    "Hello from Sinatra"  
  end  
end  

# lib/processes_app.rb
class ProcessesApp  
  def self.call(env)  
    [200, {}, [`ps -axcr -o "pid,pcpu, pmem, time, comm"`]]  
  end  
end  
于 2010-11-01T07:30:32.823 に答える