schema_plus 2.0.0.pre2 → 2.0.0.pre3

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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -3
  3. data/Gemfile +2 -0
  4. data/README.md +4 -4
  5. data/TODO.md +3 -10
  6. data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.base +1 -1
  7. data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.mysql2 +0 -0
  8. data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.postgresql +0 -0
  9. data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.sqlite3 +0 -0
  10. data/lib/schema_plus.rb +13 -121
  11. data/lib/schema_plus/version.rb +1 -1
  12. data/lib/schema_plus_columns.rb +7 -0
  13. data/lib/{schema_column_plus → schema_plus_columns}/active_record/connection_adapters/column.rb +1 -1
  14. data/lib/schema_plus_columns/middleware/model.rb +16 -0
  15. data/lib/schema_plus_db_default.rb +13 -0
  16. data/lib/{schema_db_default → schema_plus_db_default}/active_record/attribute.rb +4 -4
  17. data/lib/{schema_db_default → schema_plus_db_default}/db_default.rb +1 -1
  18. data/lib/schema_plus_db_default/middleware.rb +30 -0
  19. data/lib/{schema_default_expr.rb → schema_plus_default_expr.rb} +6 -6
  20. data/lib/{schema_default_expr → schema_plus_default_expr}/active_record/connection_adapters/mysql2_adapter.rb +1 -1
  21. data/lib/{schema_default_expr → schema_plus_default_expr}/active_record/connection_adapters/postgresql_adapter.rb +1 -1
  22. data/lib/{schema_default_expr → schema_plus_default_expr}/active_record/connection_adapters/sqlite3_adapter.rb +1 -1
  23. data/lib/{schema_default_expr → schema_plus_default_expr}/middleware.rb +21 -19
  24. data/lib/schema_plus_enums.rb +6 -0
  25. data/lib/{schema_pg_enums → schema_plus_enums}/active_record.rb +1 -1
  26. data/lib/schema_plus_enums/middleware.rb +22 -0
  27. data/lib/schema_plus_foreign_keys.rb +96 -0
  28. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/base.rb +2 -2
  29. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/connection_adapters/abstract_adapter.rb +7 -7
  30. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/connection_adapters/foreign_key_definition.rb +4 -4
  31. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/connection_adapters/mysql2_adapter.rb +9 -9
  32. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/connection_adapters/postgresql_adapter.rb +5 -5
  33. data/lib/schema_plus_foreign_keys/active_record/connection_adapters/schema_statements.rb +33 -0
  34. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/connection_adapters/sqlite3_adapter.rb +5 -5
  35. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/connection_adapters/table_definition.rb +8 -8
  36. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/migration/command_recorder.rb +5 -5
  37. data/lib/{schema_plus → schema_plus_foreign_keys}/active_record/schema.rb +7 -7
  38. data/lib/{schema_plus → schema_plus_foreign_keys}/middleware/dumper.rb +11 -26
  39. data/lib/{schema_plus → schema_plus_foreign_keys}/middleware/migration.rb +14 -15
  40. data/lib/schema_plus_foreign_keys/middleware/model.rb +15 -0
  41. data/lib/schema_plus_foreign_keys/version.rb +3 -0
  42. data/lib/schema_plus_views.rb +16 -0
  43. data/lib/{schema_views → schema_plus_views}/active_record/connection_adapters/abstract_adapter.rb +1 -1
  44. data/lib/{schema_views → schema_plus_views}/active_record/connection_adapters/mysql2_adapter.rb +1 -1
  45. data/lib/{schema_views → schema_plus_views}/active_record/connection_adapters/postgresql_adapter.rb +1 -1
  46. data/lib/{schema_views → schema_plus_views}/active_record/connection_adapters/sqlite3_adapter.rb +1 -1
  47. data/lib/schema_plus_views/middleware.rb +49 -0
  48. data/schema_dev.yml +1 -1
  49. data/schema_plus.gemspec +3 -2
  50. data/spec/{schema_column_plus → schema_plus_columns}/column_spec.rb +0 -0
  51. data/spec/{schema_db_default → schema_plus_db_default}/column_spec.rb +1 -1
  52. data/spec/{schema_default_expr → schema_plus_default_expr}/column_default_spec.rb +0 -0
  53. data/spec/schema_plus_default_expr/migration_spec.rb +44 -0
  54. data/spec/{schema_default_expr → schema_plus_default_expr}/schema_dumper_spec.rb +2 -2
  55. data/spec/{schema_pg_enums → schema_plus_enums}/enum_spec.rb +0 -0
  56. data/spec/{schema_pg_enums → schema_plus_enums}/schema_dumper_spec.rb +0 -0
  57. data/spec/{foreign_key_definition_spec.rb → schema_plus_foreign_keys/foreign_key_definition_spec.rb} +0 -0
  58. data/spec/{foreign_key_spec.rb → schema_plus_foreign_keys/foreign_key_spec.rb} +2 -2
  59. data/spec/{migration_spec.rb → schema_plus_foreign_keys/migration_spec.rb} +13 -29
  60. data/spec/{named_schemas_spec.rb → schema_plus_foreign_keys/named_schemas_spec.rb} +0 -0
  61. data/spec/{schema_dumper_spec.rb → schema_plus_foreign_keys/schema_dumper_spec.rb} +2 -2
  62. data/spec/{schema_spec.rb → schema_plus_foreign_keys/schema_spec.rb} +7 -7
  63. data/spec/{schema_views → schema_plus_views}/named_schemas_spec.rb +7 -7
  64. data/spec/{schema_views → schema_plus_views}/views_spec.rb +0 -0
  65. data/spec/spec_helper.rb +3 -3
  66. metadata +102 -81
  67. data/init.rb +0 -1
  68. data/lib/schema_column_plus.rb +0 -7
  69. data/lib/schema_column_plus/middleware/model.rb +0 -22
  70. data/lib/schema_db_default.rb +0 -13
  71. data/lib/schema_db_default/middleware.rb +0 -30
  72. data/lib/schema_pg_enums.rb +0 -6
  73. data/lib/schema_pg_enums/middleware.rb +0 -23
  74. data/lib/schema_plus/active_record/connection_adapters/schema_statements.rb +0 -34
  75. data/lib/schema_plus/middleware/model.rb +0 -17
  76. data/lib/schema_views.rb +0 -16
  77. data/lib/schema_views/middleware.rb +0 -47
  78. data/spec/connection_spec.rb +0 -10
