ペーパークリップでjavascriptファイルをアップロードしようとしています
No handler found for "application/javascript"
.../paperclip-3.2.0/lib/paperclip/io_adapters/registry.rb:19:in `handler_for'
.../paperclip-3.2.0/lib/paperclip/io_adapters/registry.rb:29:in `for'
.../paperclip-3.2.0/lib/paperclip/attachment.rb:91:in `assign'
.../paperclip-3.2.0/lib/paperclip.rb:196:in `block in has_attached_file'
これをテンプレートシステムの一部として使用しています。私のseed.rbの一部として(フォーム経由でこれをアップロードしていないので)、ディレクトリ内のファイルをループし、それぞれに新しいJavascriptオブジェクトを作成し、「パス」、「拡張子」、「本体」を設定してからコールバックは、検証前に「source」という名前のクリップの添付ファイルを設定し、保存後に「preview」という名前の別の添付ファイルを設定します。でエラーが発生しcompile_preview
ていますself.preview = file
models/javascript.rb
has_attached_file :source,
:default_style => :original,
:path => ":rails_root/tmp/:configured_path",
:url => ":configured_url",
:default_url => "/assets/missing.gif",
:use_timestamp => false,
:storage => :filesystem
before_validation :set_source
before_post_process { false }
after_save :compile_preview
validates :body, :presence => true,
:length => { :maximum => 500.kilobytes }
validates :path, :presence => true
validates :format, :presence => true,
:inclusion => ["js"]
validates :handler, :presence => true,
:inclusion => ["coffee", "js"]
def set_source
file = StringIO.new(self.body)
file.class.class_eval { attr_accessor :original_filename, :content_type }
file.original_filename = "#{File.basename(self.path)}.#{self.extension}"
file.content_type = "application/javascript"
self.source = file
end
def compile_preview
file = StringIO.new(self.render)
file.class.class_eval { attr_accessor :original_filename, :content_type }
file.original_filename = self.source_file_name
file.content_type = self.source_content_type
self.preview = file
self.save
end
別のモデルで使用したため、これの 99% が機能することはわかっていますが、問題を引き起こしているのは「アプリケーション/javascript」だけです。「text/plain」と古い「text/javascript」MIME タイプも試しましたが、同じエラーが発生します。
以前にこの方法でハンドラーに問題があったという人は誰も言及していませんし、ペーパークリップもそれについて言及していません。
Rails 3.2.8 と Paperclip 3.2.0 を使用しています
私のhandler
属性がペーパークリップと競合している可能性はありますか?
これでどこが間違っているのか、誰かが洞察を持っていますか?