Method: Facebooker::Session#batch
- Defined in:
- lib/facebooker/session.rb
#batch(serial_only = false) ⇒ Object
Submit the enclosed requests for this session inside a batch
All requests will be sent to Facebook at the end of the block each method inside the block will return a proxy object attempting to access the proxy before the end of the block will yield an exception
For Example:
facebook_session.batch do
@send_result = facebook_session.send_notification([12451752],"Woohoo")
@albums = facebook_session.user.albums
end
puts @albums.first.inspect
is valid, however
facebook_session.batch do
@send_result = facebook_session.send_notification([12451752],"Woohoo")
@albums = facebook_session.user.albums
puts @albums.first.inspect
end
will raise Facebooker::BatchRequest::UnexecutedRequest
If an exception is raised while processing the result, that exception will be re-raised on the next access to that object or when exception_raised? is called
for example, if the send_notification resulted in TooManyUserCalls being raised, calling
@send_result.exception_raised?
would re-raise that exception if there was an error retrieving the albums, it would be re-raised when
@albums.first
is called
491 492 493 494 495 496 497 498 499 500 501 502 |
# File 'lib/facebooker/session.rb', line 491 def batch(serial_only=false) @batch_request=true Thread.current[:facebooker_current_batch_queue]=[] yield # Set the batch request to false so that post will execute the batch job @batch_request=false BatchRun.current_batch=Thread.current[:facebooker_current_batch_queue] post("facebook.batch.run",:method_feed=>BatchRun.current_batch.map{|q| q.uri}.to_json,:serial_only=>serial_only.to_s) ensure @batch_request=false BatchRun.current_batch=nil end |