私は画像ではないファイルのアップロードで後処理を行う必要があります。クリップにはカスタムのポストプロセッサがありますが、キャリアウェーブでこれを行う方法はありません。カスタムキャリアウェーブプロセッサを作成するにはどうしたらいいですか?
Ruby 1.9.3、Rails 3.2.7およびCarrierWave 0.6.2。
私は画像ではないファイルのアップロードで後処理を行う必要があります。クリップにはカスタムのポストプロセッサがありますが、キャリアウェーブでこれを行う方法はありません。カスタムキャリアウェーブプロセッサを作成するにはどうしたらいいですか?
Ruby 1.9.3、Rails 3.2.7およびCarrierWave 0.6.2。
ビデオのサムネイルを作成するカスタムポストプロセッサを作成する方法についてブログ記事を書いたが、おそらくそれが役に立つと思うだろう。
https://prograils.com/posts/video-encoding-processor-for-carrierwave/
OPの質問には、画像ではありませんファイルを処理する方法でした。
GitHubのこのソースファイルを見てください: carrierwave/lib/carrierwave/uploader/processing.rbとコメントを確認してください。
独自CarrierWaveアップローダーサブクラスを作成しており、このようなあなたのモデルでそれをマウントします:
def MyModel < ActiveRecord::Base
# this is where the uploaded file will be available in your model,
# as a `MyUploader` instance:
#
mount_uploader :uploaded_file, MyUploader
...
end
それはActiveRecordの属性:uploaded_file
に取り付けられていますのでご注意ください。 これは、モデルから:uploaded_file
にアクセスすると、アップロードされた特定のファイルのCarrierWaveアップローダーのインスタンスを取得することを意味します。次のように
あなたは、単にあなたのアップローダーの内側にあなたの処理を定義することができます。
class MyUploader < CarrierWave:Uploader::Base
process :my_custom_processing => [param1,param2,param3]
def my_custom_processing(param1,param2,param3)
...
# e.g. you could call a method which is defined elsewhere,
# which operates on a file:
my_nifty_file_processor(self.uploaded_file)
#
# or you could just do this directly:
uploaded_data = self.uploaded_file.read
...
end
end
my_nifty_file_processor
内部では、あなたは、単にファイルを読むためにで渡されるオブジェクトにread
を呼ぶだろう。
CarrierWaveでは、Uploaderインスタンス(アップロードされたファイルのインスタンス)にread
を呼び出すことができ、そのファイルが読み取られます。
もう一つのヒント:
時々、あなたはファイルがアップロードされたために、あなたのアップローダー内のActiveRecordモデルにアクセスする必要があります。
単純にこのようなあなたのアップローダーコード内でアクセス:
self.model
これは、あなたが直接あなたのARモデルでは、このようなフォーマットとしてアップロードされたファイルに関する追加情報を格納することができます。
ありがとうあなた、私はあなたの説明が現在のトップ・ワンよりも重要であることを発見しました。 – springloaded
このURLはもはや利用できません:( – peanut
本当に、私はここに移動しました:http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –
更新されたリンクはありませんどちらかといえば... – scientiffic