schema_plus 1.3.1 → 1.3.2
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/README.md +14 -9
- data/lib/schema_plus/active_record/connection_adapters/abstract_adapter.rb +7 -5
- data/lib/schema_plus/active_record/schema_dumper.rb +1 -1
- data/lib/schema_plus/version.rb +1 -1
- data/spec/index_spec.rb +21 -0
- data/spec/schema_dumper_spec.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72d678562e79aad7720350482d28f4a9f5c49130
|
4
|
+
data.tar.gz: 5d64c187a751e8a22c1b00af12c8e93e2e426318
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c30849dd3016aa030dbd39aaceaa6358931908492159aca58703f3a2d7d57821ce17365f137dae123fb44a574beb86f08f06d40a819ae538764186fedede689c
|
7
|
+
data.tar.gz: 1c654a69c17dd13a6d898b5b308c865d4487f1df33e95fc1672e011a0ad9e756cf6df8252eec5dbd7034d2b1d72f3e75a0115b6b0796d89f22cebd99e60bdb38
|
data/README.md
CHANGED
@@ -43,7 +43,7 @@ or in a Gemfile
|
|
43
43
|
|
44
44
|
## Features
|
45
45
|
|
46
|
-
|
46
|
+
This README lists the major features, with examples of use. For full details see the
|
47
47
|
[RDoc documentation](http://rubydoc.info/gems/schema_plus).
|
48
48
|
|
49
49
|
### Indexes
|
@@ -103,14 +103,14 @@ expressions, index methods, and case-insensitive indexes:
|
|
103
103
|
t.string :last_name, index: { kind: 'hash' }
|
104
104
|
t.string :last_name, index: { case_sensitive: false } # shorthand for expression: 'lower(last_name)'
|
105
105
|
|
106
|
-
These features are available also in ActiveRecord::Migration.add_index
|
107
|
-
doc
|
108
|
-
SchemaPlus::ActiveRecord::ConnectionAdapters::IndexDefinition
|
106
|
+
These features are available also in `ActiveRecord::Migration.add_index`. See
|
107
|
+
doc for [SchemaPlus::ActiveRecord::ConnectionAdapters::PostgresqlAdapter](http://rubydoc.info/gems/schema_plus/SchemaPlus/ActiveRecord/ConnectionAdapters/PostgresqlAdapter) and
|
108
|
+
[SchemaPlus::ActiveRecord::ConnectionAdapters::IndexDefinition](http://rubydoc.info/gems/schema_plus/SchemaPlus/ActiveRecord/ConnectionAdapters/IndexDefinition)
|
109
109
|
|
110
110
|
When you query column information using ActiveRecord::Base#columns, SchemaPlus
|
111
111
|
analogously provides index information relevant to each column: which indexes
|
112
|
-
reference the column, whether the column must be unique, etc. See doc
|
113
|
-
SchemaPlus::ActiveRecord::ConnectionAdapters::Column
|
112
|
+
reference the column, whether the column must be unique, etc. See doc for
|
113
|
+
[SchemaPlus::ActiveRecord::ConnectionAdapters::Column](http://rubydoc.info/gems/schema_plus/SchemaPlus/ActiveRecord/ConnectionAdapters/Column).
|
114
114
|
|
115
115
|
SchemaPlus also tidies some index-related behavior:
|
116
116
|
|
@@ -175,8 +175,8 @@ The foreign key behavior can be configured globally (see Config) or per-table
|
|
175
175
|
To examine your foreign key constraints, `connection.foreign_keys` returns a
|
176
176
|
list of foreign key constraints defined for a given table, and
|
177
177
|
`connection.reverse_foreign_keys` returns a list of foreign key constraints
|
178
|
-
that reference a given table. See
|
179
|
-
SchemaPlus::ActiveRecord::ConnectionAdapters::ForeignKeyDefinition.
|
178
|
+
that reference a given table. See doc at
|
179
|
+
[SchemaPlus::ActiveRecord::ConnectionAdapters::ForeignKeyDefinition](http://rubydoc.info/gems/schema_plus/SchemaPlus/ActiveRecord/ConnectionAdapters/ForeignKeyDefinition).
|
180
180
|
|
181
181
|
#### Foreign Key Issues
|
182
182
|
|
@@ -298,7 +298,12 @@ of foreign key constraints, you can re-enable it:
|
|
298
298
|
|
299
299
|
### Master branch (to be released)
|
300
300
|
|
301
|
-
*
|
301
|
+
* *nothing currently waiting to be released*
|
302
|
+
|
303
|
+
### 1.3.2
|
304
|
+
|
305
|
+
* Bug fix, remove_index with if_exists but no name
|
306
|
+
* Sort indexes alphabetically when dumping, like rails does
|
302
307
|
|
303
308
|
### 1.3.1
|
304
309
|
|
@@ -26,10 +26,11 @@ module SchemaPlus
|
|
26
26
|
when /^MySQL/i then 'MysqlAdapter'
|
27
27
|
when 'PostgreSQL', 'PostGIS' then 'PostgresqlAdapter'
|
28
28
|
when 'SQLite' then 'Sqlite3Adapter'
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
end
|
30
|
+
unless adapter
|
31
|
+
::ActiveRecord::Base.logger.warn "SchemaPlus: Unsupported adapter name #{adapter_name.inspect}. Leaving it alone."
|
32
|
+
return
|
33
|
+
end
|
33
34
|
adapter_module = SchemaPlus::ActiveRecord::ConnectionAdapters.const_get(adapter)
|
34
35
|
self.class.send(:include, adapter_module) unless self.class.include?(adapter_module)
|
35
36
|
|
@@ -133,9 +134,10 @@ module SchemaPlus
|
|
133
134
|
# :if_exists
|
134
135
|
def remove_index_with_schema_plus(table_name, *args)
|
135
136
|
options = args.extract_options!
|
136
|
-
|
137
|
+
if_exists = options.delete(:if_exists)
|
137
138
|
options.delete(:column) if options[:name] and ::ActiveRecord::VERSION::MAJOR < 4
|
138
139
|
args << options if options.any?
|
140
|
+
return if if_exists and not index_name_exists?(table_name, options[:name] || index_name(table_name, *args), false)
|
139
141
|
remove_index_without_schema_plus(table_name, *args)
|
140
142
|
end
|
141
143
|
|
data/lib/schema_plus/version.rb
CHANGED
data/spec/index_spec.rb
CHANGED
@@ -177,6 +177,13 @@ describe "index" do
|
|
177
177
|
User.indexes.length.should == 0
|
178
178
|
end
|
179
179
|
|
180
|
+
it "removes index using column option" do
|
181
|
+
add_index :users, :login
|
182
|
+
User.indexes.length.should == 1
|
183
|
+
remove_index :users, column: :login
|
184
|
+
User.indexes.length.should == 0
|
185
|
+
end
|
186
|
+
|
180
187
|
it "removes index if_exists" do
|
181
188
|
add_index :users, :login
|
182
189
|
User.indexes.length.should == 1
|
@@ -184,6 +191,20 @@ describe "index" do
|
|
184
191
|
User.indexes.length.should == 0
|
185
192
|
end
|
186
193
|
|
194
|
+
it "removes multi-column index if exists" do
|
195
|
+
add_index :users, [:login, :deleted_at]
|
196
|
+
User.indexes.length.should == 1
|
197
|
+
remove_index :users, [:login, :deleted_at], :if_exists => true
|
198
|
+
User.indexes.length.should == 0
|
199
|
+
end
|
200
|
+
|
201
|
+
it "removes index if_exists using column option" do
|
202
|
+
add_index :users, :login
|
203
|
+
User.indexes.length.should == 1
|
204
|
+
remove_index :users, column: :login, :if_exists => true
|
205
|
+
User.indexes.length.should == 0
|
206
|
+
end
|
207
|
+
|
187
208
|
it "raises exception if doesn't exist" do
|
188
209
|
expect {
|
189
210
|
remove_index :users, :login
|
data/spec/schema_dumper_spec.rb
CHANGED
@@ -161,6 +161,14 @@ describe "Schema dump" do
|
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
164
|
+
it "should sort indexes" do
|
165
|
+
with_index Post, :user_id do
|
166
|
+
with_index Post, :short_id do
|
167
|
+
dump_posts.should match(/on_short_id.+on_user_id/m)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
164
172
|
unless SchemaPlusHelpers.mysql?
|
165
173
|
|
166
174
|
it "should include index order" do
|
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: 1.3.
|
4
|
+
version: 1.3.2
|
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: 2013-
|
12
|
+
date: 2013-12-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|