if self.is_a?(Dog)
with_new_options do
$options << :Dog_videos
Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
end
elsif self.is(Cat)
with_new_options do
$options << :Cat_videos
Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
end
end
Refactorings
No refactoring yet !
Anthony Cook
September 30, 2011, September 30, 2011 09:22, permalink
Yes, this could be made even smaller, but this is the best balance between readability and DRY, we're not writing perl.
with_new_options do
if self.is_a?(Dog)
$options << :Dog_videos
elsif self.is(Cat)
$options << :Cat_videos
end
Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
end
Jeremy
September 30, 2011, September 30, 2011 18:26, permalink
Assuming your just checking for Dog or Cat class, this is more compact.
with_new_options do
$options << "#{self.class}_videos".to_sym
Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
end
Jeremy
September 30, 2011, September 30, 2011 18:26, permalink
Assuming your just checking for Dog or Cat class, this is more compact.
with_new_options do
$options << "#{self.class}_videos".to_sym
Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
end
Ben Marini
October 1, 2011, October 01, 2011 12:56, permalink
Why not let your subclasses decide what options to add?
class Animal
def queue_event
with_new_options do
$options << self.options
Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
end
end
end
class Dog < Animal
def options
:Dog_options
end
end
class Cat < Animal
def options
:Cat_options
end
end
As you see, Event.queue self, :new_video, { :object_key => self._object_key, :object_data => self._render }
is the same for both conditions.