module Falcon::Base::SingletonMethods
def falcon_encode(name, options = {})
:encode => lambda { |encoding| encoding.delay.encode }
:metadata => :method_return_options_hash,
:profiles => ['web_mp4', 'web_ogg']
falcon_encode 'media', :source => :method_return_path_to_file,
:profiles => ['web_mp4', 'web_ogg']
falcon_encode 'media', :source => lambda { |file| file.data.path },
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