@@ -0,0 +1,6 @@
1
+ require 'schema_monkey'
2
+
3
+ require_relative 'schema_plus_enums/active_record'
4
+ require_relative 'schema_plus_enums/middleware'
5
+
6
+ SchemaMonkey.register(SchemaPlusEnums)
@@ -1,4 +1,4 @@
1
- module SchemaPgEnums
1
+ module SchemaPlusEnums
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
4
  module PostgresqlAdapter
@@ -0,0 +1,22 @@
1
+ module SchemaPlusEnums
2
+ module Middleware
3
+
4
+ module Dumper
5
+ module Extensions
6
+
7
+ module Postgresql
8
+
9
+ def after(env)
10
+ env.connection.enums.each do |schema, name, values|
11
+ params = [name.inspect]
12
+ params << values.map(&:inspect).join(', ')
13
+ params << ":schema => #{schema.inspect}" if schema != 'public'
14
+
15
+ env.extensions << "create_enum #{params.join(', ')}"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,96 @@
1
+ require 'active_record'
2
+ require 'valuable'
3
+
4
+ require 'schema_plus_foreign_keys/version'
5
+ require 'schema_plus_foreign_keys/active_record/base'
6
+ require 'schema_plus_foreign_keys/active_record/connection_adapters/abstract_adapter'
7
+ require 'schema_plus_foreign_keys/active_record/connection_adapters/table_definition'
8
+ require 'schema_plus_foreign_keys/active_record/connection_adapters/schema_statements'
9
+ require 'schema_plus_foreign_keys/active_record/schema'
10
+ require 'schema_plus_foreign_keys/active_record/connection_adapters/foreign_key_definition'
11
+ require 'schema_plus_foreign_keys/active_record/migration/command_recorder'
12
+ require 'schema_plus_foreign_keys/middleware/dumper'
13
+ require 'schema_plus_foreign_keys/middleware/migration'
14
+ require 'schema_plus_foreign_keys/middleware/model'
15
+
16
+ module SchemaPlusForeignKeys
17
+ module ActiveRecord
18
+ module ConnectionAdapters
19
+ autoload :Mysql2Adapter, 'schema_plus_foreign_keys/active_record/connection_adapters/mysql2_adapter'
20
+ autoload :PostgresqlAdapter, 'schema_plus_foreign_keys/active_record/connection_adapters/postgresql_adapter'
21
+ autoload :Sqlite3Adapter, 'schema_plus_foreign_keys/active_record/connection_adapters/sqlite3_adapter'
22
+ end
23
+ end
24
+
25
+ # This global configuation options for SchemaPlusForeignKeys.
26
+ # Set them in +config/initializers/schema_plus_foreign_keys.rb+ using:
27
+ #
28
+ # SchemaPlusForeignKeys.setup do |config|
29
+ # ...
30
+ # end
31
+ #
32
+ class Config < Valuable
33
+
34
+ ##
35
+ # :attr_accessor: auto_create
36
+ #
37
+ # Whether to automatically create foreign key constraints for columns
38
+ # suffixed with +_id+. Boolean, default is +true+.
39
+ has_value :auto_create, :klass => :boolean, :default => true
40
+
41
+ ##
42
+ # :attr_accessor: auto_index
43
+ #
44
+ # Whether to automatically create indexes when creating foreign key constraints for columns.
45
+ # Boolean, default is +true+.
46
+ has_value :auto_index, :klass => :boolean, :default => true
47
+
48
+ ##
49
+ # :attr_accessor: on_update
50
+ #
51
+ # The default value for +:on_update+ when creating foreign key
52
+ # constraints for columns. Valid values are as described in
53
+ # ForeignKeyDefinition, or +nil+ to let the database connection use
54
+ # its own default. Default is +nil+.
55
+ has_value :on_update
56
+
57
+ ##
58
+ # :attr_accessor: on_delete
59
+ #
60
+ # The default value for +:on_delete+ when creating foreign key
61
+ # constraints for columns. Valid values are as described in
62
+ # ForeignKeyDefinition, or +nil+ to let the database connection use
63
+ # its own default. Default is +nil+.
64
+ has_value :on_delete
65
+
66
+ def merge(opts)
67
+ dup.update_attributes(opts)
68
+ end
69
+ end
70
+
71
+
72
+ # Returns the global configuration, i.e., the singleton instance of Config
73
+ def self.config
74
+ @config ||= Config.new
75
+ end
76
+
77
+ # Initialization block is passed a global Config instance that can be
78
+ # used to configure SchemaPlusForeignKeys behavior. E.g., if you want to disable
79
+ # automation creation of foreign key constraints for columns name *_id,
80
+ # put the following in config/initializers/schema_plus_foreign_keys.rb :
81
+ #
82
+ # SchemaPlusForeignKeys.setup do |config|
83
+ # config.auto_create = false
84
+ # end
85
+ #
86
+ def self.setup # :yields: config
87
+ yield config
88
+ end
89
+
90
+ def self.insert #:nodoc:
91
+ SchemaMonkey.include_once ::ActiveRecord::ConnectionAdapters::AbstractAdapter::SchemaCreation, SchemaPlusForeignKeys::ActiveRecord::ConnectionAdapters::AbstractAdapter::VisitTableDefinition
92
+ end
93
+
94
+ end
95
+
96
+ SchemaMonkey.register(SchemaPlusForeignKeys)
@@ -1,8 +1,8 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
3
 
