active_record_upsert 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +14 -3
- data/Dockerfile +18 -0
- data/Gemfile +0 -9
- data/Gemfile.docker +4 -0
- data/README.md +4 -15
- data/Rakefile +23 -4
- data/active_record_upsert.gemspec +7 -11
- data/bin/release +7 -0
- data/bin/run_docker_test.sh +5 -0
- data/bin/run_rails.sh +4 -0
- data/docker-compose.yml +14 -0
- data/lib/active_record_upsert/active_record/connection_adapters/abstract/database_statements.rb +0 -12
- data/lib/active_record_upsert/active_record/connection_adapters/postgresql/database_statements.rb +6 -3
- data/lib/active_record_upsert/active_record.rb +4 -2
- data/lib/active_record_upsert/version.rb +1 -1
- metadata +29 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdb375cbcf07846e95058205f81ffbf09fc2e1b0
|
4
|
+
data.tar.gz: d6056b35652b183e771a14694e2b20c009d1b4d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0bba59eda8cec0d58f8856629f7f2b9ff2d89f106558150a4262c8dd15585ebadb5275e318e3345205b579b7b1c3c9601cffc5f06b8b867aa130c7ea42edacf
|
7
|
+
data.tar.gz: bae1fee3ff3b0896ac2e4220ac58cd56f83eb351e2b0bfec3b117362147dc525baaf3f1c71046ec7fb0de8b159d4d387d27fb9568d0d1a31882febd980f2820b
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,5 +1,16 @@
|
|
1
|
+
sudo: required
|
2
|
+
dist: trusty
|
1
3
|
language: ruby
|
4
|
+
env:
|
5
|
+
- DATABASE_URL="postgresql://postgres@localhost/upsert_test"
|
2
6
|
rvm:
|
3
|
-
-
|
4
|
-
|
5
|
-
|
7
|
+
- 2.3.1
|
8
|
+
before_script:
|
9
|
+
- createdb --echo -U postgres upsert_test
|
10
|
+
- psql -U postgres upsert_test < spec/dummy/db/structure.sql
|
11
|
+
|
12
|
+
before_install: gem install bundler -v 1.13.3
|
13
|
+
|
14
|
+
addons:
|
15
|
+
postgresql: "9.5"
|
16
|
+
|
data/Dockerfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
FROM quay.io/travisci/travis-ruby
|
2
|
+
RUN apt-add-repository ppa:brightbox/ruby-ng
|
3
|
+
RUN apt-get update
|
4
|
+
RUN apt-get install ruby2.3 ruby2.3-dev
|
5
|
+
RUN ruby --version
|
6
|
+
|
7
|
+
ENV BUNDLE_GEMFILE=/app/Gemfile.docker
|
8
|
+
RUN gem install nokogiri
|
9
|
+
RUN gem install bundler
|
10
|
+
COPY Gemfile* *.gemspec /app/
|
11
|
+
RUN mkdir -p /app/lib/active_record_upsert
|
12
|
+
COPY lib/active_record_upsert/version.rb /app/lib/active_record_upsert/
|
13
|
+
WORKDIR /app
|
14
|
+
RUN bundle install
|
15
|
+
COPY . /app
|
16
|
+
CMD bin/run_docker_test.sh
|
17
|
+
|
18
|
+
|
data/Gemfile
CHANGED
@@ -3,12 +3,3 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in active_record_upsert.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem 'activerecord-jdbc-adapter',
|
7
|
-
github: 'jensnockert/activerecord-jdbc-adapter',
|
8
|
-
branch: 'activerecord-50',
|
9
|
-
platform: :jruby
|
10
|
-
|
11
|
-
gem 'activerecord-jdbcpostgresql-adapter',
|
12
|
-
github: 'jensnockert/activerecord-jdbc-adapter',
|
13
|
-
branch: 'activerecord-50',
|
14
|
-
platform: :jruby
|
data/Gemfile.docker
ADDED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
[](https://badge.fury.io/rb/active_record_upsert)
|
1
2
|
[](https://travis-ci.org/jesjos/active_record_upsert)
|
2
3
|
[](https://codeclimate.com/github/jesjos/active_record_upsert)
|
4
|
+
[](https://gemnasium.com/github.com/jesjos/active_record_upsert)
|
3
5
|
|
4
6
|
# ActiveRecordUpsert
|
5
7
|
|
@@ -16,7 +18,8 @@ Real upsert for PostgreSQL 9.5+ and Rails 5 / ActiveRecord 5. Uses [ON CONFLICT
|
|
16
18
|
- PostgreSQL 9.5+
|
17
19
|
- ActiveRecord ~> 5
|
18
20
|
- For MRI: pg
|
19
|
-
|
21
|
+
|
22
|
+
- For JRuby: No support
|
20
23
|
|
21
24
|
## Installation
|
22
25
|
|
@@ -26,20 +29,6 @@ Add this line to your application's Gemfile:
|
|
26
29
|
gem 'active_record_upsert'
|
27
30
|
```
|
28
31
|
|
29
|
-
If you use JRuby, also add the following:
|
30
|
-
|
31
|
-
```ruby
|
32
|
-
gem 'activerecord-jdbc-adapter',
|
33
|
-
github: 'jensnockert/activerecord-jdbc-adapter',
|
34
|
-
branch: 'activerecord-50',
|
35
|
-
platform: :jruby
|
36
|
-
|
37
|
-
gem 'activerecord-jdbcpostgresql-adapter',
|
38
|
-
github: 'jensnockert/activerecord-jdbc-adapter',
|
39
|
-
branch: 'activerecord-50',
|
40
|
-
platform: :jruby
|
41
|
-
```
|
42
|
-
|
43
32
|
And then execute:
|
44
33
|
|
45
34
|
$ bundle
|
data/Rakefile
CHANGED
@@ -1,6 +1,25 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'active_record'
|
4
4
|
RSpec::Core::RakeTask.new(:spec)
|
5
5
|
|
6
|
-
task :
|
6
|
+
task :setup_and_run_spec do |rake_task|
|
7
|
+
puts "<:#{rake_task.name}> Ensuring database is prepared..."
|
8
|
+
|
9
|
+
# Configure Rails Environment
|
10
|
+
ENV['RAILS_ENV'] = 'test'
|
11
|
+
ENV['DATABASE_URL'] ||= 'postgresql://localhost/upsert_test'
|
12
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
13
|
+
|
14
|
+
require File.expand_path('../spec/dummy/config/environment.rb', __FILE__)
|
15
|
+
|
16
|
+
include ActiveRecord::Tasks
|
17
|
+
DatabaseTasks.db_dir = 'spec/dummy/db'
|
18
|
+
DatabaseTasks.drop_current
|
19
|
+
DatabaseTasks.create_current
|
20
|
+
DatabaseTasks.migrate
|
21
|
+
|
22
|
+
Rake::Task['spec'].invoke
|
23
|
+
end
|
24
|
+
|
25
|
+
task default: :setup_and_run_spec
|
@@ -6,8 +6,8 @@ require 'active_record_upsert/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "active_record_upsert"
|
8
8
|
spec.version = ActiveRecordUpsert::VERSION
|
9
|
-
spec.authors = ["Jesper Josefsson"]
|
10
|
-
spec.email = ["jesper.josefsson@gmail.com"]
|
9
|
+
spec.authors = ["Jesper Josefsson", "Olle Jonsson"]
|
10
|
+
spec.email = ["jesper.josefsson@gmail.com", "olle.jonsson@gmail.com"]
|
11
11
|
spec.homepage = "https://github.com/jesjos/active_record_upsert/"
|
12
12
|
|
13
13
|
spec.summary = %q{Real PostgreSQL 9.5+ upserts using ON CONFLICT for ActiveRecord}
|
@@ -17,20 +17,16 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_runtime_dependency
|
20
|
+
spec.add_runtime_dependency 'activerecord', '~> 5.0.0.beta4'
|
21
21
|
spec.add_runtime_dependency "arel", "~>7.0"
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
spec.add_runtime_dependency 'activerecord-jdbcpostgresql-adapter', '> 0'
|
26
|
-
else
|
27
|
-
spec.platform = Gem::Platform::RUBY
|
28
|
-
spec.add_runtime_dependency 'pg', '~> 0.18'
|
29
|
-
end
|
23
|
+
spec.platform = Gem::Platform::RUBY
|
24
|
+
spec.add_runtime_dependency 'pg', '~> 0.18'
|
30
25
|
|
31
26
|
spec.add_development_dependency "bundler", "~> 1.11"
|
32
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
33
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
34
29
|
spec.add_development_dependency "pry", "> 0"
|
35
|
-
spec.add_development_dependency "database_cleaner", "~> 1.5.
|
30
|
+
spec.add_development_dependency "database_cleaner", "~> 1.5.3"
|
31
|
+
spec.add_development_dependency 'rails', '~> 5.0.0.beta4'
|
36
32
|
end
|
data/bin/release
ADDED
data/bin/run_rails.sh
ADDED
data/docker-compose.yml
ADDED
data/lib/active_record_upsert/active_record/connection_adapters/abstract/database_statements.rb
CHANGED
@@ -6,19 +6,7 @@ module ActiveRecordUpsert
|
|
6
6
|
def exec_upsert(_sql, _name, _binds, _pk)
|
7
7
|
raise NotImplementedError
|
8
8
|
end
|
9
|
-
|
10
|
-
def upsert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])
|
11
|
-
sql, binds, pk, _sequence_name = sql_for_upsert(to_sql(arel, binds), pk, id_value, sequence_name, binds)
|
12
|
-
exec_upsert(sql, name, binds, pk)
|
13
|
-
end
|
14
|
-
|
15
|
-
def sql_for_upsert(sql, pk, id_value, sequence_name, binds)
|
16
|
-
[sql, binds, pk, sequence_name]
|
17
|
-
end
|
18
9
|
end
|
19
|
-
|
20
|
-
# ::ActiveRecord::ConnectionAdapters::DatabaseStatements.include(DatabaseStatementsExtensions)
|
21
|
-
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include(DatabaseStatementsExtensions)
|
22
10
|
end
|
23
11
|
end
|
24
12
|
end
|
data/lib/active_record_upsert/active_record/connection_adapters/postgresql/database_statements.rb
CHANGED
@@ -3,17 +3,20 @@ module ActiveRecordUpsert
|
|
3
3
|
module ConnectionAdapters
|
4
4
|
module Postgresql
|
5
5
|
module DatabaseStatementsExtensions
|
6
|
+
def upsert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])
|
7
|
+
sql, binds, pk, _sequence_name = sql_for_upsert(to_sql(arel, binds), pk, id_value, sequence_name, binds)
|
8
|
+
exec_upsert(sql, name, binds, pk)
|
9
|
+
end
|
10
|
+
|
6
11
|
def sql_for_upsert(sql, pk, id_value, sequence_name, binds)
|
7
12
|
sql = "#{sql} RETURNING *"
|
8
|
-
|
13
|
+
[sql, binds, pk, sequence_name]
|
9
14
|
end
|
10
15
|
|
11
16
|
def exec_upsert(sql, name, binds, pk)
|
12
17
|
exec_query(sql, name, binds)
|
13
18
|
end
|
14
19
|
end
|
15
|
-
|
16
|
-
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include(DatabaseStatementsExtensions)
|
17
20
|
end
|
18
21
|
end
|
19
22
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'active_record/connection_adapters/postgresql_adapter'
|
2
|
-
|
3
1
|
Dir.glob(File.join(__dir__, 'active_record/**/*.rb')) do |f|
|
4
2
|
require f
|
5
3
|
end
|
@@ -13,4 +11,8 @@ end
|
|
13
11
|
::ActiveRecord::Base.prepend(ActiveRecordUpsert::ActiveRecord::TimestampExtensions)
|
14
12
|
::ActiveRecord::Base.prepend(ActiveRecordUpsert::ActiveRecord::TransactionsExtensions)
|
15
13
|
|
14
|
+
#::ActiveRecord::ConnectionAdapters::DatabaseStatements.include(ActiveRecordUpsert::ActiveRecord::ConnectionAdapters::Abstract::DatabaseStatementsExtensions)
|
15
|
+
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include(ActiveRecordUpsert::ActiveRecord::ConnectionAdapters::Abstract::DatabaseStatementsExtensions)
|
16
|
+
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include(ActiveRecordUpsert::ActiveRecord::ConnectionAdapters::Postgresql::DatabaseStatementsExtensions)
|
17
|
+
|
16
18
|
::ActiveRecord::Relation.include(ActiveRecordUpsert::ActiveRecord::RelationExtensions)
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_upsert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesper Josefsson
|
8
|
+
- Olle Jonsson
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date: 2016-
|
12
|
+
date: 2016-10-14 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activerecord
|
@@ -16,14 +17,14 @@ dependencies:
|
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.0.0.
|
20
|
+
version: 5.0.0.beta4
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: 5.0.0.
|
27
|
+
version: 5.0.0.beta4
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: arel
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,17 +115,32 @@ dependencies:
|
|
114
115
|
requirements:
|
115
116
|
- - "~>"
|
116
117
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.5.
|
118
|
+
version: 1.5.3
|
118
119
|
type: :development
|
119
120
|
prerelease: false
|
120
121
|
version_requirements: !ruby/object:Gem::Requirement
|
121
122
|
requirements:
|
122
123
|
- - "~>"
|
123
124
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.5.
|
125
|
+
version: 1.5.3
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rails
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 5.0.0.beta4
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 5.0.0.beta4
|
125
140
|
description:
|
126
141
|
email:
|
127
142
|
- jesper.josefsson@gmail.com
|
143
|
+
- olle.jonsson@gmail.com
|
128
144
|
executables: []
|
129
145
|
extensions: []
|
130
146
|
extra_rdoc_files: []
|
@@ -132,12 +148,18 @@ files:
|
|
132
148
|
- ".gitignore"
|
133
149
|
- ".rspec"
|
134
150
|
- ".travis.yml"
|
151
|
+
- Dockerfile
|
135
152
|
- Gemfile
|
153
|
+
- Gemfile.docker
|
136
154
|
- README.md
|
137
155
|
- Rakefile
|
138
156
|
- active_record_upsert.gemspec
|
139
157
|
- bin/console
|
158
|
+
- bin/release
|
159
|
+
- bin/run_docker_test.sh
|
160
|
+
- bin/run_rails.sh
|
140
161
|
- bin/setup
|
162
|
+
- docker-compose.yml
|
141
163
|
- lib/active_record_upsert.rb
|
142
164
|
- lib/active_record_upsert/active_record.rb
|
143
165
|
- lib/active_record_upsert/active_record/connection_adapters/abstract/database_statements.rb
|
@@ -178,9 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
200
|
version: '0'
|
179
201
|
requirements: []
|
180
202
|
rubyforge_project:
|
181
|
-
rubygems_version: 2.5.1
|
203
|
+
rubygems_version: 2.4.5.1
|
182
204
|
signing_key:
|
183
205
|
specification_version: 4
|
184
206
|
summary: Real PostgreSQL 9.5+ upserts using ON CONFLICT for ActiveRecord
|
185
207
|
test_files: []
|
186
|
-
has_rdoc:
|