I have a stream_type field on my form. When the form submits,
instance.stream_type is blank. To verify this, in my custom processor
(class ProcessAudio < Processor), I do puts options[:geometry].
  has_attached_file :media,
                    :styles => { :original => Proc.new { |instance|
instance.stream_type } },
                    :url => ''/assets/artists/:artist_id/
songs/:id/:style.:extension'',
                    :path => '':rails_root/public/assets/
artists/:artist_id/songs/:id/:style.:extension'',
                    :processors => [:process_audio]
If I provide a fixed string. For example:
  has_attached_file :media,
                    :styles => { :original => ''30'' },
                    :url => ''/assets/artists/:artist_id/
songs/:id/:style.:extension'',
                    :path => '':rails_root/public/assets/
artists/:artist_id/songs/:id/:style.:extension'',
                    :processors => [:process_audio]
puts options[:geometry] = 30. Why does is it NOT work with proc?
What is wrong?
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
anyone?? Been on this for days without a solution.... thinking that I may have to switch to another gem just to get this feature to work... On Oct 7, 3:16 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I have a stream_type field on my form. When the form submits, > instance.stream_type is blank. To verify this, in my custom processor > (class ProcessAudio < Processor), I do puts options[:geometry]. > > has_attached_file :media, > :styles => { :original => Proc.new { |instance| > instance.stream_type } }, > :url => ''/assets/artists/:artist_id/ > songs/:id/:style.:extension'', > :path => '':rails_root/public/assets/ > artists/:artist_id/songs/:id/:style.:extension'', > :processors => [:process_audio] > > If I provide a fixed string. For example: > > has_attached_file :media, > :styles => { :original => ''30'' }, > :url => ''/assets/artists/:artist_id/ > songs/:id/:style.:extension'', > :path => '':rails_root/public/assets/ > artists/:artist_id/songs/:id/:style.:extension'', > :processors => [:process_audio] > > puts options[:geometry] = 30. Why does is it NOT work with proc? > > What is wrong?-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
What are you trying to accomplish here? What do you want the form to send to Paperclip, or what do you want Paperclip to send to your model? Walter On Oct 7, 2010, at 3:16 AM, Christian Fazzini wrote:> I have a stream_type field on my form. When the form submits, > instance.stream_type is blank. To verify this, in my custom processor > (class ProcessAudio < Processor), I do puts options[:geometry]. > > has_attached_file :media, > :styles => { :original => Proc.new { |instance| > instance.stream_type } }, > :url => ''/assets/artists/:artist_id/ > songs/:id/:style.:extension'', > :path => '':rails_root/public/assets/ > artists/:artist_id/songs/:id/:style.:extension'', > :processors => [:process_audio] > > If I provide a fixed string. For example: > > has_attached_file :media, > :styles => { :original => ''30'' }, > :url => ''/assets/artists/:artist_id/ > songs/:id/:style.:extension'', > :path => '':rails_root/public/assets/ > artists/:artist_id/songs/:id/:style.:extension'', > :processors => [:process_audio] > > puts options[:geometry] = 30. Why does is it NOT work with proc? > > What is wrong? > > -- > You received this message because you are subscribed to the Google > Groups "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails- > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > . > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en > . >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Your main problem ( and i apologise since i havent have time do make the demo i promise you) is that you are fixed into doing this thing with processors which make everything more ortodox but also a bit harder, i for example do every with filters in my models and i just pass commands to the shell or workling. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
has_attached_file gets read when the class file is first read. It then sets up the various paperclip methods that do there stuff. When it does that, ''instance'' is a new/blank record. What you have below will work (if memory serves me right) if you save the record, reload it, and then reprocess it. Something along those lines... it''s been awhile since I ran into this. -philip On Oct 10, 2010, at 1:22 PM, Christian Fazzini wrote:> anyone?? Been on this for days without a solution.... thinking that I > may have to switch to another gem just to get this feature to work... > > On Oct 7, 3:16 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: >> I have a stream_type field on my form. When the form submits, >> instance.stream_type is blank. To verify this, in my custom processor >> (class ProcessAudio < Processor), I do puts options[:geometry]. >> >> has_attached_file :media, >> :styles => { :original => Proc.new { |instance| >> instance.stream_type } }, >> :url => ''/assets/artists/:artist_id/ >> songs/:id/:style.:extension'', >> :path => '':rails_root/public/assets/ >> artists/:artist_id/songs/:id/:style.:extension'', >> :processors => [:process_audio] >> >> If I provide a fixed string. For example: >> >> has_attached_file :media, >> :styles => { :original => ''30'' }, >> :url => ''/assets/artists/:artist_id/ >> songs/:id/:style.:extension'', >> :path => '':rails_root/public/assets/ >> artists/:artist_id/songs/:id/:style.:extension'', >> :processors => [:process_audio] >> >> puts options[:geometry] = 30. Why does is it NOT work with proc? >> >> What is wrong? > > -- > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en. >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Walter Lee, I am trying to pass a value (stream_type) that was in submitted in my form to :styles using proc. Radhames, even if I do all this in the model, without a processor, I am still not able to get the value of stream_type, that was passed when the form tried to submit. So Philip, this means I would need to reprocess the file and delete the original? This means I will be processing the file twice? Isn''t this a waste of resources if I only want one processed file that is adherent to the stream_type? On Oct 12, 12:07 am, Philip Hallstrom <phi...-LSG90OXdqQE@public.gmane.org> wrote:> has_attached_file gets read when the class file is first read. It then sets up the various paperclip methods that do there stuff. When it does that, ''instance'' is a new/blank record. > > What you have below will work (if memory serves me right) if you save the record, reload it, and then reprocess it. > > Something along those lines... it''s been awhile since I ran into this. > > -philip > > On Oct 10, 2010, at 1:22 PM, Christian Fazzini wrote: > > > anyone?? Been on this for days without a solution.... thinking that I > > may have to switch to another gem just to get this feature to work... > > > On Oct 7, 3:16 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > wrote: > >> I have a stream_type field on my form. When the form submits, > >> instance.stream_type is blank. To verify this, in my custom processor > >> (class ProcessAudio < Processor), I do puts options[:geometry]. > > >> has_attached_file :media, > >> :styles => { :original => Proc.new { |instance| > >> instance.stream_type } }, > >> :url => ''/assets/artists/:artist_id/ > >> songs/:id/:style.:extension'', > >> :path => '':rails_root/public/assets/ > >> artists/:artist_id/songs/:id/:style.:extension'', > >> :processors => [:process_audio] > > >> If I provide a fixed string. For example: > > >> has_attached_file :media, > >> :styles => { :original => ''30'' }, > >> :url => ''/assets/artists/:artist_id/ > >> songs/:id/:style.:extension'', > >> :path => '':rails_root/public/assets/ > >> artists/:artist_id/songs/:id/:style.:extension'', > >> :processors => [:process_audio] > > >> puts options[:geometry] = 30. Why does is it NOT work with proc? > > >> What is wrong? > > > -- > > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. > > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en. > >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I built a system in Rails 2.3.8 that accepted PDF uploads and needed  
to extract their text content using the venerable (read ancient)  
pdftotext command-line utility. I had to jump through the following  
hoops to make it work, and this might have some bearing on your  
solution:
#model
   has_attached_file :pdf,:styles => { :text => { :fake =>  
''variable'' } }, :processors => [:text]
   after_post_process :extract_text
   private
   def extract_text
     file =