4
4
  #
5
- # SchemaPlus adds several methods to ActiveRecord::Base
5
+ # SchemaPlusForeignKeys adds several methods to ActiveRecord::Base
6
6
  #
7
7
  module Base
8
8
  def self.included(base) #:nodoc:
@@ -1,10 +1,10 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
- # SchemaPlus adds several methods to the connection adapter (as returned by ActiveRecordBase#connection). See AbstractAdapter for details.
3
+ # SchemaPlusForeignKeys adds several methods to the connection adapter (as returned by ActiveRecordBase#connection). See AbstractAdapter for details.
4
4
  module ConnectionAdapters
5
5
 
6
6
  #
7
- # SchemaPlus adds several methods to
7
+ # SchemaPlusForeignKeys adds several methods to
8
8
  # ActiveRecord::ConnectionAdapters::AbstractAdapter. In most cases
9
9
  # you don't call these directly, but rather the methods that define
10
10
  # things are called by schema statements, and methods that query
@@ -113,7 +113,7 @@ module SchemaPlus
113
113
  if fk = fks.detect { |fk| fk.match(test_fk) }
114
114
  fk.name
115
115
  else
116
- raise "SchemaPlus: no foreign key constraint found on #{from_table.inspect} matching #{[to_table, options].inspect}" unless options[:if_exists]
116
+ raise "SchemaPlusForeignKeys: no foreign key constraint found on #{from_table.inspect} matching #{[to_table, options].inspect}" unless options[:if_exists]
117
117
  nil
