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
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.