schema_plus 2.0.0.pre10 → 2.0.0.pre11

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: 0c5aee9479eef0756986536130a26f38f23c4a87
4
- data.tar.gz: 4447fc06494c1646f8587f11882751618fc9f4cd
3
+ metadata.gz: 18fb53e5cdb54375f9ebd2f978833266b7b61f38
4
+ data.tar.gz: c2b17dd83a109cdb32f10c7883447f14b85f9ffd
5
5
  SHA512:
6
- metadata.gz: 235927976009fd939faa6180f2465a12aa03db03263f310428c94e2d23bb3ba9c86e9343cc2dcdd4a12bead0ed058f9b84ce61d13e9ec06f1cdda719e768b5f5
7
- data.tar.gz: fb6d3574efc491cdf8d4e344a0c554f051ee072fae6a3050ecdc5e32cb2021daec0acf8076f86d43aec0ccf3ae75c3558ef7a451142414886e6b5303512229d1
6
+ metadata.gz: 95c9f95715df96aca11804ab355833bfd61d624e5bf8d493ed00d3dc265dd06b089921b0aaeb745e6c209bc8594e72b3b7599dfa668d90a2a5e1670139aea22e
7
+ data.tar.gz: 7519c544165bf8324754dee3e5249b99bf9943d7734e8dc976f06813f8bf89a1f32ed90f5861567d09d72c4f2f4f035469f564d28a03772760c91fec3289be6e
data/README.md CHANGED
@@ -1,24 +1,18 @@
1
1
 