File.open("#{pdf.queued_for_write[:text].path}","r")
     plain_text = ""
     while (line = file.gets)
       plain_text << Iconv.conv(''ASCII//IGNORE'',
''UTF8'', line)
     end
     self.plain_text = plain_text
   end
#lib/paperclip_processors/text.rb
module Paperclip
   # Handles extracting plain text from PDF file attachments
   class Text < Processor
     attr_accessor :whiny
     # Creates a Text extract from PDF
     def make
       src = @file
       dst = Tempfile.new([@basename,
''txt''].compact.join("."))
       command = <<-end_command
         "#{ File.expand_path(src.path) }"
         "#{ File.expand_path(dst.path) }"
       end_command
       begin
         success = Paperclip.run("/usr/bin/pdftotext -nopgbrk",  
command.gsub(/\s+/, " "))
         Rails.logger.info "Processing #{src.path} to #{dst.path} in  
the text processor."
       rescue PaperclipCommandLineError
         raise PaperclipError, "There was an error processing the text  
for #{@basename}" if @whiny
       end
       dst
     end
   end
end
Within the environs of Paperclip, you can write processors that do  
pretty much anything, and usually result in a new file saved as a new  
format in the attachments hierarchy. Once that process is done, you  
can access the result file and do other stuff with it. But I''m not  
sure if that answers your question at all, since you don''t seem to be  
facing the same problem I was.
If your form posts a file to Paperclip, you don''t get access to the  
file parts of that form submission directly in your controller, unless  
I''m missing something fundamental. But a processor can access them  
directly, at a very low level.
Walter
On Oct 12, 2010, at 12:01 AM, Christian Fazzini wrote:
> Walter Lee, I am trying to pass a value (stream_type) that was in
> submitted in my form to :styles using proc.
>
> Radhames, even if I do all this in the model, without a processor, I
> am still not able to get the value of stream_type, that was passed
> when the form tried to submit.
>
> So Philip, this means I would need to reprocess the file and delete
> the original? This means I will be processing the file twice?
Isn''t
> this a waste of resources if I only want one processed file that is
> adherent to the stream_type?
>
>
> On Oct 12, 12:07 am, Philip Hallstrom
<phi...-LSG90OXdqQE@public.gmane.org> wrote:
>> has_attached_file gets read when the class file is first read.  It  
>> then sets up the various paperclip methods that do there stuff.   
>> When it does that, ''instance'' is a new/blank record.
>>
>> What you have below will work (if memory serves me right) if you  
>> save the record, reload it, and then reprocess it.
>>
>> Something along those lines... it''s been awhile since I ran
into
>> this.
>>
>> -philip
>>
>> On Oct 10, 2010, at 1:22 PM, Christian Fazzini wrote:
>>
>>> anyone?? Been on this for days without a solution.... thinking  
>>> that I
>>> may have to switch to another gem just to get this feature to  
>>> work...
>>
>>> On Oct 7, 3:16 pm, Christian Fazzini
<christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>> wrote:
>>>> I have a stream_type field on my form. When the form submits,
>>>> instance.stream_type is blank. To verify this, in my custom  
>>>> processor
>>>> (class ProcessAudio < Processor), I do puts
options[:geometry].
>>
>>>>   has_attached_file :media,
>>>>                     :styles => { :original => Proc.new {
|instance|
>>>> instance.stream_type } },
>>>>                     :url =>
''/assets/artists/:artist_id/
>>>> songs/:id/:style.:extension'',
>>>>                     :path =>
'':rails_root/public/assets/
>>>> artists/:artist_id/songs/:id/:style.:extension'',
>>>>                     :processors => [:process_audio]
>>
>>>> If I provide a fixed string. For example:
>>
>>>>   has_attached_file :media,
>>>>                     :styles => { :original =>
''30'' },
>>>>                     :url =>
''/assets/artists/:artist_id/
>>>> songs/:id/:style.:extension'',
>>>>                     :path =>
'':rails_root/public/assets/
>>>> artists/:artist_id/songs/:id/:style.:extension'',
>>>>                     :processors => [:process_audio]
>>
>>>> puts options[:geometry] = 30. Why does is it NOT work with
proc?
>>
>>>> What is wrong?
>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Ruby on Rails: Talk" group.
>>> To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
>>> .
>>> To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
>>> .
>>> For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en
>>> .
>>
>>
>
> -- 
> You received this message because you are subscribed to the Google  
> Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails- 
> talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> .
> For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
> .
>
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
My form submits the file. The custom processor I made for Paperclip
uses FFMPEG. My custom processor expects a style to be set so that it
can process the audio based on that value. So for example, in my form,
I set stream_type to 30, my custom processor would process the audio
file to 30 seconds.
Walter, in your example. You already have a style set as a fixed
string (has_attached_file :pdf,:styles => { :text => { :fake =>
''variable'' } },)
Your example is valid, because you are processing again after the file
is submitted. But, I don''t want to reprocess. It would be a waste of
resources to do this twice. I want do it right the first time around.
On Oct 12, 12:17 pm, Walter Lee Davis
<wa...-HQgmohHLjDZWk0Htik3J/w@public.gmane.org>
wrote:> I built a system in Rails 2.3.8 that accepted PDF uploads and needed  
> to extract their text content using the venerable (read ancient)  
> pdftotext command-line utility. I had to jump through the following  
> hoops to make it work, and this might have some bearing on your  
> solution:
>
> #model
>    has_attached_file :pdf,:styles => { :text => { :fake =>  
> ''variable'' } }, :processors => [:text]
>    after_post_process :extract_text
>
>    private
>    def extract_text
>      file =
File.open("#{pdf.queued_for_write[:text].path}","r")
>      plain_text = ""
>      while (line = file.gets)
>        plain_text << Iconv.conv(''ASCII//IGNORE'',
''UTF8'', line)
>      end
>      self.plain_text = plain_text
>    end
>
> #lib/paperclip_processors/text.rb
> module Paperclip
>    # Handles extracting plain text from PDF file attachments
>    class Text < Processor
>
>      attr_accessor :whiny
>
>      # Creates a Text extract from PDF
>      def make
>        src = @file
>        dst = Tempfile.new([@basename,
''txt''].compact.join("."))
>        command = <<-end_command
>          "#{ File.expand_path(src.path) }"
>          "#{ File.expand_path(dst.path) }"
>        end_command
>
>        begin
>          success = Paperclip.run("/usr/bin/pdftotext -nopgbrk",  
> command.gsub(/\s+/, " "))
>          Rails.logger.info "Processing #{src.path} to #{dst.path} in  
> the text processor."
>        rescue PaperclipCommandLineError
>          raise PaperclipError, "There was an error processing the text
 
