2012-10-03 8 views
6

Paperclipには、ビューに含める添付ファイルのURLを取得するための.urlメソッドが用意されています。Rubyからクリップクリップを開く標準/正しい方法は何ですか?

実際に添付ファイルをRubyからファイルとして開く必要があります。

約6か月前に、Paperclipの最新リビジョンで添付ファイルオブジェクトのto_fileを呼び出すことができました。それは文書化されていませんでしたが、一貫して機能しました。しかし、ある時点では、それは動作を停止しました。

ActiveModelオブジェクトが保存された後でバリデーター(この場合はまだ最終的な場所に保存されていない)またはまったく別のメソッドからファイル自体を開くことができるようにしたいファイルは最終的な場所に移動されました。これはAmazon S3上にある可能性があります)。

のオプションがあるように思える:

file = File.new(object.attachment.path) 

ローカルファイルだけでなく、S3上のもので動作しています...。または:

file = object.attachment.queued_for_write[:original] 

...最初の保存(私は思う)の前にのみ動作しますか?

ファイルを開くだけの簡単な方法があるようです(Amazon S3などの場合は、一時的な場所にコピーすることがあります)、私はその答えが何かを持っていると推測していますio_adaptersを使っていますが、コード(とStackOverflowのかなりの質問)を読んだところ、私はまだ困惑しています。

すべての場合に機能するファイルとしてクリップクリップを開く標準的な方法はありますか?これはあなたのファイルを取得します

答えて

4

(仮定yourmodelが、これはファイルが既に保存されている必要はありませんfile

require 'open-uri' 

file = open(yourmodel.file.url) 
+1

を付ける?ファイルが一時ときに正しい方法で動作するはずです。 – DDDD

+2

これはありませんファイルがS3上にないときに動作します(例えば、devとprod)。 – user1032752

関連する問題