0

postmarkapp から添付ファイルを受信して​​います (ここで説明: http://developer.postmarkapp.com/developer-inbound-parse.html#attachments )。

その写真を使ってfb_graph(https://github.com/nov/fb_graph)を使ってfacebookにアップしたい!メソッド (https://github.com/nov/fb_graph/wiki/Photo-and-Album)。

これは簡単で、実際のファイルから例のように :source を指定してテストするとうまくいきます。

ただし、ファイルに書き出すのではなく、base64 でエンコードされた文字列を StringIO に変換し、それを :source 引数として渡すだけです。これは機能せず、次のエラーが発生します。

ruby FbGraph::InvalidRequest: OAuthException :: (#324) Requires upload file

ファイルを書き出したくない理由は、heroku とdelayed_job を使用しているためです。そのため、ジョブが処理されたときに書き出したファイルがまだ残っているかどうかわかりません。ただし、私の現在の計画は、遅延ジョブで画像をデータベースに保存することであるため、それは素晴らしいことです。

ありがとう。

4

1 に答える 1

0

最初にgridfsを使用してmongohqにアップロードしないと、herokuでこれを機能させる方法を見つけることができませんでした。コントローラーのアクション中に書き込まれたこれらのファイルは、delayed_job ワーカーには表示されないため、cedar 一時ファイル システムを使用することはできません。

だから、私はこれをやっています。

  1. postmarkapp からのアップロードを受信 (1 つの dyno をブロック)
  2. グリッド fs を使用して mongohq に書き込みます (これには、1 つの dyno をブロックする 1 つのアップロードが含まれます)
  3. delayed_job を使用してジョブをキューに入れる
  4. mongohq から読み返す (ダウンロード中に 1 つのワーカーをブロックする)
  5. 投稿時にFBに再アップロード

とにかくmongohqへのアップロードの初期ブロックコストが発生する場合は、Facebookに直接投稿しないのはなぜですか? そのアップロードは、不明な理由で FB にアップロードするよりもはるかに高速だからです。

heroku での正しい答えは、消印からのこれらのコールバックを処理する node.js dyno を用意して、消印からの読み取り中または mongohq (または facebook) への書き込み中に dyno がブロックされないようにしてから、ノードを作成するために追加の作業を行うことです。 app は rails app とやり取りして同期を維持します。

于 2012-07-07T05:26:46.057 に答える