Report abuse


			
rake aborted!
PGError: ERROR:  duplicate key value violates unique constraint "buzzids_pkey"
: INSERT INTO buzzids ("updated_at", "id", "assigned", "buzzid", "created_at") VALUES('2008-04-23 08:54:35.999810', 63518327, NULL, NULL, '2008-04-23 08:54:35.999810')
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:150:in `log'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:407:in `execute'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:156:in `insert_sql'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:44:in `insert_without_query_dirty'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/query_cache.rb:19:in `insert'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:390:in `insert'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:2272:in `create_without_callbacks'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:226:in `create_without_timestamps'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/timestamp.rb:29:in `create_without_randomized'
/home/nonstop/apps/bookerbee/vendor/plugins/acts_as_randomized/init.rb:45:in `create'
/home/nonstop/apps/bookerbee/vendor/plugins/acts_as_randomized/init.rb:61:in `retry_on_duplicate_key'
/home/nonstop/apps/bookerbee/vendor/plugins/acts_as_randomized/init.rb:43:in `create'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:2238:in `create_or_update_without_callbacks'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/callbacks.rb:213:in `create_or_update'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1972:in `save_without_validation'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/validations.rb:934:in `save_without_transactions'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:108:in `save'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:66:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:80:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:100:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:108:in `save'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:120:in `rollback_active_record_state!'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/transactions.rb:108:in `save'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:572:in `create'
/home/nonstop/apps/bookerbee/lib/tasks/buzz.rake:153
/home/nonstop/apps/bookerbee/lib/tasks/buzz.rake:152:in `times'
/home/nonstop/apps/bookerbee/lib/tasks/buzz.rake:152
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:546:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:546:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:541:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:541:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:508:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:501:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:501:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:494:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1931:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1909:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1909:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1909:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1903:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1881:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1878:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.1/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

class Buzzid < ActiveRecord::Base

  acts_as_randomized { 10000000 + rand(10000000-99999999) }

end

  task :mmmids => :environment do
    20000.times {|i|
      Buzzid.create
    }
  end
module ActiveRecord::Acts
  module Randomized
    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      def acts_as_randomized(&block)
        cattr_accessor :randomized_proc
        self.randomized_proc = block
        class_eval do
          include ActiveRecord::Acts::Randomized::InstanceMethods
          alias_method_chain :create, :randomized
          set_sequence_name nil
        end
      end
    end

    module InstanceMethods
      def create_with_randomized
        return create_without_randomized if id
        connection.retry_on_duplicate_key do
          self.id = randomized_proc.call(self)
          create_without_randomized
        end
      end
    end
  end
end
ActiveRecord::Base.send :include, ActiveRecord::Acts::Randomized

module ActiveRecord::ConnectionAdapters
  class PostgreSQLAdapter
    def retry_on_duplicate_key
      ActiveRecord::Base.silence do
        execute %(SAVEPOINT "retry_on_duplicate_key";)
      end
      begin
        yield
      rescue ActiveRecord::StatementInvalid
        ActiveRecord::Base.silence do
          execute %(ROLLBACK TO SAVEPOINT "retry_on_duplicate_key";)
        end
        retry if $!.to_s =~ /duplicate key violates unique constraint ".*_pkey"$/
        raise
      ensure
        ActiveRecord::Base.silence do
          execute %(RELEASE SAVEPOINT "retry_on_duplicate_key";)
        end
      end
    end
  end
end