Zabawa z paperclip'em

Witam własnie kombinuje w jaki sposób napisać moduł do paperclipa, no oczywiście jest to powiązane z moim poprzednim postem ale nie w tym rzecz.
poczytałem dokumentacje i fajnie jest opisany jednak chodzi mi o to w jaki sposób można testować swój moduł do papeclipa
czy działa poprawnie etc etc
pozdrawiam
i dziękuję za pomoc…

w lib/paperclip ladujesz jakis plik, dziedzisz po klasie i piszesz tak jak w przykladach, ogólnie chodzi o to ze budujesz paramtery do polecenia i wywolujesz je

i pozniej w modelu nazwe dajesz jego i tyle

http://dev.thoughtbot.com/paperclip/classes/Paperclip/Processor.html

przykład z google, nie wiem czy działa, ale opis jest co i jak:

[code=ruby]*** RAILS_ROOT/lib/paperclip_processors/paperclip_sharpen_image.rb ***

require ‘RMagick’

module Paperclip
class SharpenImage < Paperclip::Processor

    def initialize file, options = {}
        super
        @file             = file
        @format           = options[:format]
        @current_format   = File.extname(@file.path)
        @basename         = File.basename(@file.path,

@current_format)
end

    def make
        src = @file
        image = Magick::Image.read(File.expand_path

(src.path)).first

        image.sharpen(10, 10)!

        # Create Templfile object and write image data to its file
        dst = Tempfile.new([@basename, @format].compact.join("."))
        dst.binmode
        image.write(File.expand_path(dst.path))

        # Return Tempfile object to Paperclip for further handling
        return dst
    end
end

end

*** ingredient.rb ***

has_attached_file :photo, :styles => {:small => “63x75”},
:processors => [:sharpen_image][/code]

hmmm extraa a jakiś taki bardzo prosty przykładzik z wykorzystaniem funkcji systemowych mógł bym prosić ???

google?

[code=ruby]module Paperclip

Paperclip processors allow you to modify attached files when they are

attached in any way you are able. Paperclip itself uses command-line

programs for its included Thumbnail processor, but custom processors

are not required to follow suit.

Processors are required to be defined inside the Paperclip module and

are also required to be a subclass of Paperclip::Processor. There is

only one method you must implement to properly be a subclass:

#make, but #initialize may also be of use. Both methods accept 3

arguments: the file that will be operated on (which is an instance of

File), a hash of options that were defined in has_attached_file’s

style hash, and the Paperclip::Attachment itself.

All #make needs to return is an instance of File (Tempfile is

acceptable) which contains the results of the processing.

See Paperclip.run for more information about using command-line

utilities from within Processors.

class Processor
attr_accessor :file, :options, :attachment

def initialize file, options = {}, attachment = nil
  @file = file
  @options = options
  @attachment = attachment
end

def make
end

def self.make file, options = {}, attachment = nil
  new(file, options, attachment).make
end

end

Due to how ImageMagick handles its image format conversion and how Tempfile

handles its naming scheme, it is necessary to override how Tempfile makes

its names so as to allow for file extensions. Idea taken from the comments

on this blog post:

http://marsorange.com/archives/of-mogrify-ruby-tempfile-dynamic-class-definitions

class Tempfile < ::Tempfile
# Replaces Tempfile’s +make_tmpname+ with one that honors file extensions.
def make_tmpname(basename, n)
extension = File.extname(basename)
sprintf("%s,%d,%d%s", File.basename(basename, extension), $$, n.to_i, extension)
end
end
end[/code]
po tym dziedziczysz i tyle.

Przykładów jest wiele w google

http://www.google.pl/search?q=paperclip+processors&ie=utf-8&oe=utf-8&aq=t&rls=org.gentoo:en-US:unofficial&client=firefox-a

Co do testowania… Jeśli mnie pamięć nie myli to “procesory”, ładowane są podczas podnoszenia aplikacji. Innymi słowy, jeśli zależy Ci na testowaniu procesorów “na żywej aplikacji” po każdej ich zmianie konieczny jest rastart serwera.