schema_plus_indexes 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f4aa8a0bb209b6aefdd7ae30e47ec26c594a6e3
4
- data.tar.gz: 6deee591cfa43d5a6bb3a14f5a4048647b9c0a2f
3
+ metadata.gz: ab3b42608f51e2ebb4b7b6b21b5ad2fc6566fec2
4
+ data.tar.gz: a9b0166d7a50826f93825aa20a29f714e952f69e
5
5
  SHA512:
6
- metadata.gz: 73655b914ee4ff00cdc004d605e843eaa9c88268073ae1658ed6b6df0153a8b3e969b48ecdd1595e0c66237afc1e58d10cb18e526de97850dc620627f24bf465
7
- data.tar.gz: c8fe49bbd8130f7562ab10b4d3caff918e2d9efbd826f16ecec40789fb6d979c47a00824df0811d52756c414b171d0a43115a0d355d623f394860a2aaa776919
6
+ metadata.gz: fe17a220b606d91ef6cdc213371ef0ba018c69deda8ba67464a16171ede854b50c30423f17c404b00d622325f746ae6da254dc129641be992ab0fc050a87035b
7
+ data.tar.gz: 375f7b7201cae230180d7bc98fd11a980a5f2d1970b8a481ba2063019d9bc6e528c758758b747dabe8d932ff2ae35c6fe9b77e7bbd9f7b7db6d6b16398715946
data/README.md CHANGED
@@ -3,45 +3,11 @@
3
3
  [![Coverage Status](https://img.shields.io/coveralls/SchemaPlus/schema_plus_indexes.svg)](https://coveralls.io/r/SchemaPlus/schema_plus_indexes)
4
4
  [![Dependency Status](https://gemnasium.com/lomba/schema_plus_indexes.svg)](https://gemnasium.com/SchemaPlus/schema_plus_indexes)
5
5
 
6
- # schema_plus_indexes
6
+ # SchemaPlus::Indexes
7
7
 
8
- SchemaPlusIndexes adds various convenient capabilities to `ActiveRecord`'s index handling:
8
+ SchemaPlus::Indexes adds various convenient capabilities to `ActiveRecord`'s index handling.
9
9
 
10
- * Adds shorthands to the `:index` option in migrations
11
-
12
- create_table :parts do |t|
13
- t.string :role, index: true # shorthand for index: {}
14
- t.string :product_code, index: :unique # shorthand for index: { unique: true }
15
- t.string :first_name
16
- t.string :last_name, index: { with: :first_name } # multi-column index
17
-
18
- t.string :country_code
19
- t.string :area_code
20
- t.string :local_number, index: { with: [:country_code, :area_code] } # multi-column index
21
- end
22
-
23
- Of course options can be combined, such as `index: { with: :first_name, unique: true, name: "my_index"}`
24
-
25
- * Ensures that the `:index` option is respected by `Migration.add_column` and in `Migration.change_table`
26
-
27
- * Adds `:if_exists` option to `ActiveRecord::Migration.remove_index`
28
-
29
- * Provides consistent behavior regarding attempted duplicate index
30
- creation: Ignore and log a warning. Different versions of Rails with
31
- different db adapters otherwise behave inconsistently: some ignore the
32
- attempt, some raise an error.
33
-
34
- * `Model.indexes` returns the indexes defined for the `ActiveRecord` model.
35
- Shorthand for `connection.indexes(Model.table_name)`; the value is cached
36
- until the next time `Model.reset_column_information` is called
37
-
38
- * In the schema dump `schema.rb`, index definitions are included within the
39
- `create_table` statements rather than added afterwards
40
-
41
- * When using SQLite3, makes sure that the definitions returned by
42
- `connection.indexes` properly include the column orders (`:asc` or `:desc`)
43
-
44
- schema_plus_indexes is part of the [SchemaPlus](https://github.com/SchemaPlus/) family of Ruby on Rails extension gems.
10
+ SchemaPlus::Indexes is part of the [SchemaPlus](https://github.com/SchemaPlus/) family of Ruby on Rails extension gems.
45
11
 
46
12
  ## Installation
47
13
 
@@ -64,6 +30,83 @@ which creates a Railtie to that will insert SchemaPlus::Indexes appropriately in
64
30
 
65
31
  <!-- SCHEMA_DEV: TEMPLATE INSTALLATION - end -->
66
32
 
33
+
34
+ ## Features
35
+
36
+ ### Migrations:
37
+
38
+ #### Shorthand to define a column with an index:
39
+
40
+ ```ruby
41
+ t.string :role, index: true # shorthand for index: {}
42
+ ```
43
+
44
+ #### Shorthand to define a column with a unique index:
45
+ ```ruby
46
+ t.string :product_code, index: :unique # shorthand for index: { unique: true }
47
+ ```
48
+
49
+ #### Create multi-column indexes as part of column definition
50
+
51
+ Adds an option to include other columns in the index:
52
+
53
+ ```ruby
54
+ t.string :first_name
55
+ t.string :last_name, index: { with: :first_name }
56
+
57
+ t.string :country_code
58
+ t.string :area_code
59
+ t.string :local_number, index: { with: [:country_code, :area_code] }
60
+ ```
61
+
62
+ #### Create indexes with `add_column`, `change_table`
63
+
64
+ ActiveRecord supports the `index:` option to column definitions when creating table. SchemaPlus::Indexes extends that to work also with `add_column` and in `change_table`
65
+
66
+ ```ruby
67
+ add_column "tablename", "columnname", index: { ... }
68
+
69
+ change_table :tablename do |t|
70
+ t.integer :column, index: true
71
+ end
72
+ ```
73
+
74
+ These of course accept the shorthands and `with:` option described above.
75
+
76
+ #### Remove index :if_exsts
77
+
78
+ ```ruby
79
+ remove_index "tablename", "columnname", if_exists: true
80
+ ```
81
+
82
+ ### Models
83
+
84
+ SchemaPlus::Indexes lets you easily get the indexes of a model:
85
+
86
+ ```ruby
87
+ Model.indexes # shorthand for `connection.indexes(Model.table_name)`
88
+ ```
89
+
90
+ The value gets cached until the next time `Model.reset_column_information` is called.
91
+
92
+ ### Other things...
93
+
94
+ * Provides consistent behavior regarding attempted duplicate index
95
+ creation: Ignore and log a warning. Different versions of Rails with
96
+ different db adapters otherwise behave inconsistently: some ignore the
97
+ attempt, some raise an error.
98
+
99
+ * In the schema dump `schema.rb`, index definitions are included within the
100
+ `create_table` statements rather than added afterwards
101
+
102
+ * When using SQLite3, makes sure that the definitions returned by
103
+ `connection.indexes` properly include the column orders (`:asc` or `:desc`)
104
+
105
+ * For the `ActiveRecord::ConnectionAdapters::IndexDefinition` class (the object that's returned by `connection.indexes`), SchemaPlus::Indexes:
106
+ * Provides an `==` operator to compare if two objects refer to an equivalent index
107
+ * Allows calling `new` with a signature that matches add_index: `IndexDefinition.new(table_name, column_names, options)`
108
+ * Fleshes out the `:orders` attribute, listing `:asc` for a column instead of leaving it undefined.
109
+
67
110
  ## Compatibility
68
111
 
69
112
  schema_plus_indexes is tested on
@@ -78,7 +121,7 @@ schema_plus_indexes is tested on
78
121
 
79
122
  ### v0.1.0
80
123
 
81
- * Initial release
124
+ * Initial release, extracted from schema_plus 1.x
82
125
 
83
126
  ## Development & Testing
84
127
 
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module ActiveRecord
3
3
  module Base
4
4
  module ClassMethods
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
4
  module AbstractAdapter
@@ -1,10 +1,7 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
- #
5
- # SchemaPlusIndexes extends the IndexDefinition object to return information
6
- # about partial indexes and case sensitivity (i.e. Postgresql
7
- # support).
4
+
8
5
  module IndexDefinition
9
6
 
10
7
  def initialize(*args) #:nodoc:
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module Middleware
3
3
  module Dumper
4
4
  module Table
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module Middleware
3
3
  module Migration
4
4
 
@@ -34,12 +34,12 @@ module SchemaPlusIndexes
34
34
 
35
35
  # Ignore duplicates
36
36
  #
37
- # SchemaPlusIndexes modifies SchemaStatements::add_index so that it ignores
37
+ # SchemaPlus::Indexes modifies SchemaStatements::add_index so that it ignores
38
38
  # errors raised about add an index that already exists -- i.e. that has
39
39
  # the same index name, same columns, and same options -- and writes a
40
40
  # warning to the log. Some combinations of rails & DB adapter versions
41
41
  # would log such a warning, others would raise an error; with
42
- # SchemaPlusIndexes all versions log the warning and do not raise the error.
42
+ # SchemaPlus::Indexes all versions log the warning and do not raise the error.
43
43
  def around(env)
44
44
  yield env
45
45
  rescue => e
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module Middleware
3
3
  module Model
4
4
  module ResetColumnInformation
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexes
1
+ module SchemaPlus::Indexes
2
2
  module Middleware
3
3
  module Schema
4
4
  module Sqlite3
@@ -0,0 +1,5 @@
1
+ module SchemaPlus
2
+ module Indexes
3
+ VERSION = "0.1.3"
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ require 'schema_plus/core'
2
+
3
+ require_relative 'indexes/active_record/base'
4
+ require_relative 'indexes/active_record/connection_adapters/abstract_adapter'
5
+ require_relative 'indexes/active_record/connection_adapters/index_definition'
6
+ require_relative 'indexes/middleware/dumper'
7
+ require_relative 'indexes/middleware/migration'
8
+ require_relative 'indexes/middleware/model'
9
+ require_relative 'indexes/middleware/schema'
10
+
11
+ SchemaMonkey.register SchemaPlus::Indexes
@@ -1,11 +1 @@
1
- require 'schema_plus/core'
2
-
3
- require_relative 'schema_plus_indexes/active_record/base'
4
- require_relative 'schema_plus_indexes/active_record/connection_adapters/abstract_adapter'
5
- require_relative 'schema_plus_indexes/active_record/connection_adapters/index_definition'
6
- require_relative 'schema_plus_indexes/middleware/dumper'
7
- require_relative 'schema_plus_indexes/middleware/migration'
8
- require_relative 'schema_plus_indexes/middleware/model'
9
- require_relative 'schema_plus_indexes/middleware/schema'
10
-
11
- SchemaMonkey.register SchemaPlusIndexes
1
+ require_relative 'schema_plus/indexes'
@@ -1,11 +1,11 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'schema_plus_indexes/version'
4
+ require 'schema_plus/indexes/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "schema_plus_indexes"
8
- gem.version = SchemaPlusIndexes::VERSION
8
+ gem.version = SchemaPlus::Indexes::VERSION
9
9
  gem.authors = ["ronen barzel"]
10
10
  gem.email = ["ronen@barzel.org"]
11
11
  gem.summary = %q{Adds shorthands and conveniences to ActiveRecord's handling of indexes}
data/spec/spec_helper.rb CHANGED
@@ -15,7 +15,7 @@ SchemaDev::Rspec.setup
15
15
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
16
16
 
17
17
  RSpec.configure do |config|
18
- config.include(SchemaPlusIndexesMatchers)
18
+ config.include(SchemaPlus::IndexesMatchers)
19
19
  config.warnings = true
20
20
  end
21
21
 
@@ -1,4 +1,4 @@
1
- module SchemaPlusIndexesMatchers
1
+ module SchemaPlus::IndexesMatchers
2
2
 
3
3
  class HaveIndex
4
4
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus_indexes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ronen barzel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-10 00:00:00.000000000 Z
11
+ date: 2015-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -140,15 +140,16 @@ files:
140
140
  - gemfiles/activerecord-4.2/Gemfile.mysql2
141
141
  - gemfiles/activerecord-4.2/Gemfile.postgresql
142
142
  - gemfiles/activerecord-4.2/Gemfile.sqlite3
143
+ - lib/schema_plus/indexes.rb
144
+ - lib/schema_plus/indexes/active_record/base.rb
145
+ - lib/schema_plus/indexes/active_record/connection_adapters/abstract_adapter.rb
146
+ - lib/schema_plus/indexes/active_record/connection_adapters/index_definition.rb
147
+ - lib/schema_plus/indexes/middleware/dumper.rb
148
+ - lib/schema_plus/indexes/middleware/migration.rb
149
+ - lib/schema_plus/indexes/middleware/model.rb
150
+ - lib/schema_plus/indexes/middleware/schema.rb
151
+ - lib/schema_plus/indexes/version.rb
143
152
  - lib/schema_plus_indexes.rb
144
- - lib/schema_plus_indexes/active_record/base.rb
145
- - lib/schema_plus_indexes/active_record/connection_adapters/abstract_adapter.rb
146
- - lib/schema_plus_indexes/active_record/connection_adapters/index_definition.rb
147
- - lib/schema_plus_indexes/middleware/dumper.rb
148
- - lib/schema_plus_indexes/middleware/migration.rb
149
- - lib/schema_plus_indexes/middleware/model.rb
150
- - lib/schema_plus_indexes/middleware/schema.rb
151
- - lib/schema_plus_indexes/version.rb
152
153
  - schema_dev.yml
153
154
  - schema_plus_indexes.gemspec
154
155
  - spec/index_definition_spec.rb
@@ -1,3 +0,0 @@
1
- module SchemaPlusIndexes
2
- VERSION = "0.1.2"
3
- end