1

Rails で、paperclip + resque で画像をアップロードして処理しますが、メモリを消費しすぎて非常に遅いです。バックグラウンドでこれらのものを処理するために node.js を試してみたいと思います。

rails と node.js の両方を同じポートでルーティングすることは可能ですか?

Rails を扱うルートもあれば、node.js へのルートもあります。例えば、

レール

/users/:user_id/albums(.:format)          
/users/:user_id/albums/new(.:format)      
/users/:user_id/albums/:id/edit(.:format)

node.js

/uploads

ありがとう。

ソリューション

node.js (ポート 8080) に POST /uploads を処理して、その他のレールを処理します。以下は私のnginx confです

  location = /uploads {
    proxy_pass http://127.0.0.1:8080/uploads;
  }

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

ありがとう @Matthew Ratzloff

4

2 に答える 2

2

もちろんそうだ。リバース プロキシを使用して、選択したパスを Node.js サーバーに転送し、他のパスを Rails アプリに転送できます。

さて、これでよろしいでしょうか?良い...

より良い解決策は、引き続き Rails から Resque でジョブを作成することですが、Coffee-Resqueなどを使用して実際にジョブを処理することです。それが私が行くルートです。

それが役立つことを願っています!

于 2012-06-20T20:43:50.293 に答える
1
No; 10.times { No }

しかし。これをやりたかったとしましょう。するでしょう:

  1. ファイルを S3 に直接アップロードする
  2. ファイルをダウンロードして処理するように Node に要求を送信します
  3. 完了したら、HTTP 要求を Rails に送信して、そのデータベースをファイル属性で更新します。
于 2012-06-20T13:22:32.453 に答える