schema_plus_core 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5fdcb1b5d55bc09bdff0ca89474a8e550d35b020
4
- data.tar.gz: ae536eca65f37ce4eb3686edf7eae712efdfc72d
3
+ metadata.gz: 3e8e79d68457a1e4ce6d7ff39807855e36cd2e9a
4
+ data.tar.gz: 5155f4e1926b764f3170c699eafb3e4cb789ecf9
5
5
  SHA512:
6
- metadata.gz: 35f641bf268e73aacf8922e078b3e37a8f03ec35dbc4116f2cc9421f374e9a457059f934b52290392a48aceda41c3b63018974238c4d1188533b99b40e958c92
7
- data.tar.gz: eab9a007c118a5f0875c7e1299182c075c306e61d6756a33b4c1dd3eab216760f49780477c914efea55d3d694ec5bdea3a161332cae72e6b55e76f08eda38c19
6
+ metadata.gz: cb5a7d23d7ab4f2fbb0c750386f4c5b721f9d8f4f72331290368569bbeba44e0da640c56b30c96728aa410e81bf9b39997fa9c214b835ca3e07ed62519da604e
7
+ data.tar.gz: 6e4369733968625498dcf83a73748640f2af0e9456fd9a2b045bc9052977850b3b597f1d00240af92001e163370e3556480d853103768a52ead5e4ed5b746ae7
data/.travis.yml CHANGED
@@ -5,7 +5,8 @@
5
5
  ---
6
6
  sudo: false
7
7
  rvm:
8
- - 2.3.1
8
+ - 2.4.4
9
+ - 2.5.1
9
10
  gemfile:
10
11
  - gemfiles/activerecord-5.0/Gemfile.mysql2
11
12
  - gemfiles/activerecord-5.0/Gemfile.postgresql
@@ -13,6 +14,9 @@ gemfile:
13
14
  - gemfiles/activerecord-5.1/Gemfile.mysql2
14
15
  - gemfiles/activerecord-5.1/Gemfile.postgresql
15
16
  - gemfiles/activerecord-5.1/Gemfile.sqlite3
17
+ - gemfiles/activerecord-5.2/Gemfile.mysql2
18
+ - gemfiles/activerecord-5.2/Gemfile.postgresql
19
+ - gemfiles/activerecord-5.2/Gemfile.sqlite3
16
20
  env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
17
21
  addons:
18
22
  postgresql: '9.4'
data/README.md CHANGED
@@ -23,8 +23,12 @@ SchemaPlus::Core is tested on:
23
23
 
24
24
  <!-- SCHEMA_DEV: MATRIX - begin -->
25
25
  <!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->
26
- * ruby **2.3.1** with activerecord **5.0**, using **mysql2**, **sqlite3** or **postgresql**
27
- * ruby **2.3.1** with activerecord **5.1**, using **mysql2**, **sqlite3** or **postgresql**
26
+ * ruby **2.4.4** with activerecord **5.0**, using **mysql2**, **sqlite3** or **postgresql**
27
+ * ruby **2.4.4** with activerecord **5.1**, using **mysql2**, **sqlite3** or **postgresql**
28
+ * ruby **2.4.4** with activerecord **5.2**, using **mysql2**, **sqlite3** or **postgresql**
29
+ * ruby **2.5.1** with activerecord **5.0**, using **mysql2**, **sqlite3** or **postgresql**
30
+ * ruby **2.5.1** with activerecord **5.1**, using **mysql2**, **sqlite3** or **postgresql**
31
+ * ruby **2.5.1** with activerecord **5.2**, using **mysql2**, **sqlite3** or **postgresql**
28
32
 
29
33
  <!-- SCHEMA_DEV: MATRIX - end -->
30
34
 
@@ -127,7 +131,6 @@ Stacks for general operations queries pertaining to the entire database schema:
127
131
  `:index_definitions` | The result of the lookup | `[]`
128
132
  `:connection` | The current ActiveRecord connection | *context*
129
133
  `:table_name` | The name of the table to query | *arg*
130
- `:query_name` | Label sometimes used by ActiveRecord logging | *arg*
131
134
 
132
135
  The base implementation appends its results to `env.index_definitions`
133
136
 
@@ -441,6 +444,7 @@ SchemaPlus::Core provides a state object and of callbacks to various phases of t
441
444
 
442
445
  ## Release Notes
443
446
 
