class Flickrage::Pipeline
Attributes
opts[R]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/flickrage/pipeline.rb, line 10 def initialize(opts = {}) @opts = opts end
Public Instance Methods
run()
click to toggle source
Main pipeline
# File lib/flickrage/pipeline.rb, line 18 def run logger.warn('Thank you for choosing Flickrage, you will find me as your Flickr collage companion :)') list = Concurrent .future { search_worker.call } .then { |image_list| download_worker.call(image_list) } .then { |image_list| resize_worker.call(image_list) } .then { |image_list| compose_worker.call(image_list) } .then do |image_list| logger.info("#{image_list&.size || 0} images composed") image_list end .rescue { |e| logger.error(e) } .wait.value speaker.add_padding raise Flickrage::CollageError, 'Try again later...' unless valid_list?(list) logger.warn("Congrats! You can find composed collage at #{list.collage_path}") list end
Private Instance Methods
compose_worker()
click to toggle source
# File lib/flickrage/pipeline.rb, line 56 def compose_worker @compose_worker ||= opts[:compose_worker] || Worker::Compose.new(opts) end
download_worker()
click to toggle source
# File lib/flickrage/pipeline.rb, line 48 def download_worker @download_worker ||= opts[:download_worker] || Worker::Download.new(opts) end
resize_worker()
click to toggle source
# File lib/flickrage/pipeline.rb, line 52 def resize_worker @resize_worker ||= opts[:resize_worker] || Worker::Resize.new(opts) end
search_worker()
click to toggle source
# File lib/flickrage/pipeline.rb, line 44 def search_worker @search_worker ||= opts[:search_worker] || Worker::Search.new(opts) end
valid_list?(list)
click to toggle source
# File lib/flickrage/pipeline.rb, line 60 def valid_list?(list) list.respond_to?(:valid?) && list.valid? end