|task| Tasks::Hoge::Sender.execute end end lib/tasks/hoge_send.rake module Tasks module Hoge class Sender def self.execute # まずはデータを集めてくる # そのあとにいい感じの加工をする # S3に置きにいく end end end end lib/tasks/hoge/sender.rb
Sender def self.execute data = aggretage_data processed_data = process_data(data) send_s3(processed_data) end private def aggregate_data # データを集めてくる処理 end def process_data(data) # データを加工する処理 end def send_s3(data) # s3に置く処理 end end end end lib/tasks/hoge/sender.rb
self.execute data = Hoge::DataAggregator.aggregate processed_data = Hoge::DataProcessor.new(data).process Hoge::S3Sender.send(processed_data) end end end end
self.execute data = Hoge::DataAggregator.aggregate # データ加工といってもこの程度ならclass切り出さなくてもいいのでは? processed_data = data .group_by(&:first) .sort .map { |key, values| [values[0], values[1]] } Hoge::S3Sender.send(processed_data) end end end end lib/tasks/hoge/sender.rb
self.execute data = Hoge::DataAggregator.aggregate processed_data = process_data(data) Hoge::S3Sender.send(processed_data) end private def process_data(data) data .group_by(&:first) .sort .map { |key, values| [values[0], values[1]] } end end end end lib/tasks/hoge/sender.rb
do subject { described_class.execute } it '加工されたデータがS3に置かれること' do is_expected.to (期待する結果) end end describe '#process_data' do subject { described_class.send(:process_data, data) } let(:data) { (ダミーデータ) } it 'データが正しく加工されること' do is_expected.to (期待する結果) end end end