Class: Ddr::Derivatives::Derivative
- Inherits:
-
Object
- Object
- Ddr::Derivatives::Derivative
- Defined in:
- lib/ddr/derivatives/derivative.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#generator ⇒ Object
readonly
Returns the value of attribute generator.
-
#workdir ⇒ Object
Returns the value of attribute workdir.
Class Method Summary collapse
-
.generatable?(object) ⇒ Boolean
Whether a derivative can be generated for the object.
-
.has_derivative?(object) ⇒ Boolean
Whether the object has this derivative.
Instance Method Summary collapse
-
#delete!(object) ⇒ Object
Delete the existing derivative Implemented in each subclass.
- #generate!(object) ⇒ Object
-
#initialize(generator) ⇒ Derivative
constructor
A new instance of Derivative.
Constructor Details
#initialize(generator) ⇒ Derivative
Returns a new instance of Derivative.
7 8 9 |
# File 'lib/ddr/derivatives/derivative.rb', line 7 def initialize(generator) @generator = generator end |
Instance Attribute Details
#generator ⇒ Object (readonly)
Returns the value of attribute generator.
4 5 6 |
# File 'lib/ddr/derivatives/derivative.rb', line 4 def generator @generator end |
#workdir ⇒ Object
Returns the value of attribute workdir.
5 6 7 |
# File 'lib/ddr/derivatives/derivative.rb', line 5 def workdir @workdir end |
Class Method Details
.generatable?(object) ⇒ Boolean
Whether a derivative can be generated for the object. Implemented in each subclass.
27 28 29 |
# File 'lib/ddr/derivatives/derivative.rb', line 27 def self.generatable?(object) raise NotImplementedError end |
.has_derivative?(object) ⇒ Boolean
Whether the object has this derivative. Implemented in each subclass.
33 34 35 |
# File 'lib/ddr/derivatives/derivative.rb', line 33 def self.has_derivative?(object) raise NotImplementedError end |
Instance Method Details
#delete!(object) ⇒ Object
Delete the existing derivative Implemented in each subclass.
39 40 41 |
# File 'lib/ddr/derivatives/derivative.rb', line 39 def delete!(object) raise NotImplementedError end |
#generate!(object) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/ddr/derivatives/derivative.rb', line 11 def generate!(object) self.workdir = FileUtils.mkdir(File.join(Dir.tmpdir, Dir::Tmpname.make_tmpname('',nil))).first source_path = create_source_file(object) results = generator.generate(source_path, output_path(object)) if results.status.success? store(object, results.output_path) else Rails.logger.error results.stderr raise Ddr::Models::DerivativeGenerationFailure, "Failure generating #{self.class.name} for #{object.id}: #{results.stderr}" end FileUtils.remove_dir(workdir) end |