0

そのため、Windows 7、Rails 3、最新のペーパークリップgem、およびImageMagick-6.7.7-Q16(cmdでテスト済み)を使用しています。PATH環境が更新されています。

モデル

class Image < ActiveRecord::Base
  attr_accessible :description, :user_id, :file
  has_attached_file :file, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :storage => :filesystem

  belongs_to :user

  #validations
  validates_attachment_presence :file
  validates_attachment_size :file, :less_than => 4.megabytes
  validates_attachment_content_type :file, :content_type => [ 'image/gif', 'image/png', 'image/x-png', 'image/jpeg', 'image/pjpeg', 'image/jpg' ]
end

<%= form_for(@image, :html => { :multipart => true }) do |image| %>

    <div class="control-group">
      <%= image.label :description, "Description", :class => 'control-label' %>
      <div class="controls">
        <div class="input-prepend">
          <%= image.text_field :description %>
        </div>
      </div>
    </div>

    <div class="control-group">
      <%= image.label :file, "Image", :class => 'control-label' %>
      <div class="controls">
        <div class="input-prepend">
          <%= image.file_field :file %>
        </div>
      </div>
    </div>

    <%= image.hidden_field :user_id, :value => current_user.id %>

    <div class="actions">
      <%= image.submit "Upload Image", :class => 'btn btn-primary btn-medium' %>
    </div>
<% end %>

イニシャライザーの私のpaperclip.rb

require "paperclip"
Paperclip.options[:command_path] = 'C:\Program Files (x86)\ImageMagick-6.7.7-Q16'
Paperclip.options[:swallow_stderr] = false
Paperclip.options[:whiny_thumbnails] = true

トリミングしなくてもすべて正常に機能しています(:styles => {:medium => "300x300>"、:thumb => "100x100>"})。しかし、サムネイルを作成したい場合、ペーパークリップはこのエラーをスローします

Command :: identify -format %wx%h "C:/Users/Zaraka/AppData/Local/Temp/DSCN630520120519-7696-18l3nw5.JPG[0]"
Command :: convert "C:/Users/Zaraka/AppData/Local/Temp/DSCN630520120519-7696-18l3nw5.JPG[0]" -resize "300x300>" "C:/Users/Zaraka/AppData/Local/Temp/DSCN630520120519-7696-18l3nw520120519-7696-1p8rcsr"
[paperclip] An error was received while processing: #<Paperclip::Error: There was an error processing the thumbnail for DSCN630520120519-7696-18l3nw5>
Command :: identify -format %wx%h "C:/Users/Zaraka/AppData/Local/Temp/DSCN630520120519-7696-18l3nw5.JPG[0]"
Command :: convert "C:/Users/Zaraka/AppData/Local/Temp/DSCN630520120519-7696-18l3nw5.JPG[0]" -resize "100x100>" "C:/Users/Zaraka/AppData/Local/Temp/DSCN630520120519-7696-18l3nw520120519-7696-tx3bmo"
[paperclip] An error was received while processing: #<Paperclip::Error: There was an error processing the thumbnail for DSCN630520120519-7696-18l3nw5>

アップロードされた画像は一時フォルダにもないことがわかったので、作成された画像は0バイトしかありません。ペーパークリップや画像のアップロードに問題がある場合、私はここで完全に立ち往生しています。どんな助けでもありがたいです

4

1 に答える 1

1

これはおそらく、IMを正しく指していないことを意味します。まだインストールしていないか、期待どおりに見つからないかのどちらかです。代わりに二重円記号を使用してください:'C:\\Program Files (x86)\\ImageMagick-6.7.7-Q16'。(空白を避けるために、8.3ファイル名システムを使用して通常のスラッシュでパスを識別することもできます。)

最新バージョンのペーパークリップ(3.1.4)を使用している場合、WindowsではGnuWin32からファイルパッケージをインストールすることをお勧めします。この投稿を参照してください:https ://github.com/thoughtbot/paperclip/issues/926 。

最後に、ファイル名で英語以外の文字をサポートするために、コカインにモンキーパッチを適用することをお勧めします。イニシャライザーの間にcocaine_path.rbを配置しました。'iso-8859-1'は適切なエンコーディングではない可能性があることに注意してください。

cocaine_pacth.rb:

if RUBY_PLATFORM == "i386-mingw32"
  module Cocaine
    class CommandLine
      def run
        output = ''
        begin
          with_modified_path do
            @logger.info("\e[32mCommand\e[0m :: #{command}") if @logger
            ec = Encoding::Converter.new("utf-8", "iso-8859-1")
            output = self.class.send(:'`', ec.convert(command.encode('UTF-8')))
          end
        rescue Errno::ENOENT
          raise Cocaine::CommandNotFoundError
        end
        if $?.exitstatus == 127
          raise Cocaine::CommandNotFoundError
        end
        unless @expected_outcodes.include?($?.exitstatus)
          raise Cocaine::ExitStatusError, "Command '#{command}' returned #{$?.exitstatus}. Expected #{@expected_outcodes.join(", ")}"
        end
        output
      end
    end
  end
end

これは、過去数日間にWindows上のペーパークリップで発生したすべての問題をカバーしています。お役に立てば幸いです。

于 2012-08-02T13:08:13.527 に答える