ここで大きな問題があります。私は本当に試しましたが、この問題を自分で解決することはできないので、ここで人々が私を助けてくれることを願っています.
私の問題について話す前に、私は自分のプロジェクトでPaperclipとIMGKitを使用していると言わなければなりませんが、問題は Paperclip にあると思います。
Rails Task
いくつかのサイトのホームページからスナップショットを撮るために を作成します。少し前まではすべて正常に機能していましたが、現在はすべてがダウンしています。実際のデータベースを Heroku から localhost にインポートし (イメージとペーパークリップの移行なしで)、移行を実行し、「public/system」からすべての古いファイルを削除して、タスクを再度実行します (すべての Web サイトのスナップショットを取得するため)。
だから、今私は持っています:
- パスと元の画像が生成されますが、それらをビューに読み込もうとすると、壊れた画像として表示されます。
- Paperclip は、 のパスと変換されたイメージを生成しません
:styles
。 - 画像がないサイトでも、デフォルトの画像が正しく表示されます。
- ImageMagick が機能しているようです。いくつかの画像を変換してみましたが、うまくいきました。
コードを見てみましょう。データベース内のすべてのサイトに対してこのタスクを実行するタスクを実行しているとします。サイトは、私のアーキテクチャでは「アイテム」と呼ばれます。
開発.rb
#config/environments/development.rb
# "which convert" give me this path
Paperclip.options[:command_path] = "/usr/local/bin/"
Item.rb (モデル)
私のタスクは、DB 内のすべてのサイトの「object.save」を呼び出すだけなので、コードはbefore_save
.
has_attached_file :image,
:styles => { :small => "200x147#" },
:convert_options => { :small => "-quality 75 -strip" },
:default_url => '/images/:style/bitcoin-earth.jpg'
before_save :generate_data
def generate_data
self.image = get_image(self.id, self.url_original)
end
# Take snapshot of the website
def get_image(filename, link)
kit = IMGKit.new(link.to_s, :quality => 100, :width => 1024, :height => 768)
file = Tempfile.new(["template_#{filename}", 'png'], 'tmp',
:encoding => 'ascii-8bit')
file.write(kit.to_img(:png))
file.flush
return file
end
意見
<%= image_tag store.image.url %>
Gemfile
gem "paperclip"
を実行しようとするrake paperclip:refresh:missing_styles
と、タスクはエラーなしで非常に速く終了します。しかし、実行しようとすると、次のようrake paperclip:refresh CLASS=Item
になりました。
Image Paperclip::Errors::NotIdentifiedByImageMagickError
はい、私はすでにそれを検索していますが、私の場合の解決策は見つかりませんでした。
少しヒント?
プロジェクトで「要素を検査」し、アイテム画像のソースを表示しようとすると、次のことがわかりました。
http://localhost:3000/public/system/items/images/000/000/216/original/template_21620140109-14507-1c0yszzpng?1389305824
しかし、プロジェクト フォルダーに移動すると、template_21620140109-21209-1yls03opng
. 「?1389305824」が存在しないことに注意してください。上の画像を参照してください。
まあ、それだけだと思います。何が問題になる可能性がありますか? 私は本当にこの問題を解決する必要があります, 助けてください:/
[2013 年 1 月 10 日編集]
Item.rb (モデル) :
before_save :generate_data
def generate_data
file = File.open(get_image(self.id, self.url_original))
self.image = file
file.close
end
def get_image(filename, link)
kit = IMGKit.new(link.to_s, :quality => 100,
:width => 1024, :height => 768)
file = Tempfile.new(["template_#{filename}", '.png'], 'tmp',
:encoding => 'ascii-8bit')
file.write(kit.to_img(:png))
file.flush
return file
end
画像を取得してDBに保存するときにコンソールにエラーは発生しませんが、Paperclipはまだスタイルを生成しません。にアクセスするとlog/development.log
、次のエラーが表示されますが、解決方法がわかりません。
Command :: file -b --mime 'tmp/template_24320140110-17577-80zj1c.png'
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/template_24320140110-17577-80zj1c20140110-17577-mqa2q3.png[0]'
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError>
私たちは近づいていると思います、助けてください:)