U wont bleev wut dis code doez

Post on 02-Aug-2015

101 views 0 download

Tags:

Transcript of U wont bleev wut dis code doez

U WONT BLEEV WUT DIS CODE DOEZ

IN DA BEGINNIN ALL WUZ NICE

DEN ROGUE ERROR APPEARD#{l(@order.purchased_at, format: :order_date)}

ActionView::Template::ErrorObject must be a Date, DateTime or Time object. nil given.

SILLY PUPPY, PURCHASD AT SHUD NOT BE NIL

HER LIEZ TEH PROBLEM@order.purchased_at = Time.current

@order.confirm!

send_notifications

HOW CAN PURCHASD AT BE NIL?

TURNS OUT SOMEBODY WUZ SMART

THAR SHUD NOT BE 2 KITTEHS PURCHASIN AT TEH SAME TIEM

@order.with_lock do

add_errors_from(confirmer_command) unless

confirmer_command.perform

end

AN TEH CEILIN KAT SED

Locking::Pessimistic provides support for row-level locking using SELECT … FOR UPDATE

I KNOE HOW DAT WERKZ

t1 select … for update

t2 select … for update

t1 purchased_at = Time.zone.now send_notifications

t2 select … for update returns

AN TEH CEILIN KAT SED

You can start a transaction and acquire the lock in one go by calling with_lock with a block.

WUT DOEZ SEND_NOTIFICATIONS DO

def send_notifications

Resque.enqueue(...)

end

transaction+

Resque.enqueue

TEH FIX WUZ EASY@order.with_lock do

check_pending_order!

@order.purchased_at = Time.current

@order.confirm!

end

send_notifications

DOAN MAK KITTEHS SAD

LOCK ONLY WUT ABSOLUTELY NECESARYREAD UP ON HOW THINGS WERK