Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

return the ids from a bulk insert [postgres only] #104

Closed
wants to merge 11 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ tmtags
coverage
rdoc
pkg
*.gem
*.lock

## PROJECT::SPECIFIC
log/*.log
Expand All @@ -26,4 +28,4 @@ test/database.yml
.bundle/
.redcar/
.rvmrc
docsite/
docsite/
3 changes: 3 additions & 0 deletions Brewfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
mysql
postgresql
sqlite
71 changes: 34 additions & 37 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,42 +1,39 @@
source :gemcutter
source 'https://rubygems.org'

gem "activerecord", "~> 3.0"
gemspec

group :development do
gem "rake"
gem "jeweler", ">= 1.4.0"
# Database Adapters
platforms :ruby do
gem "em-synchrony", "~> 1.0.3"
gem "mysql2", "~> 0.3.0"
gem "pg", "~> 0.9"
gem "sqlite3-ruby", "~> 1.3.1"
gem "seamless_database_pool", "~> 1.0.13"
end

group :test do
# Database Adapters
platforms :ruby do
gem "mysql", "~> 2.8.1"
gem "mysql2", "~> 0.3.0"
gem "pg", "~> 0.9"
gem "sqlite3-ruby", "~> 1.3.1"
gem "seamless_database_pool", "~> 1.0.11"
end

platforms :jruby do
gem "jdbc-mysql"
gem "activerecord-jdbcmysql-adapter"
end

# Support libs
gem "factory_girl", "~> 1.3.3"
gem "delorean", "~> 0.2.0"

# Debugging
platforms :mri_18 do
gem "ruby-debug", "= 0.10.4"
end

platforms :jruby do
gem "ruby-debug-base", "= 0.10.4"
gem "ruby-debug", "= 0.10.4"
end

platforms :mri_19 do
gem "debugger"
end
platforms :jruby do
gem "jdbc-mysql"
gem "activerecord-jdbcmysql-adapter"
end

# Support libs
gem "factory_girl", "~> 4.2.0"
gem "delorean", "~> 0.2.0"

# Debugging
platforms :mri_18 do
gem "ruby-debug", "= 0.10.4"
end

platforms :jruby do
gem "ruby-debug-base", "= 0.10.4"
gem "ruby-debug", "= 0.10.4"
end

platforms :mri_19 do
gem "debugger"
end

version = ENV['AR_VERSION'] || "4.0"

eval_gemfile File.expand_path("../gemfiles/#{version}.gemfile", __FILE__)
85 changes: 0 additions & 85 deletions Gemfile.lock

This file was deleted.

10 changes: 7 additions & 3 deletions README.markdown
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
# activerecord-import

activerecord-import is a library for bulk inserting data using ActiveRecord.
activerecord-import is a library for bulk inserting data using ActiveRecord.

### Rails 3.1.x and higher
### Rails 4.0

Use the latest activerecord-import.
Use activerecord-import 0.4.0 or higher.

### Rails 3.1.x up to, but not including 4.0

Use the latest in the activerecord-import 0.3.x series.

### Rails 3.0.x up to, but not including 3.1

Expand Down
25 changes: 1 addition & 24 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,6 @@ Bundler.setup
require 'rake'
require 'rake/testtask'

begin
require 'jeweler'
Jeweler::Tasks.new do |gem|
gem.name = "activerecord-import"
gem.summary = %Q{Bulk-loading extension for ActiveRecord}
gem.description = %Q{Extraction of the ActiveRecord::Base#import functionality from ar-extensions for Rails 3 and beyond}
gem.email = "zach.dennis@gmail.com"
gem.homepage = "http://github.com/zdennis/activerecord-import"
gem.authors = ["Zach Dennis"]
gem.files = FileList["VERSION", "Rakefile", "README*", "lib/**/*"]

bundler = Bundler.load
bundler.dependencies_for(:default).each do |dependency|
gem.add_dependency dependency.name, *dependency.requirements_list
end

# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
end
Jeweler::GemcutterTasks.new
rescue LoadError
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
end

namespace :display do
task :notice do
puts
Expand All @@ -36,7 +13,7 @@ namespace :display do
end
task :default => ["display:notice"]

ADAPTERS = %w(mysql mysql2 jdbcmysql postgresql sqlite3 seamless_database_pool mysqlspatial mysql2spatial spatialite postgis)
ADAPTERS = %w(mysql mysql2 em_mysql2 jdbcmysql postgresql sqlite3 seamless_database_pool mysqlspatial mysql2spatial spatialite postgis)
ADAPTERS.each do |adapter|
namespace :test do
desc "Runs #{adapter} database tests."
Expand Down
1 change: 0 additions & 1 deletion VERSION

This file was deleted.

78 changes: 16 additions & 62 deletions activerecord-import.gemspec
Original file line number Diff line number Diff line change
@@ -1,68 +1,22 @@
# Generated by jeweler
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
# -*- encoding: utf-8 -*-
require File.expand_path('../lib/activerecord-import/version', __FILE__)