118
118
  end
119
119
  end
@@ -149,11 +149,11 @@ module SchemaPlus
149
149
 
150
150
  module VisitTableDefinition
151
151
  def self.included(base) #:nodoc:
152
- base.alias_method_chain :visit_TableDefinition, :schema_plus
152
+ base.alias_method_chain :visit_TableDefinition, :schema_plus_foreign_keys
153
153
  end
154
154
 
155
- def visit_TableDefinition_with_schema_plus(o) #:nodoc:
156
- create_sql = visit_TableDefinition_without_schema_plus(o)
155
+ def visit_TableDefinition_with_schema_plus_foreign_keys(o) #:nodoc:
156
+ create_sql = visit_TableDefinition_without_schema_plus_foreign_keys(o)
157
157
  last_chunk = ") #{o.options}"
158
158
 
159
159
  unless create_sql.end_with?(last_chunk)
@@ -1,6 +1,6 @@
1
1
  require 'active_record/connection_adapters/abstract/schema_definitions'
2
2
 
3
- module SchemaPlus
3
+ module SchemaPlusForeignKeys
4
4
  module ActiveRecord
5
5
  module ConnectionAdapters
6
6
  # Instances of this class are returned by the queries ActiveRecord::Base#foreign_keys and ActiveRecord::Base#reverse_foreign_keys (via AbstractAdapter#foreign_keys and AbstractAdapter#reverse_foreign_keys)
@@ -19,7 +19,7 @@ module SchemaPlus
19
19
 
20
20
  def self.included(base)
21
21
  base.class_eval do
22
- alias_method_chain :initialize, :schema_plus
22
+ alias_method_chain :initialize, :schema_plus_foreign_keys
23
23
  end
24
24
  end
25
25
 
@@ -46,7 +46,7 @@ module SchemaPlus
46
46
  ACTIONS = { :cascade => "CASCADE", :restrict => "RESTRICT", :nullify => "SET NULL", :set_default => "SET DEFAULT", :no_action => "NO ACTION" }.freeze
47
47
  ACTION_LOOKUP = ACTIONS.invert.freeze
48
48
 
49
- def initialize_with_schema_plus(from_table, to_table, options={})
49
+ def initialize_with_schema_plus_foreign_keys(from_table, to_table, options={})
50
50
  [:on_update, :on_delete].each do |key|
51
51
  if options[key] == :set_null
52
52
  require 'byebug' ; byebug
@@ -55,7 +55,7 @@ module SchemaPlus
55
55
  end
56
56
  end
57
57
 
58
- initialize_without_schema_plus(from_table, to_table, options)
58
+ initialize_without_schema_plus_foreign_keys(from_table, to_table, options)
59
59
  if column.is_a?(Array) and column.length == 1
