Module: Falcon::Base::SingletonMethods

Defined in:
lib/falcon/base.rb

Instance Method Summary collapse

Instance Method Details

#falcon_encode(name, options = {}) ⇒ Object

falcon_encode ‘media’, :source => lambda { |file| file.data.path },

:profiles => ['web_mp4', 'web_ogg']

falcon_encode ‘media’, :source => :method_return_path_to_file,

:profiles => ['web_mp4', 'web_ogg']
:metadata => :method_return_options_hash,
:encode => lambda { |encoding| encoding.delay.encode }


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/falcon/base.rb', line 17

def falcon_encode(name, options = {})
  extend ClassMethods
  include InstanceMethods
    
  options.assert_valid_keys(:source, :profiles, :metadata, :encode)
  
  unless respond_to?(:falcon_encoding_definitions)
    class_attribute :falcon_encoding_definitions, :instance_writer => false
    self.falcon_encoding_definitions = {}
  end
  
  self.falcon_encoding_definitions[name] = options
  
  has_many :falcon_encodings, 
    :class_name => 'Falcon::Encoding', 
    :as => :videoable,
    :dependent => :destroy

  after_save :save_falcon_medias
  
  define_falcon_callbacks :encode, :"#{name}_encode"
  
  define_method name do |*args|
    a = falcon_media_for(name)
    (args.length > 0) ? a.to_s(args.first) : a
  end

  define_method "#{name}=" do |source_path|
    falcon_media_for(name).assign(source_path)
  end

  define_method "#{name}?" do
    falcon_media_for(name).exist?
  end
end