Gem::Specification.new do |s|
s.name = "activerecord-import"
s.version = "0.2.10"
Gem::Specification.new do |gem|
gem.authors = ["Zach Dennis"]
gem.email = ["zach.dennis@gmail.com"]
gem.summary = "Bulk-loading extension for ActiveRecord"
gem.description = "Extraction of the ActiveRecord::Base#import functionality from ar-extensions for Rails 3 and beyond"
gem.homepage = "http://github.com/zdennis/activerecord-import"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Zach Dennis"]
s.date = "2012-08-30"
s.description = "Extraction of the ActiveRecord::Base#import functionality from ar-extensions for Rails 3 and beyond"
s.email = "zach.dennis@gmail.com"
s.extra_rdoc_files = [
"README.markdown"
]
s.files = [
"README.markdown",
"Rakefile",
"VERSION",
"lib/activerecord-import.rb",
"lib/activerecord-import/active_record/adapters/abstract_adapter.rb",
"lib/activerecord-import/active_record/adapters/jdbcmysql_adapter.rb",
"lib/activerecord-import/active_record/adapters/mysql2_adapter.rb",
"lib/activerecord-import/active_record/adapters/mysql_adapter.rb",
"lib/activerecord-import/active_record/adapters/postgresql_adapter.rb",
"lib/activerecord-import/active_record/adapters/seamless_database_pool_adapter.rb",
"lib/activerecord-import/active_record/adapters/sqlite3_adapter.rb",
"lib/activerecord-import/adapters/abstract_adapter.rb",
"lib/activerecord-import/adapters/mysql_adapter.rb",
"lib/activerecord-import/adapters/postgresql_adapter.rb",
"lib/activerecord-import/adapters/sqlite3_adapter.rb",
"lib/activerecord-import/base.rb",
"lib/activerecord-import/import.rb",
"lib/activerecord-import/mysql.rb",
"lib/activerecord-import/mysql2.rb",
"lib/activerecord-import/postgresql.rb",
"lib/activerecord-import/sqlite3.rb",
"lib/activerecord-import/synchronize.rb"
]
s.homepage = "http://github.com/zdennis/activerecord-import"
s.require_paths = ["lib"]
s.rubygems_version = "1.8.24"
s.summary = "Bulk-loading extension for ActiveRecord"
gem.files = `git ls-files`.split($\)
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
gem.name = "activerecord-import"
gem.require_paths = ["lib"]
gem.version = ActiveRecord::Import::VERSION

if s.respond_to? :specification_version then
s.specification_version = 3
gem.required_ruby_version = ">= 1.9.2"

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
s.add_development_dependency(%q<rake>, [">= 0"])
s.add_development_dependency(%q<jeweler>, [">= 1.4.0"])
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
else
s.add_dependency(%q<activerecord>, ["~> 3.0"])
s.add_dependency(%q<rake>, [">= 0"])
s.add_dependency(%q<jeweler>, [">= 1.4.0"])
s.add_dependency(%q<activerecord>, ["~> 3.0"])
end
else
s.add_dependency(%q<activerecord>, ["~> 3.0"])
s.add_dependency(%q<rake>, [">= 0"])
s.add_dependency(%q<jeweler>, [">= 1.4.0"])
s.add_dependency(%q<activerecord>, ["~> 3.0"])
end
gem.add_runtime_dependency "activerecord", ">= 3.2"
gem.add_development_dependency "rake"
end

4 changes: 4 additions & 0 deletions gemfiles/3.1.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
platforms :ruby do
gem 'mysql', '~> 2.8.1'
gem 'activerecord', '~> 3.1.0'
end
4 changes: 4 additions & 0 deletions gemfiles/3.2.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
platforms :ruby do
gem 'mysql', '~> 2.8.1'
gem 'activerecord', '~> 3.2.0'
end
4 changes: 4 additions & 0 deletions gemfiles/4.0.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
platforms :ruby do
gem 'mysql', '~> 2.9'
gem 'activerecord', '~> 4.0.4'
end
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
module ActiveRecord # :nodoc:
module ConnectionAdapters # :nodoc:
class AbstractAdapter # :nodoc:
extend ActiveRecord::Import::AbstractAdapter::ClassMethods
include ActiveRecord::Import::AbstractAdapter::InstanceMethods
end
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require "em-synchrony"
require "em-synchrony/mysql2"
require "em-synchrony/activerecord"
require "activerecord-import/adapters/em_mysql2_adapter"

class ActiveRecord::ConnectionAdapters::EMMysql2Adapter
include ActiveRecord::Import::EMMysql2Adapter
end
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,15 @@

class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
include ActiveRecord::Import::PostgreSQLAdapter

alias_method :post_sql_statements_orig, :post_sql_statements
def post_sql_statements( table_name, options ) # :nodoc:
unless options[:primary_key].blank?
post_sql_statements_orig(table_name, options).append(" RETURNING #{options[:primary_key]}")
else
post_sql_statements_orig(table_name, options)
end
end

end

Loading