S3に画像ファイルを保存しています。そのファイルをフォームデータとしてリモートサイトにアップロードしたいと思います。
コントローラライン:
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => File.new(asset.avatar.url) })
Asset.avatar.urlは、S3にあるペーパークリップに保存されたファイルです。それはそこにあります。公的にアクセス可能です。
しかし、私はErrno :: ENOENT(そのようなファイルやディレクトリはありません)をURLで取得し続けます...それは機能します!
私はおそらくここで簡単なものが欠けています。誰かアイデアはありますか?
**編集:解決済み**
open-uriを使用してから、open()を使用しました。それでもサーバーにダウンロードされますが、少なくとも機能します。そして視覚的にはよりシンプルに見えます。=)
修正方法は次のとおりです。
require 'open-uri'
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => open(asset.avatar.url) })
Open-uriはrubyの一部であるため、gem(つまり、rest-client)をインストールする必要はありません。コードに必要なだけです。
どこかに.readが必要だと思いましたが、それがなくても問題なく動作するようです。