60
60
  options[:column] = column[0]
61
61
  end
@@ -1,7 +1,7 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
- # SchemaPlus includes a MySQL implementation of the AbstractAdapter
4
+ # SchemaPlusForeignKeys includes a MySQL implementation of the AbstractAdapter
5
5
  # extensions.
6
6
  module Mysql2Adapter
7
7
 
@@ -9,21 +9,21 @@ module SchemaPlus
9
9
 
10
10
  def self.included(base)
11
11
  base.class_eval do
12
- alias_method_chain :remove_column, :schema_plus
13
- alias_method_chain :rename_table, :schema_plus
12
+ alias_method_chain :remove_column, :schema_plus_foreign_keys
13
+ alias_method_chain :rename_table, :schema_plus_foreign_keys
14
14
  end
15
- ::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::SchemaCreation.send(:include, SchemaPlus::ActiveRecord::ConnectionAdapters::AbstractAdapter::VisitTableDefinition)
15
+ ::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::SchemaCreation.send(:include, SchemaPlusForeignKeys::ActiveRecord::ConnectionAdapters::AbstractAdapter::VisitTableDefinition)
16
16
  end
17
17
 
18
- def remove_column_with_schema_plus(table_name, column_name, type=nil, options={})
18
+ def remove_column_with_schema_plus_foreign_keys(table_name, column_name, type=nil, options={})
19
19
  foreign_keys(table_name).select { |foreign_key| Array.wrap(foreign_key.column).include?(column_name.to_s) }.each do |foreign_key|
20
20
  remove_foreign_key(table_name, name: foreign_key.name)
21
21
  end
22
- remove_column_without_schema_plus(table_name, column_name, type, options)
22
+ remove_column_without_schema_plus_foreign_keys(table_name, column_name, type, options)
23
23
  end
24
24
 
25
- def rename_table_with_schema_plus(oldname, newname)
26
- rename_table_without_schema_plus(oldname, newname)
25
+ def rename_table_with_schema_plus_foreign_keys(oldname, newname)
26
+ rename_table_without_schema_plus_foreign_keys(oldname, newname)
27
27
  rename_foreign_keys(oldname, newname)
28
28
  end
29
29
 
@@ -1,19 +1,19 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
4
 
5
- # The Postgresql adapter implements the SchemaPlus extensions and
5
+ # The Postgresql adapter implements the SchemaPlusForeignKeys extensions and
6
6
  # enhancements
7
7
  module PostgresqlAdapter
8
8
 
9
9
  def self.included(base) #:nodoc:
10
10
  base.class_eval do
11
- alias_method_chain :rename_table, :schema_plus
11
+ alias_method_chain :rename_table, :schema_plus_foreign_keys
12
12
  end
13
13
  end
14
14
 
15
- def rename_table_with_schema_plus(oldname, newname) #:nodoc:
16
- rename_table_without_schema_plus(oldname, newname)
15
+ def rename_table_with_schema_plus_foreign_keys(oldname, newname) #:nodoc:
16
+ rename_table_without_schema_plus_foreign_keys(oldname, newname)
17
17
  rename_foreign_keys(oldname, newname)
18
18
  end
19
19
 
@@ -0,0 +1,33 @@
1
+ module SchemaPlusForeignKeys::ActiveRecord::ConnectionAdapters
2
+ module SchemaStatements
3
+
4
+ def self.included(base) #:nodoc:
5
+ base.class_eval do
6
+ alias_method_chain :create_table, :schema_plus_foreign_keys
7
+ end
8
+ end
9
+
10
+ ##
11
+ # :method: create_table
12
+ #
13
+ # SchemaPlusForeignKeys extends SchemaStatements::create_table to allow you to specify configuration options per table. Pass them in as a hash keyed by configuration set (see SchemaPlusForeignKeys::Config),
14
+ # for example:
15
+ #
16
+ # create_table :widgets, :foreign_keys => {:auto_create => true, :on_delete => :cascade} do |t|
17
+ # ...
18
+ # end
19
+ def create_table_with_schema_plus_foreign_keys(table, options = {})
20
+ options = options.dup
21
+ config_options = options.delete(:foreign_keys) || {}
22
+
23
+ # override rails' :force to cascade
24
+ drop_table(table, if_exists: true, cascade: true) if options.delete(:force)
25
+
26
+ create_table_without_schema_plus_foreign_keys(table, options) do |table_definition|
27
+ table_definition.schema_plus_config = SchemaPlusForeignKeys.config.merge(config_options)
28
+ yield table_definition if block_given?
29
+ end
30
+ end
31
+ end
32
+
33
+ end
@@ -1,8 +1,8 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
4
 