> for #{@basename}" if @whiny
>        end
>        dst
>      end
>    end
> end
>
> Within the environs of Paperclip, you can write processors that do  
> pretty much anything, and usually result in a new file saved as a new  
> format in the attachments hierarchy. Once that process is done, you  
> can access the result file and do other stuff with it. But I''m not
 
> sure if that answers your question at all, since you don''t seem to
be  
> facing the same problem I was.
>
> If your form posts a file to Paperclip, you don''t get access to
the  
> file parts of that form submission directly in your controller, unless  
> I''m missing something fundamental. But a processor can access them
 
> directly, at a very low level.
>
> Walter
>
> On Oct 12, 2010, at 12:01 AM, Christian Fazzini wrote:
>
> > Walter Lee, I am trying to pass a value (stream_type) that was in
> > submitted in my form to :styles using proc.
>
> > Radhames, even if I do all this in the model, without a processor, I
> > am still not able to get the value of stream_type, that was passed
> > when the form tried to submit.
>
> > So Philip, this means I would need to reprocess the file and delete
> > the original? This means I will be processing the file twice?
Isn''t
> > this a waste of resources if I only want one processed file that is
> > adherent to the stream_type?
>
> > On Oct 12, 12:07 am, Philip Hallstrom
<phi...-LSG90OXdqQE@public.gmane.org> wrote:
> >> has_attached_file gets read when the class file is first read.  It
 
