rubyconf2014
TRANSCRIPT
I AM EMILIO A RUBY PROGRAMMER
Software developer +15 yrs
10Pines founder
Agiles community founding member
agiles 2012 conference co-chair
husband, father and homeBrewer
class Speaker < ActiveRecord::Base ! devise :omniauthable, :omniauth_providers => [:facebook] ! def approve_session(session) # do something SessionMailer.approve(speaker: self, session: session).deliver end !end
public List selectPending(List registrations) { ! List pending = new ArrayList(); for (Registration registration: registrations) { if (!registration.isPaid()) { pending.add(registration); } } return pending; }
class SessionsController < ApplicationController ! def create ! @session = Session.new(session_params) ! if @session.save redirect_to my_sessions_path, notice: 'Session created successfully' else render :new end ! end end
class Program ! def find_by_author(author) ! sessions = Session.where(author: author, approved: true) ! if sessions.empty? # do something else # do something end end !end
class AttendeePresenter ! def phone_number ! unless self.address.nil? unless self.address.phone_number.nil? self.address.phone_number else 'Phone number not present' end else 'Address not present' end end !end
class Attendee def initialize(address) if address.nil? raise ArgumentError, 'Address is required' end @address = address end ! def address @address || UnknownAddress.new end ! def phone_number Optional.new(@address). within {|address| address.phone_number} end end
class BankAccount ! def process a_transaction ! if a_transaction.type == :purchase # charge transaction fee else # assume refund end end !end
class BankAccount ! def process a_transaction a_transaction.process self end ! def process_purchase a_transaction # charge transaction fee end ! def process_refund a_transaction # refund transaction fee end !end
class Purchase < Transaction ! def process a_payment_method a_payment_method.process_purchase self end end !class Refund < Transaction ! def process a_payment_method a_payment_method.process_refund self end end
require 'spec_helper' !describe Registration do ! it 'pays a registration' do ! attendee_id = 1 a_registration = double("Registration") an_attendee = double("Attendee", registration: a_registration) ! allow(Attendee).to receive(:find) { an_attendee } ! expect(a_registration).to receive(:paid=).with(true) expect(a_registration).to receive(:save).and_return(true) ! expect_any_instance_of(PaypalAccount).to receive(:process) ! Registration.pay(attendee_id) ! end end
VI. THOU SHALT NOT TAKE THY IN VAIN
VII. REMEMBER TO REFACTOR
VII. THOU SHALT BEAR YOUR FELLOW PROGRAMMERS
AND PAIR WITH THEM
THANKS!!!email: [email protected]: @10pinessite: dev.10pines.comblog: blog.10pines.com