Hello Jeremy,
we already discussed this somewhat but I'd like to bring it up again and try to spice it a notch. A User has an access_token (hash) field, which is unique and it is randomly generated. I know you said this is not a good combination :-) but we don't seem to find a better solution as we cannot guarantee a unique value due to race conditions. The retry mechanism actually seems quite elegant as you don't have to litter your code with begin/rescue loops in many places. I made a simple plugin that adds two methods (create_retry and save_retry) that do what you pointed to (transaction num_retries option + a few others). The hash is generated in the before_save hook. While this works, it is really not very flexible because you have only one location where you can define those random values. Sometimes it would be neat to be able to pass a block to those methods which would be executed before every try, effectively re-setting those fields. A quick demo: class User < Sequel::Model plugin :create_retry, num_retries: 2 # that is 3 tries end user = User.new(name: 'Dave', ...) user.save_retry do |user| user.access_token = some_random_hash() # this would be neat to call before every try (save) end User.create_retry(name: 'Dave', ...) do |user| user.access_token = some_random_hash() end I tried to implement this but then I realized the block is executed only once and not every time the try is executed. (See those yields in the plugin.) What do you think about all of this? Is it possible? Here is the whole thing: https://gist.github.com/ollie/9936087 Thank you, Ollie -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sequel-talk. For more options, visit https://groups.google.com/d/optout.