> >> then sets up the various paperclip methods that do there stuff.  
> >> When it does that, ''instance'' is a new/blank
record.
>
> >> What you have below will work (if memory serves me right) if you  
> >> save the record, reload it, and then reprocess it.
>
> >> Something along those lines... it''s been awhile since I
ran into  
> >> this.
>
> >> -philip
>
> >> On Oct 10, 2010, at 1:22 PM, Christian Fazzini wrote:
>
> >>> anyone?? Been on this for days without a solution.... thinking
 
> >>> that I
> >>> may have to switch to another gem just to get this feature to
 
> >>> work...
>
> >>> On Oct 7, 3:16 pm, Christian Fazzini
<christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> >>> wrote:
> >>>> I have a stream_type field on my form. When the form
submits,
> >>>> instance.stream_type is blank. To verify this, in my
custom  
> >>>> processor
> >>>> (class ProcessAudio < Processor), I do puts
options[:geometry].
>
> >>>>   has_attached_file :media,
> >>>>                     :styles => { :original =>
Proc.new { |instance|
> >>>> instance.stream_type } },
> >>>>                     :url =>
''/assets/artists/:artist_id/
> >>>> songs/:id/:style.:extension'',
> >>>>                     :path =>
'':rails_root/public/assets/
> >>>> artists/:artist_id/songs/:id/:style.:extension'',
> >>>>                     :processors => [:process_audio]
>
> >>>> If I provide a fixed string. For example:
>
> >>>>   has_attached_file :media,
> >>>>                     :styles => { :original =>
''30'' },
> >>>>                     :url =>
''/assets/artists/:artist_id/
> >>>> songs/:id/:style.:extension'',
> >>>>                     :path =>
'':rails_root/public/assets/
> >>>> artists/:artist_id/songs/:id/:style.:extension'',
> >>>>                     :processors => [:process_audio]
>
> >>>> puts options[:geometry] = 30. Why does is it NOT work with
proc?
>
> >>>> What is wrong?
>
> >>> --
> >>> You received this message because you are subscribed to the
Google  
> >>> Groups "Ruby on Rails: Talk" group.
> >>> To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh4Ykp1iOSErHA@public.gmane.orgm
> >>> .
> >>> To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> >>> .
> >>> For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en
> >>> .
>
> > --
> > You received this message because you are subscribed to the Google  
> > Groups "Ruby on Rails: Talk" group.
> > To post to this group, send email to rubyonrails-
> > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> > To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> > .
> > For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en
> > .
>
>
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Anyone have a solution to this problem? On Oct 12, 12:36 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> My form submits the file. The custom processor I made for Paperclip > uses FFMPEG. My custom processor expects a style to be set so that it > can process the audio based on that value. So for example, in my form, > I set stream_type to 30, my custom processor would process the audio > file to 30 seconds. > > Walter, in your example. You already have a style set as a fixed > string (has_attached_file :pdf,:styles => { :text => { :fake => > ''variable'' } },) > > Your example is valid, because you are processing again after the file > is submitted. But, I don''t want to reprocess. It would be a waste of > resources to do this twice. I want do it right the first time around. > > On Oct 12, 12:17 pm, Walter Lee Davis <wa...-HQgmohHLjDZWk0Htik3J/w@public.gmane.org> wrote: > > > I built a system in Rails 2.3.8 that accepted PDF uploads and needed > > to extract their text content using the venerable (read ancient) > > pdftotext command-line utility. I had to jump through the following > > hoops to make it work, and this might have some bearing on your > > solution: > > > #model > > has_attached_file :pdf,:styles => { :text => { :fake => > > ''variable'' } }, :processors => [:text] > > after_post_process :extract_text > > > private > > def extract_text > > file = File.open("#{pdf.queued_for_write[:text].path}","r") > > plain_text = "" > > while (line = file.gets) > > plain_text << Iconv.conv(''ASCII//IGNORE'', ''UTF8'', line) > > end > > self.plain_text = plain_text > > end > > > #lib/paperclip_processors/text.rb > > module Paperclip > > # Handles extracting plain text from PDF file attachments > > class Text < Processor > > > attr_accessor :whiny > > > # Creates a Text extract from PDF > > def make > > src = @file > > dst = Tempfile.new([@basename, ''txt''].compact.join(".")) > > command = <<-end_command > > "#{ File.expand_path(src.path) }" > > "#{ File.expand_path(dst.path) }" > > end_command > > > begin > > success = Paperclip.run("/usr/bin/pdftotext -nopgbrk", > > command.gsub(/\s+/, " ")) > > Rails.logger.info "Processing #{src.path} to #{dst.path} in > > the text processor." > > rescue PaperclipCommandLineError > > raise PaperclipError, "There was an error processing the text > > for #{@basename}" if @whiny > > end > > dst > > end > > end > > end > > > Within the environs of Paperclip, you can write processors that do > > pretty much anything, and usually result in a new file saved as a new > > format in the attachments hierarchy. Once that process is done, you > > can access the result file and do other stuff with it. But I''m not > > sure if that answers your question at all, since you don''t seem to be > > facing the same problem I was. > > > If your form posts a file to Paperclip, you don''t get access to the > > file parts of that form submission directly in your controller, unless > > I''m missing something fundamental. But a processor can access them > > directly, at a very low level. > > > Walter > > > On Oct 12, 2010, at 12:01 AM, Christian Fazzini wrote: > > > > Walter Lee, I am trying to pass a value (stream_type) that was in > > > submitted in my form to :styles using proc. > > > > Radhames, even if I do all this in the model, without a processor, I > > > am still not able to get the value of stream_type, that was passed > > > when the form tried to submit. > > > > So Philip, this means I would need to reprocess the file and delete > > > the original? This means I will be processing the file twice? Isn''t > > > this a waste of resources if I only want one processed file that is > > > adherent to the stream_type? > > > > On Oct 12, 12:07 am, Philip Hallstrom <phi...-LSG90OXdqQE@public.gmane.org> wrote: > > >> has_attached_file gets read when the class file is first read. It > > >> then sets up the various paperclip methods that do there stuff. > > >> When it does that, ''instance'' is a new/blank record. > > > >> What you have below will work (if memory serves me right) if you > > >> save the record, reload it, and then reprocess it. > > > >> Something along those lines... it''s been awhile since I ran into > > >> this. > > > >> -philip > > > >> On Oct 10, 2010, at 1:22 PM, Christian Fazzini wrote: > > > >>> anyone?? Been on this for days without a solution.... thinking > > >>> that I > > >>> may have to switch to another gem just to get this feature to > > >>> work... > > > >>> On Oct 7, 3:16 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > >>> wrote: > > >>>> I have a stream_type field on my form. When the form submits, > > >>>> instance.stream_type is blank. To verify this, in my custom > > >>>> processor > > >>>> (class ProcessAudio < Processor), I do puts options[:geometry]. > > > >>>> has_attached_file :media, > > >>>> :styles => { :original => Proc.new { |instance| > > >>>> instance.stream_type } }, > > >>>> :url => ''/assets/artists/:artist_id/ > > >>>> songs/:id/:style.:extension'', > > >>>> :path => '':rails_root/public/assets/ > > >>>> artists/:artist_id/songs/:id/:style.:extension'', > > >>>> :processors => [:process_audio] > > > >>>> If I provide a fixed string. For example: > > > >>>> has_attached_file :media, > > >>>> :styles => { :original => ''30'' }, > > >>>> :url => ''/assets/artists/:artist_id/ > > >>>> songs/:id/:style.:extension'', > > >>>> :path => '':rails_root/public/assets/ > > >>>> artists/:artist_id/songs/:id/:style.:extension'', > > >>>> :processors => [:process_audio] > > > >>>> puts options[:geometry] = 30. Why does is it NOT work with proc? > > > >>>> What is wrong? > > > >>> -- > > >>> You received this message because you are subscribed to the Google > > >>> Groups "Ruby on Rails: Talk" group. > > >>> To post to this group, send email to rubyonrails-talk@googlegroups.com > > >>> . > > >>> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > > >>> . > > >>> For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en > > >>> . > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "Ruby on Rails: Talk" group. > > > To post to this group, send email to rubyonrails- > > > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > > > . > > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en > > > . > >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
bump On Oct 14, 10:58 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Anyone have a solution to this problem? > > On Oct 12, 12:36 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > > My form submits the file. The custom processor I made for Paperclip > > uses FFMPEG. My custom processor expects a style to be set so that it > > can process the audio based on that value. So for example, in my form, > > I set stream_type to 30, my custom processor would process the audio > > file to 30 seconds. > > > Walter, in your example. You already have a style set as a fixed > > string (has_attached_file :pdf,:styles => { :text => { :fake => > > ''variable'' } },) > > > Your example is valid, because you are processing again after the file > > is submitted. But, I don''t want to reprocess. It would be a waste of > > resources to do this twice. I want do it right the first time around. > > > On Oct 12, 12:17 pm, Walter Lee Davis <wa...-HQgmohHLjDZWk0Htik3J/w@public.gmane.org> wrote: > > > > I built a system in Rails 2.3.8 that accepted PDF uploads and needed > > > to extract their text content using the venerable (read ancient) > > > pdftotext command-line utility. I had to jump through the following > > > hoops to make it work, and this might have some bearing on your > > > solution: > > > > #model > > > has_attached_file :pdf,:styles => { :text => { :fake => > > > ''variable'' } }, :processors => [:text] > > > after_post_process :extract_text > > > > private > > > def extract_text > > > file = File.open("#{pdf.queued_for_write[:text].path}","r") > > > plain_text = "" > > > while (line = file.gets) > > > plain_text << Iconv.conv(''ASCII//IGNORE'', ''UTF8'', line) > > > end > > > self.plain_text = plain_text > > > end > > > > #lib/paperclip_processors/text.rb > > > module Paperclip > > > # Handles extracting plain text from PDF file attachments > > > class Text < Processor > > > > attr_accessor :whiny > > > > # Creates a Text extract from PDF > > > def make > > > src = @file > > > dst = Tempfile.new([@basename, ''txt''].compact.join(".")) > > > command = <<-end_command > > > "#{ File.expand_path(src.path) }" > > > "#{ File.expand_path(dst.path) }" > > > end_command > > > > begin > > > success = Paperclip.run("/usr/bin/pdftotext -nopgbrk", > > > command.gsub(/\s+/, " ")) > > > Rails.logger.info "Processing #{src.path} to #{dst.path} in > > > the text processor." > > > rescue PaperclipCommandLineError > > > raise PaperclipError, "There was an error processing the text > > > for #{@basename}" if @whiny > > > end > > > dst > > > end > > > end > > > end > > > > Within the environs of Paperclip, you can write processors that do > > > pretty much anything, and usually result in a new file saved as a new > > > format in the attachments hierarchy. Once that process is done, you > > > can access the result file and do other stuff with it. But I''m not > > > sure if that answers your question at all, since you don''t seem to be > > > facing the same problem I was. > > > > If your form posts a file to Paperclip, you don''t get access to the > > > file parts of that form submission directly in your controller, unless > > > I''m missing something fundamental. But a processor can access them > > > directly, at a very low level. > > > > Walter > > > > On Oct 12, 2010, at 12:01 AM, Christian Fazzini wrote: > > > > > Walter Lee, I am trying to pass a value (stream_type) that was in > > > > submitted in my form to :styles using proc. > > > > > Radhames, even if I do all this in the model, without a processor, I > > > > am still not able to get the value of stream_type, that was passed > > > > when the form tried to submit. > > > > > So Philip, this means I would need to reprocess the file and delete > > > > the original? This means I will be processing the file twice? Isn''t > > > > this a waste of resources if I only want one processed file that is > > > > adherent to the stream_type? > > > > > On Oct 12, 12:07 am, Philip Hallstrom <phi...-LSG90OXdqQE@public.gmane.org> wrote: > > > >> has_attached_file gets read when the class file is first read. It > > > >> then sets up the various paperclip methods that do there stuff. > > > >> When it does that, ''instance'' is a new/blank record. > > > > >> What you have below will work (if memory serves me right) if you > > > >> save the record, reload it, and then reprocess it. > > > > >> Something along those lines... it''s been awhile since I ran into > > > >> this. > > > > >> -philip > > > > >> On Oct 10, 2010, at 1:22 PM, Christian Fazzini wrote: > > > > >>> anyone?? Been on this for days without a solution.... thinking > > > >>> that I > > > >>> may have to switch to another gem just to get this feature to > > > >>> work... > > > > >>> On Oct 7, 3:16 pm, Christian Fazzini <christian.fazz...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > >>> wrote: > > > >>>> I have a stream_type field on my form. When the form submits, > > > >>>> instance.stream_type is blank. To verify this, in my custom > > > >>>> processor > > > >>>> (class ProcessAudio < Processor), I do puts options[:geometry]. > > > > >>>> has_attached_file :media, > > > >>>> :styles => { :original => Proc.new { |instance| > > > >>>> instance.stream_type } }, > > > >>>> :url => ''/assets/artists/:artist_id/ > > > >>>> songs/:id/:style.:extension'', > > > >>>> :path => '':rails_root/public/assets/ > > > >>>> artists/:artist_id/songs/:id/:style.:extension'', > > > >>>> :processors => [:process_audio] > > > > >>>> If I provide a fixed string. For example: > > > > >>>> has_attached_file :media, > > > >>>> :styles => { :original => ''30'' }, > > > >>>> :url => ''/assets/artists/:artist_id/ > > > >>>> songs/:id/:style.:extension'', > > > >>>> :path => '':rails_root/public/assets/ > > > >>>> artists/:artist_id/songs/:id/:style.:extension'', > > > >>>> :processors => [:process_audio] > > > > >>>> puts options[:geometry] = 30. Why does is it NOT work with proc? > > > > >>>> What is wrong? > > > > >>> -- > > > >>> You received this message because you are subscribed to the Google > > > >>> Groups "Ruby on Rails: Talk" group. > > > >>> To post to this group, send email to rubyonrails-talk@googlegroups.com > > > >>> . > > > >>> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > > > >>> . > > > >>> For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en > > > >>> . > > > > > -- > > > > You received this message because you are subscribed to the Google > > > > Groups "Ruby on Rails: Talk" group. > > > > To post to this group, send email to rubyonrails- > > > > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > > > > . > > > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en > > > > . > >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.