2
- > ## This is the README for SchemaPlus 2.0.0 (prelease)
3
- > which is under development in the master branch, and which supports Rails >= 4.2. For info about the stable 1.x releases which support Rails 3.1, 4.0, 4.1, and 4.2, see the [schema_plus 1.x](https://github.com/SchemaPlus/schema_plus/tree/1.x) branch
4
2
 
5
- ---
6
3
 
7
- [![Gem Version](https://badge.fury.io/rb/schema_plus.svg)](http://badge.fury.io/rb/schema_plus)
8
- [![Build Status](https://secure.travis-ci.org/SchemaPlus/schema_plus.svg)](http://travis-ci.org/SchemaPlus/schema_plus)
9
- [![Coverage Status](https://img.shields.io/coveralls/SchemaPlus/schema_plus.svg)](https://coveralls.io/r/SchemaPlus/schema_plus)
10
- [![Dependency Status](https://gemnasium.com/lomba/schema_plus.svg)](https://gemnasium.com/SchemaPlus/schema_plus)
4
+ # SchemaPlus family
11
5
 
12
- # SchemaPlus
6
+ The SchemaPlus family of gems provide various extensions and enhancements to ActiveRecord.
13
7
 
14
- The SchemaPlus family of gems provide various extensions and enhancements to ActiveRecord. Listed alphabetically:
8
+ Listed alphabetically:
15
9
 
16
10
  Gem | Description | Included In `schema_plus` gem?
17
11
  ----| ----------- |:------------------------------:
18
12
  [schema_associations](https://github.com/SchemaPlus/schema_associations) | Automatically defines model associations based on foreign key relations |
19
13
  <p style="color:grey">schema_auto_foreign_keys</p> | Automatically creates foreign keys on referencing columns | Y
20
14
  [schema_plus_columns](https://github.com/SchemaPlus/schema_plus_columns) | Column attributes including `column.indexes` and `column.unique?` | Y
21
- <p style="color:grey">schema_plus_db_default</p> | Use `ActiveRecord::DB_DEFAULT` to set an attribute to the database default | Y
15
+ [schema_plus_db_default](https://github.com/SchemaPlus/schema_plus_db_default) | Use `ActiveRecord::DB_DEFAULT` to set an attribute to the database default | Y
22
16
  <p style="color:grey">schema_plus_default_expr</p> | Use SQL expressions for database default values | Y
23
17
  [schema_plus_enums](https://github.com/SchemaPlus/schema_plus_enums) | Define enum types in migrations | Y
24
18
  <p style="color:grey">schema_plus_foreign_keys | Extended support for foreign keys, including creation as column options, `:deferrable`, and SQLite3 support | Y
@@ -32,10 +26,22 @@ See detailed documentation in each gem's README.
32
26
 
33
27
  *Is there some other capability you wish SchemaPlus had a gem for?* Open an issue here. Or try implementing it yourself -- creating ActiveRecord extensions is easy and fun using SchemaPlus's tools [schema_monkey](https://github.com/SchemaPlus/schema_monkey) and [schema_plus_core](https://github.com/SchemaPlus/schema_plus_core)!!
34
28
 
29
+ ---
30
+ # The `schema_plus` gem
31
+
32
+ [![Gem Version](https://badge.fury.io/rb/schema_plus.svg)](http://badge.fury.io/rb/schema_plus)
33
+ [![Build Status](https://secure.travis-ci.org/SchemaPlus/schema_plus.svg)](http://travis-ci.org/SchemaPlus/schema_plus)
34
+ [![Coverage Status](https://img.shields.io/coveralls/SchemaPlus/schema_plus.svg)](https://coveralls.io/r/SchemaPlus/schema_plus)
35
+ [![Dependency Status](https://gemnasium.com/lomba/schema_plus.svg)](https://gemnasium.com/SchemaPlus/schema_plus)
36
+
37
+
38
+ > ## This is the README for schema_plus 2.0.0 (prelease)
39
+ > which is under development in the master branch, and which supports Rails >= 4.2. For info about the stable 1.x releases which support Rails 3.1, 4.0, 4.1, and 4.2.0, see the [schema_plus 1.x](https://github.com/SchemaPlus/schema_plus/tree/1.x) branch
40
+
41
+ ---
35
42
 
36
- ## The `schema_plus` gem
37
43
 
38
- The `schema_plus` gem is a wrapper that pulls in a common collection of those gems. But you can feel free to mix and match to get just the gems you want.
44
+ The `schema_plus` gem is a wrapper that pulls in a common collection of gems from the SchemaPlus family. But you can feel free to mix and match to get just the gems you want.
39
45
 
40
46
  Note: Prior to version 2.0, `schema_plus` was a single monolothic gem that implemented in itself all the features that are now included by the wrapper.
41
47
 
@@ -112,7 +118,7 @@ or in a Gemfile
112
118
  # Prerelease: Documentation of features still be moved into separate feature gems
113
119
 
114
120
 
115
- > **NOTE** The documentation in this README is leftover from the 1.x branch; the functionality is the same, but some of the core features of schema_plus (such as foreign keys & inline index definition) are now provided by ActiveRecord 4.2. schema_plus still provides extra functionality beyond AR 4.2, but the documentation needs to be updated to be clear what's an enhancement of AR 4.2 capabilities rather than completely new features.
121
+ > **NOTE** The documentation in this README is leftover from the 1.x branch; the functionality is the same, but some of the core features of schema_plus (such as foreign keys) are now provided by ActiveRecord 4.2. schema_plus still provides extra functionality beyond AR 4.2, but the documentation needs to be updated to be clear what's an enhancement of AR 4.2 capabilities rather than completely new features.
116
122
 
117
123
  ### Foreign Key Constraints
118
124
 
@@ -208,25 +214,7 @@ If you are using Postgresql with a `json` column, the default value may be an un
208
214
 
209
215
  t.json :fields, default: { field1: 'a', field2: 'b' }
210
216
  t.json :fields, default: { value: { field1: 'a', field2: 'b' } }
211
-
212
-
213
- ### Column Defaults: Using
214
-
215
- SchemaPlus introduces a constant `ActiveRecord::DB_DEFAULT` that you can use
216
- to explicitly instruct the database to use the column default value (or
217
- expression). For example:
218
-
219
- Post.create(category: ActiveRecord::DB_DEFAULT)
220
- post.update_attributes(category: ActiveRecord::DB_DEFAULT)
221
-
222
- (Without `ActiveRecord::DB_DEFAULT`, you can update a value to `NULL` but not
223
- to its default value.)
224
-
225
- Note that after updating, you would need to reload a record to replace
226
- `ActiveRecord::DB_DEFAULT` with the value assigned by the database.
227
217
 
228
- Note also that Sqlite3 does not support `ActiveRecord::DB_DEFAULT`; attempting
229
- to use it will raise `ActiveRecord::StatementInvalid`
230
218
 
231
219
  ### Schema Dump and Load (schema.rb)
232
220
 
@@ -1,3 +1,3 @@
1
1
  module SchemaPlus
2
- VERSION = "2.0.0.pre10"
2
+ VERSION = "2.0.0.pre11"
3
3
  end
@@ -27,6 +27,7 @@ Gem::Specification.new do |gem|
27
27
  gem.add_dependency "schema_monkey", "~> 2.1"
28
28
  gem.add_dependency "schema_plus_columns", "~> 0.1"
29
29
  gem.add_dependency "schema_plus_enums", "~> 0.1"
30
+ gem.add_dependency "schema_plus_db_default", "~> 0.1"
30
31
  gem.add_dependency "schema_plus_indexes", "~> 0.1", ">= 0.1.3"
31
32
  gem.add_dependency "schema_plus_pg_indexes", "~> 0.1", ">= 0.1.3"
32
33
  gem.add_dependency "schema_plus_tables", "~> 0.1"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre10
4
+ version: 2.0.0.pre11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ronen Barzel
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-21 00:00:00.000000000 Z
12
+ date: 2015-03-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0.1'
98
+ - !ruby/object:Gem::Dependency
99
+ name: schema_plus_db_default
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0.1'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.1'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: schema_plus_indexes
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -276,10 +290,6 @@ files:
276
290
  - gemfiles/activerecord-4.2.1/Gemfile.postgresql
277
291
  - gemfiles/activerecord-4.2.1/Gemfile.sqlite3
278
292
  - lib/schema_plus.rb
279
- - lib/schema_plus/db_default.rb
280
- - lib/schema_plus/db_default/active_record/attribute.rb
281
- - lib/schema_plus/db_default/db_default.rb
282
- - lib/schema_plus/db_default/middleware.rb
283
293
  - lib/schema_plus/default_expr.rb
284
294
  - lib/schema_plus/default_expr/active_record/connection_adapters/column.rb
285
295
  - lib/schema_plus/default_expr/active_record/connection_adapters/mysql2_adapter.rb
@@ -307,7 +317,6 @@ files:
307
317
  - schema_plus.gemspec
308
318
  - spec/schema/auto_schema.rb
309
319
  - spec/schema/core_schema.rb
310
- - spec/schema_plus_db_default/column_spec.rb
311
320
  - spec/schema_plus_default_expr/column_default_spec.rb
312
321
  - spec/schema_plus_default_expr/migration_spec.rb
313
322
  - spec/schema_plus_default_expr/schema_dumper_spec.rb
@@ -350,7 +359,6 @@ summary: Enhances ActiveRecord schema mechanism, including more DRY index creati
350
359
  test_files:
351
360
  - spec/schema/auto_schema.rb
352
361
  - spec/schema/core_schema.rb
353
- - spec/schema_plus_db_default/column_spec.rb
354
362
  - spec/schema_plus_default_expr/column_default_spec.rb
355
363
  - spec/schema_plus_default_expr/migration_spec.rb
356
364
  - spec/schema_plus_default_expr/schema_dumper_spec.rb
@@ -1,7 +0,0 @@
1
- require 'schema_plus/core'
2
-
3
- require_relative 'db_default/active_record/attribute'
4
- require_relative 'db_default/db_default'
5
- require_relative 'db_default/middleware'
6
-
7
- SchemaMonkey.register SchemaPlus::DbDefault
@@ -1,16 +0,0 @@
1
- module SchemaPlus::DbDefault
2
- module ActiveRecord
3
- module Attribute
4
-
5
- def original_value
6
- # prevent attempts to cast DB_DEFAULT to the attributes type.
7
- # We want to keep it as DB_DEFAULT so that we can handle it when
8
- # generating the sql.
9
- return DB_DEFAULT if value_before_type_cast.equal? DB_DEFAULT
10
- super
11
- end
12
-
13
- end
14
- end
15
- end
16
-
@@ -1,19 +0,0 @@
1
- require 'singleton'
2
-
3
- module SchemaPlus::DbDefault
4
- class DbDefault
5
- include Singleton
6
- def to_s
7
- 'DEFAULT'
8
- end
9
- def id
10
- self
11
- end
12
- def quoted_id
13
- self
14
- end
15
- end
16
- DB_DEFAULT = DbDefault.instance
17
- end
18
-
19
- ::ActiveRecord.const_set :DB_DEFAULT, SchemaPlus::DbDefault::DB_DEFAULT
@@ -1,30 +0,0 @@
1
- module SchemaPlus::DbDefault
2
- module Middleware
3
-
4
- module Query
5
- module Exec
6
-
7
- module Postgresql
8
-
9
- # Middleware to replace each ActiveRecord::DB_DEFAULT with a literal
10
- # DEFAULT in the sql string, for postgresql. The underlying pg gem provides no
11
- # way to bind a value that will replace $n with DEFAULT.
12
- def before(env)
13
- if env.binds.any?{ |col, val| val.equal? ::ActiveRecord::DB_DEFAULT}
14
- j = 0
15
- env.binds.each_with_index do |(col, val), i|
16
- if val.equal? ::ActiveRecord::DB_DEFAULT
17
- env.sql = env.sql.sub(/\$#{i+1}/, 'DEFAULT')
18
- else
19
- env.sql = env.sql.sub(/\$#{i+1}/, "$#{j+1}") if i != j
20
- j += 1
21
- end
22
- end
23
- env.binds = env.binds.reject{|col, val| val.equal? ::ActiveRecord::DB_DEFAULT}
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,58 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SchemaPlus::DbDefault do
4
-
5
- let(:migration) { ::ActiveRecord::Migration }
6
-
7
- before(:each) do
8
- class User < ::ActiveRecord::Base ; end
9
- create_table(User, :alpha => { :default => "gabba" }, :beta => {})
10
- end
11
-
12
- context "uses db default value", :sqlite3 => :skip do
13
-
14
- it "when creating a record with DB_DEFAULT" do
15
- User.create!(:alpha => ActiveRecord::DB_DEFAULT, :beta => "hello")
16
- expect(User.last.alpha).to eq("gabba")
17
- expect(User.last.beta).to eq("hello")
18
- end
19
-
20
- it "when updating a record with DB_DEFAULT" do
21
- u = User.create!(:alpha => "hey", :beta => "hello")
22
- u.reload
23
- expect(u.alpha).to eq("hey")
24
- expect(u.beta).to eq("hello")
25
- u.update_attributes(:alpha => ActiveRecord::DB_DEFAULT, :beta => "goodbye")
26
- u.reload
27
- expect(u.alpha).to eq("gabba")
28
- expect(u.beta).to eq("goodbye")
29
- end
30
-
31
- end
32
-
33
- context "raises an error", :sqlite3 => :only do
34
-
35
- it "when creating a record with DB_DEFAULT" do
36
- expect { User.create!(:alpha => ActiveRecord::DB_DEFAULT, :beta => "hello") }.to raise_error ActiveRecord::StatementInvalid
37
- end
38
-
39
- it "when updating a record with DB_DEFAULT" do
40
- u = User.create!(:alpha => "hey", :beta => "hello")
41
- expect { u.update_attributes(:alpha => ActiveRecord::DB_DEFAULT, :beta => "goodbye") }.to raise_error ActiveRecord::StatementInvalid
42
- end
43
- end
44
-
45
- protected
46
-
47
- def create_table(model, columns_with_options)
48
- migration.suppress_messages do
49
- migration.create_table model.table_name, :force => :cascade do |t|
50
- columns_with_options.each_pair do |column, options|
51
- t.send :string, column, options
52
- end
53
- end
54
- model.reset_column_information
55
- end
56
- end
57
- end
58
-