139. Ap4r::Client#transaction
Class ShopController < ApplicationController
def order # synchronous side
ap4r.transaction do
o = Order.new(:name => params[:order_id])
o.save!
ap4r.async_to({:action => âpaymentâ},
{:order_id => o.id})
end
redirect_to ...
end
end
130
145. ap4r.transaction
ap4r.transaction do
... # CRUD on database
ap4r.async_to(...) Insert into SAF table
Store
end Commit database
Queue messages
132
146. ap4r.transaction
ap4r.transaction do
... # CRUD on database
ap4r.async_to(...) Insert into SAF table
Store
end Commit database
Queue messages
Forward
132
210. def test_order
post :order, :order => {:item => quot;introduction to AP4Rquot;}
assert_response :redirect
assert_redirected_to :action => 'index'
messages = @controller.ap4r.queued_messages # ... (1)
assert_equal 1, messages.keys.size, quot;should have messages in just ONE queuequot;
assert messages.key?(quot;queue.async_shop.paymentquot;), quot;queue name is INCORRECTquot;
# ... (2)
assert_equal 1, messages[quot;queue.async_shop.paymentquot;].size,
quot;should have just ONE message for paymentquot;
assert_match /order_id=d+/, messages[quot;queue.async_shop.paymentquot;].first[:body],
quot;parameter order_id should be included with a numeric valuequot; # ... (3)
end
1.
2. assert
3. assert
168
231. ⢠Future Architect logo belongs to Future Architect, Inc.
Japan. All rights reserved.
⢠Rails logo is trademarks of David Heinemeier
Hansson. All rights reserved.
⢠The Ruby logo is copyrighted (c) 2006, Yukihiro
Matsumoto. It is released under the terms of the
Creative Commons Attribution-ShareAlike 2.5 License.
189