5
- # SchemaPlus includes an Sqlite3 implementation of the AbstractAdapter
5
+ # SchemaPlusForeignKeys includes an Sqlite3 implementation of the AbstractAdapter
6
6
  # extensions.
7
7
  module Sqlite3Adapter
8
8
 
@@ -10,7 +10,7 @@ module SchemaPlus
10
10
 
11
11
  def self.included(base)
12
12
  base.class_eval do
13
- alias_method_chain :rename_table, :schema_plus
13
+ alias_method_chain :rename_table, :schema_plus_foreign_keys
14
14
  end
15
15
  end
16
16
 
@@ -19,8 +19,8 @@ module SchemaPlus
19
19
  execute('PRAGMA FOREIGN_KEYS = ON')
20
20
  end
21
21
 
22
- def rename_table_with_schema_plus(oldname, newname) #:nodoc:
23
- rename_table_without_schema_plus(oldname, newname)
22
+ def rename_table_with_schema_plus_foreign_keys(oldname, newname) #:nodoc:
23
+ rename_table_without_schema_plus_foreign_keys(oldname, newname)
24
24
  rename_foreign_keys(oldname, newname)
25
25
  end
26
26
 
@@ -1,19 +1,19 @@
1
- module SchemaPlus::ActiveRecord::ConnectionAdapters
1
+ module SchemaPlusForeignKeys::ActiveRecord::ConnectionAdapters
2
2
 
3
3
  #
4
- # SchemaPlus adds several methods to TableDefinition, allowing indexes
4
+ # SchemaPlusForeignKeys adds several methods to TableDefinition, allowing indexes
5
5
  # and foreign key constraints to be defined within a
6
6
  # <tt>create_table</tt> block of a migration, allowing for better
7
7
  # encapsulation and more DRY definitions.
8
8
  #
9
- # For example, without SchemaPlus you might define a table like this:
9
+ # For example, without SchemaPlusForeignKeys you might define a table like this:
10
10
  #
11
11
  # create_table :widgets do |t|
12
12
  # t.string :name
13
13
  # end
14
14
  # add_index :widgets, :name
15
15
  #
16
- # But with SchemaPlus, the index can be defined within the create_table
16
+ # But with SchemaPlusForeignKeys, the index can be defined within the create_table
17
17
  # block, so you don't need to repeat the table name:
18
18
  #
19
19
  # create_table :widgets do |t|
@@ -31,7 +31,7 @@ module SchemaPlus::ActiveRecord::ConnectionAdapters
31
31
  # For details about the :index option (including unique and multi-column indexes), see the
32
32
  # documentation for Migration::ClassMethods#add_column
33
33
  #
34
- # SchemaPlus also supports creation of foreign key constraints analogously, using Migration::ClassMethods#add_foreign_key or TableDefinition#foreign_key or as part of the column definition, for example:
34
+ # SchemaPlusForeignKeys also supports creation of foreign key constraints analogously, using Migration::ClassMethods#add_foreign_key or TableDefinition#foreign_key or as part of the column definition, for example:
35
35
  #
36
36
  # create_table :posts do |t| # not DRY
37
37
  # t.integer :author_id
@@ -47,13 +47,13 @@ module SchemaPlus::ActiveRecord::ConnectionAdapters
47
47
  # t.integer :author_id, :foreign_key => true
48
48
  # end
49
49
  #
