module Tako::ActiveRecordExt::ShardedMethods

Public Instance Methods

sharded_methods(*method_names) click to toggle source
# File lib/tako/active_record_ext/sharded_methods.rb, line 4
def sharded_methods(*method_names)
  method_names.each do |method_name|
    define_method(:"#{method_name}_with_tako") do |*params, &block|
      if current_shard
        ::Tako.shard(current_shard) { send(:"#{method_name}_without_tako",*params, &block) }
      else
        send(:"#{method_name}_without_tako",*params, &block)
      end
    end
    send(:alias_method, :"#{method_name}_without_tako", method_name)
    send(:alias_method, method_name, :"#{method_name}_with_tako")
  end
end