- Defined in:
Unlike its superclass, a Transient object takes a string of data (e.g. from an IO object). This is useful when you've got something like a PDF, an ImageMagick byte array, etc that you just want to send on its way rather than having to touch the file system directly.
A contrived example:
Say we're using Prawn to generate PDF invoices for some nebulous, ever-expanding system that promises us sex, drugs, rock & roll, fame and perhaps a pay-rise. Instead of just generating a file, let's pass the rendered version to a Transient object and let it take care of things:
require 'cups/print_job/transient' require 'prawn' invoice = Prawn::Document.new do text "Invoice." end paper_copy = ::::Transient.(invoice.render) paper_copy.print
As of 0.0.5, all instance methods inherited from PrintJob are unaltered. This may change if I need to delay passing the print data or change it after initialization, just as PrintJob currently permits the file to be written to/moved/nonexistent until print is called.
Instance Attribute Summary
Attributes inherited from
, , , , ,
Instance Method Summary collapse
#initialize(data_string, printer = nil) ⇒ Transient
Create a print job from a non-empty string.
- #old_init ⇒ Object
Methods inherited from
, , , , , ,
#initialize(data_string, printer = nil) ⇒
Create a print job from a non-empty string. Takes optional printer argument, otherwise uses default. As the tempfile is written to and closed upon initialization, an error will be raised if an empty string is passed as the first argument.
43 44 45 46 47 48 49 50 51
# File 'lib/cups/print_job/transient.rb', line 43 def initialize(data_string, printer=nil) raise "Temporary print job has no data!" if data_string.empty? file = Tempfile.new('') file.puts(data_string) file.close old_init(file.path, printer) end
Instance Method Details
#old_init ⇒ Object
# File 'lib/cups/print_job/transient.rb', line 38 alias_method :old_init, :initialize