50
- # <b>NOTE:</b> In the standard configuration, SchemaPlus automatically
50
+ # <b>NOTE:</b> In the standard configuration, SchemaPlusForeignKeys automatically
51
51
  # creates foreign key constraints for columns whose names end in
52
52
  # <tt>_id</tt>. So the above examples are redundant, unless automatic
53
53
  # creation was disabled at initialization in the global Config.
54
54
  #
55
- # SchemaPlus likewise by default automatically creates foreign key constraints for
56
- # columns defined via <tt>t.references</tt>. However, SchemaPlus does not create
55
+ # SchemaPlusForeignKeys likewise by default automatically creates foreign key constraints for
56
+ # columns defined via <tt>t.references</tt>. However, SchemaPlusForeignKeys does not create
57
57
  # foreign key constraints if the <tt>:polymorphic</tt> option is true
58
58
  #
59
59
  # Finally, the configuration for foreign keys can be overriden on a per-table
@@ -1,4 +1,4 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
3
  module Migration
4
4
  module CommandRecorder
@@ -7,8 +7,8 @@ module SchemaPlus
7
7
 
8
8
  def self.included(base) #:nodoc:
9
9
  base.class_eval do
10
- alias_method_chain :add_reference, :schema_plus
11
- alias_method_chain :invert_add_index, :schema_plus
10
+ alias_method_chain :add_reference, :schema_plus_foreign_keys
11
+ alias_method_chain :invert_add_index, :schema_plus_foreign_keys
12
12
  end
13
13
  end
14
14
 
@@ -18,7 +18,7 @@ module SchemaPlus
18
18
  #
19
19
  # should track it down separately and submit a patch/fix to rails
20
20
  #
21
- def add_reference_with_schema_plus(table_name, ref_name, options = {}) #:nodoc:
21
+ def add_reference_with_schema_plus_foreign_keys(table_name, ref_name, options = {}) #:nodoc:
22
22
  polymorphic = options.delete(:polymorphic)
23
23
  options[:references] = nil if polymorphic
24
24
  # ugh. copying and pasting code from ::ActiveRecord::ConnectionAdapters::SchemaStatements#add_reference
@@ -30,7 +30,7 @@ module SchemaPlus
30
30
  self
31
31
  end
32
32
 
33
- def invert_add_index_with_schema_plus(args)
33
+ def invert_add_index_with_schema_plus_foreign_keys(args)
34
34
  table, columns, options = *args
35
35
  [:remove_index, [table, (options||{}).merge(column: columns, if_exists: true)]]
36
36
  end
@@ -1,4 +1,4 @@
1
- module SchemaPlus
1
+ module SchemaPlusForeignKeys
2
2
  module ActiveRecord
3
3
  module Schema #:nodoc: all
4
4
  def self.included(base)
@@ -8,18 +8,18 @@ module SchemaPlus
8
8
  module ClassMethods
9
9
  def self.extended(base)
10
10
  class << base
11
- alias_method_chain :define, :schema_plus
11
+ alias_method_chain :define, :schema_plus_foreign_keys
12
12
  end
13
13
  end
14
14
 
15
- def define_with_schema_plus(info={}, &block)
15
+ def define_with_schema_plus_foreign_keys(info={}, &block)
16
16
  fk_override = { :auto_create => false, :auto_index => false }
17
- save = Hash[fk_override.keys.collect{|key| [key, SchemaPlus.config.foreign_keys.send(key)]}]
17
+ save = Hash[fk_override.keys.collect{|key| [key, SchemaPlusForeignKeys.config.send(key)]}]
18
18
  begin
19
- SchemaPlus.config.foreign_keys.update_attributes(fk_override)
20
- define_without_schema_plus(info, &block)
19
+ SchemaPlusForeignKeys.config.update_attributes(fk_override)
20
+ define_without_schema_plus_foreign_keys(info, &block)
21
21
  ensure
22
- SchemaPlus.config.foreign_keys.update_attributes(save)
22
+ SchemaPlusForeignKeys.config.update_attributes(save)
23
23
  end
24
24
  end
25
25
  end