447
+ * 2.2.0 Added AR5.2 support. Thanks to [@jeremyyap](https://github.com/jeremyyap)
444
448
  * 2.1.1 Bug fix: Don't lose habtm options. Thanks to [@iagopiimenta ](https://github.com/iagopiimenta)
445
449
  * 2.1.0 Added AR5.1 support. Thanks to [@iagopiimenta ](https://github.com/iagopiimenta)
446
450
  * 2.0.1 Tighten up AR dependency. Thanks to [@myabc](https://github.com/myabc).
@@ -0,0 +1,3 @@
1
+ eval File.read File.expand_path('../../Gemfile.base', __FILE__)
2
+
3
+ gem "activerecord", ">= 5.2.0.beta0", "< 5.3"
@@ -0,0 +1,10 @@
1
+ require "pathname"
2
+ eval(Pathname.new(__FILE__).dirname.join("Gemfile.base").read, binding)
3
+
4
+ platform :ruby do
5
+ gem "mysql2"
6
+ end
7
+
8
+ platform :jruby do
9
+ gem 'activerecord-jdbcmysql-adapter'
10
+ end
@@ -0,0 +1,10 @@
1
+ require "pathname"
2
+ eval(Pathname.new(__FILE__).dirname.join("Gemfile.base").read, binding)
3
+
4
+ platform :ruby do
5
+ gem "pg"
6
+ end
7
+
8
+ platform :jruby do
9
+ gem 'activerecord-jdbcpostgresql-adapter'
10
+ end
@@ -0,0 +1,10 @@
1
+ require "pathname"
2
+ eval(Pathname.new(__FILE__).dirname.join("Gemfile.base").read, binding)
3
+
4
+ platform :ruby do
5
+ gem "sqlite3"
6
+ end
7
+
8
+ platform :jruby do
9
+ gem 'activerecord-jdbcsqlite3-adapter', '>=1.3.0.beta2'
10
+ end
@@ -26,4 +26,8 @@ require_relative "core/schema_dump"
26
26
  require_relative "core/sql_struct"
27
27
  require_relative "core/version"
28
28
 
29
+ if ActiveRecord.version >= Gem::Version.new('5.2.0.rc1')
30
+ require_relative "core/active_record/connection_adapters/postgresql/schema_dumper"
31
+ end
32
+
29
33
  SchemaMonkey.register(SchemaPlus::Core)
@@ -20,13 +20,13 @@ module SchemaPlus
20
20
  # don't have a documented return value. But at least one gem
21
21
  # (https://github.com/hzamani/active_record-acts_as/blob/master/lib/active_record/acts_as/relation.rb#L14)
22
22
  # relies on the undocumented return value.
23
- def has_many(name, scope = nil, options = {}, &extension)
23
+ def has_many(name, scope = nil, **options, &extension)
24
24
  SchemaMonkey::Middleware::Model::Association::Declaration.start(model: self, name: name, scope: scope, options: options, extension: extension) do |env|
25
25
  env.result = super(env.name, env.scope, env.options, &env.extension)
26
26
  end.result
27
27
  end
28
28
 
29
- def has_one(name, scope = nil, options = {}, &extension)
29
+ def has_one(name, scope = nil, **options, &extension)
30
30
  SchemaMonkey::Middleware::Model::Association::Declaration.start(model: self, name: name, scope: scope, options: options, extension: extension) do |env|
31
31
  env.result = super(env.name, env.scope, env.options, &env.extension)
32
32
  end.result
@@ -38,7 +38,7 @@ module SchemaPlus
38
38
  end.result
39
39
  end
40
40
 
41
- def belongs_to(name, scope = nil, options = {}, &extension)
41
+ def belongs_to(name, scope = nil, **options, &extension)
42
42
  SchemaMonkey::Middleware::Model::Association::Declaration.start(model: self, name: name, scope: scope, options: options, extension: extension) do |env|
43
43
  env.result = super(env.name, env.scope, env.options, &env.extension)
44
44
  end.result
@@ -28,9 +28,9 @@ module SchemaPlus
28
28
  end
29
29
  end
30
30
 
31
- def indexes(table_name, query_name=nil)
32
- SchemaMonkey::Middleware::Schema::Indexes.start(connection: self, table_name: table_name, query_name: query_name, index_definitions: []) { |env|
33
- env.index_definitions += super env.table_name, env.query_name
31
+ def indexes(table_name)
32
+ SchemaMonkey::Middleware::Schema::Indexes.start(connection: self, table_name: table_name, index_definitions: []) { |env|
33
+ env.index_definitions += super env.table_name
34
34
  }.index_definitions
35
35
  end
36
36
 
@@ -73,4 +73,3 @@ module SchemaPlus
73
73
  end
74
74
  end
75
75
  end
76
-
@@ -0,0 +1,40 @@
1
+ module SchemaPlus
2
+ module Core
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ module PostgreSQL
6
+ module PostgreSQL # need two PostgreSQLs because the first gets stripped by schema_monkey
7
+ module SchemaDumper
8
+
9
+ # quick hack fix quoting of column default functions to allow eval() when we
10
+ # capture the stream.
11
+ #
12
+ # AR's PostgresqlAdapter#prepare_column_options wraps the
13
+ # function in double quotes, which doesn't work because the
14
+ # function itself may have doublequotes in it which don't get
15
+ # escaped properly.
16
+ #
17
+ # Arguably that's a bug in AR, but then again default function
18
+ # expressions don't work well in AR anyway. (hence
19
+ # schema_plus_default_expr )
20
+ #
21
+ def prepare_column_options(column, *) # :nodoc:
22
+ spec = super
23
+ spec[:default] = "%q{#{column.default_function}}" if column.default_function
24
+ spec
25
+ end
26
+
27
+ def extensions(_)
28
+ SchemaMonkey::Middleware::Dumper::Initial.start(dumper: self, connection: @connection, dump: @dump, initial: @dump.initial) do |env|
29
+ stream = StringIO.new
30
+ super stream
31
+ env.dump.initial << stream.string unless stream.string.blank?
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -10,7 +10,7 @@ module SchemaPlus
10
10
  # AR's PostgresqlAdapter#prepare_column_options wraps the
11
11
  # function in double quotes, which doesn't work because the
12
12
  # function itself may have doublequotes in it which don't get
13
- # escaped properly.
13
+ # escaped properly.
14
14
  #
15
15
  # Arguably that's a bug in AR, but then again default function
16
16
  # expressions don't work well in AR anyway. (hence
@@ -58,9 +58,9 @@ module SchemaPlus
58
58
  }.result
59
59
  end
60
60
 
61
- def indexes(table_name, query_name=nil)
62
- SchemaMonkey::Middleware::Schema::Indexes.start(connection: self, table_name: table_name, query_name: query_name, index_definitions: []) { |env|
63
- env.index_definitions += super env.table_name, env.query_name
61
+ def indexes(table_name)
62
+ SchemaMonkey::Middleware::Schema::Indexes.start(connection: self, table_name: table_name, index_definitions: []) { |env|
63
+ env.index_definitions += super env.table_name
64
64
  }.index_definitions
65
65
  end
66
66
 
@@ -28,9 +28,9 @@ module SchemaPlus
28
28
  }.result
29
29
  end
30
30
 
31
- def indexes(table_name, query_name=nil)
32
- SchemaMonkey::Middleware::Schema::Indexes.start(connection: self, table_name: table_name, query_name: query_name, index_definitions: []) { |env|
33
- env.index_definitions += super env.table_name, env.query_name
31
+ def indexes(table_name)
32
+ SchemaMonkey::Middleware::Schema::Indexes.start(connection: self, table_name: table_name, index_definitions: []) { |env|
33
+ env.index_definitions += super env.table_name
34
34
  }.index_definitions
35
35
  end
36
36
 
@@ -44,5 +44,3 @@ module SchemaPlus
44
44
  end
45
45
  end
46
46
  end
47
-
48
-
@@ -1,5 +1,5 @@
1
1
  module SchemaPlus
2
2
  module Core
3
- VERSION = "2.1.1"
3
+ VERSION = "2.2.0"
4
4
  end
5
5
  end
data/schema_dev.yml CHANGED
@@ -1,8 +1,10 @@
1
1
  ruby:
2
- - 2.3.1
2
+ - 2.4.4
3
+ - 2.5.1
3
4
  activerecord:
4
5
  - 5.0
5
6
  - 5.1
7
+ - 5.2
6
8
  db:
7
9
  - mysql2
8
10
  - sqlite3
@@ -26,7 +26,7 @@ Gem::Specification.new do |gem|
26
26
  gem.add_development_dependency "rake", "~> 10.0"
27
27
  gem.add_development_dependency "rspec", "~> 3.0.0"
28
28
  gem.add_development_dependency "rspec-given"
29
- gem.add_development_dependency "schema_dev", "~> 3.7"
29
+ gem.add_development_dependency "schema_dev", "~> 3.11"
30
30
  gem.add_development_dependency "simplecov"
31
31
  gem.add_development_dependency "simplecov-gem-profile"
32
32
  gem.add_development_dependency "its-it"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ronen barzel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-31 00:00:00.000000000 Z
11
+ date: 2018-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.7'
117
+ version: '3.11'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '3.7'
124
+ version: '3.11'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: simplecov
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -187,10 +187,15 @@ files:
187
187
  - gemfiles/activerecord-5.1/Gemfile.mysql2
188
188
  - gemfiles/activerecord-5.1/Gemfile.postgresql
189
189
  - gemfiles/activerecord-5.1/Gemfile.sqlite3
190
+ - gemfiles/activerecord-5.2/Gemfile.base
191
+ - gemfiles/activerecord-5.2/Gemfile.mysql2
192
+ - gemfiles/activerecord-5.2/Gemfile.postgresql
193
+ - gemfiles/activerecord-5.2/Gemfile.sqlite3
190
194
  - lib/schema_plus/core.rb
191
195
  - lib/schema_plus/core/active_record/base.rb
192
196
  - lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb
193
197
  - lib/schema_plus/core/active_record/connection_adapters/mysql2_adapter.rb
198
+ - lib/schema_plus/core/active_record/connection_adapters/postgresql/schema_dumper.rb
194
199
  - lib/schema_plus/core/active_record/connection_adapters/postgresql_adapter.rb
195
200
  - lib/schema_plus/core/active_record/connection_adapters/sqlite3_adapter.rb
196
201
  - lib/schema_plus/core/active_record/connection_adapters/table_definition.rb