aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2016-08-22 15:46:04 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2016-08-22 15:46:04 -0300
commitdf84e9867219e9311aef6f4efd5dd9ec675bee5c (patch)
tree69e1aaa4201ca87ad671a90adfc60bf8ae9eb58a
parentd25a5ce256c56d2f9e140aaf59f48945ddfcac1a (diff)
downloadrails-df84e9867219e9311aef6f4efd5dd9ec675bee5c.tar.gz
rails-df84e9867219e9311aef6f4efd5dd9ec675bee5c.tar.bz2
rails-df84e9867219e9311aef6f4efd5dd9ec675bee5c.zip
Remove the SchemaDumper options and change the default behavior
Now the schema dumper by default doesn't align the types and arguments in the ruby format anymore.
-rw-r--r--activerecord/CHANGELOG.md4
-rw-r--r--activerecord/lib/active_record/schema_dumper.rb41
-rw-r--r--activerecord/test/cases/schema_dumper_test.rb105
-rw-r--r--guides/source/configuring.md4
4 files changed, 17 insertions, 137 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index fd2c5dd9bb..4aa1853bde 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,6 +1,4 @@
-* Option to remove standardized column types/arguments spaces in schema dump
- with `ActiveRecord::SchemaDumper.standardized_argument_widths` and
- `ActiveRecord::SchemaDumper.standardized_type_widths` methods.
+* Remove standardized column types/arguments spaces in schema dump.
*Tim Petricola*
diff --git a/activerecord/lib/active_record/schema_dumper.rb b/activerecord/lib/active_record/schema_dumper.rb
index be74922453..b65d5b56f1 100644
--- a/activerecord/lib/active_record/schema_dumper.rb
+++ b/activerecord/lib/active_record/schema_dumper.rb
@@ -16,22 +16,6 @@ module ActiveRecord
cattr_accessor :ignore_tables
@@ignore_tables = []
- ##
- # :singleton-method:
- # Define whether column arguments are lined up in dump.
- # Acceptable values are true or false.
- # This setting is only used if ActiveRecord::Base.schema_format == :ruby
- cattr_accessor :standardized_argument_widths
- @@standardized_argument_widths = true
-
- ##
- # :singleton-method:
- # Define whether columns types are lined up in dump.
- # Acceptable values are true or false.
- # This setting is only used if ActiveRecord::Base.schema_format == :ruby
- cattr_accessor :standardized_type_widths
- @@standardized_type_widths = true
-
class << self
def dump(connection=ActiveRecord::Base.connection, stream=STDOUT, config = ActiveRecord::Base)
new(connection, generate_options(config)).dump(stream)
@@ -162,32 +146,13 @@ HEADER
keys = @connection.migration_keys
# figure out the lengths for each column based on above keys
- lengths = if standardized_argument_widths
- keys.map { |key|
- column_specs.map { |spec|
- spec[key] ? spec[key].length + 2 : 0
- }.max
- }
- else
- [0] * keys.length
- end
+ lengths = [0] * keys.length
# the string we're going to sprintf our values against, with standardized column widths
- format_string = if standardized_argument_widths
- lengths.map { |len| "%-#{len}s" }
- else
- ["%s"] * keys.length
- end
+ format_string = ["%s"] * keys.length
# add column type definition to our format string
- if standardized_type_widths
- # find the max length for the 'type' column, which is special
- type_length = column_specs.map { |column| column[:type].length }.max
-
- format_string.unshift " t.%-#{type_length}s "
- else
- format_string.unshift " t.%s "
- end
+ format_string.unshift " t.%s "
format_string *= ""
diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb
index 23cfe46d7f..57b1bc889a 100644
--- a/activerecord/test/cases/schema_dumper_test.rb
+++ b/activerecord/test/cases/schema_dumper_test.rb
@@ -70,38 +70,35 @@ class SchemaDumperTest < ActiveRecord::TestCase
assert_match %r{create_table "CamelCase"}, output
end
- def assert_line_up(lines, pattern, required = false)
+ def assert_no_line_up(lines, pattern)
return assert(true) if lines.empty?
matches = lines.map { |line| line.match(pattern) }
- assert matches.all? if required
matches.compact!
return assert(true) if matches.empty?
- assert_equal 1, matches.map { |match| match.offset(0).first }.uniq.length
+ line_matches = lines.map { |line| [line, line.match(pattern)] }.select { |line, match| match }
+ assert line_matches.all? { |line, match|
+ start = match.offset(0).first
+ line[start - 2..start - 1] == ", "
+ }
end
def column_definition_lines(output = standard_dump)
output.scan(/^( *)create_table.*?\n(.*?)^\1end/m).map { |m| m.last.split(/\n/) }
end
- def test_types_line_up
+ def test_types_no_line_up
column_definition_lines.each do |column_set|
next if column_set.empty?
- lengths = column_set.map do |column|
- if match = column.match(/\bt\.\w+\s+(?="\w+?")/)
- match[0].length
- end
- end.compact
-
- assert_equal 1, lengths.uniq.length
+ assert column_set.all? { |column| !column.match(/\bt\.\w+\s{2,}/) }
end
end
- def test_arguments_line_up
+ def test_arguments_no_line_up
column_definition_lines.each do |column_set|
- assert_line_up(column_set, /default: /)
- assert_line_up(column_set, /limit: /)
- assert_line_up(column_set, /null: /)
+ assert_no_line_up(column_set, /default: /)
+ assert_no_line_up(column_set, /limit: /)
+ assert_no_line_up(column_set, /null: /)
end
end
@@ -442,81 +439,3 @@ class SchemaDumperDefaultsTest < ActiveRecord::TestCase
assert_match %r{t\.time\s+"time_with_default",\s+default: '2000-01-01 07:17:04'}, output
end
end
-
-class SchemaDumperNoStandardizedArgumentWidthsTest < ActiveRecord::TestCase
- include SchemaDumpingHelper
-
- setup do
- ActiveRecord::SchemaDumper.standardized_argument_widths = false
- ActiveRecord::SchemaMigration.create_table
- end
-
- teardown do
- ActiveRecord::SchemaDumper.standardized_argument_widths = true
- end
-
- def standard_dump
- @@standard_dump ||= perform_schema_dump
- end
-
- def perform_schema_dump
- dump_all_table_schema []
- end
-
- def assert_no_line_up(lines, pattern)
- return assert(true) if lines.empty?
- matches = lines.map { |line| line.match(pattern) }
- matches.compact!
- return assert(true) if matches.empty?
- line_matches = lines.map { |line| [line, line.match(pattern)] }.select { |line, match| match }
- assert line_matches.all? { |line, match|
- start = match.offset(0).first
- line[start - 2..start - 1] == ", "
- }
- end
-
- def column_definition_lines(output = standard_dump)
- output.scan(/^( *)create_table.*?\n(.*?)^\1end/m).map { |m| m.last.split(/\n/) }
- end
-
- def test_arguments_no_line_up
- column_definition_lines.each do |column_set|
- assert_no_line_up(column_set, /default: /)
- assert_no_line_up(column_set, /limit: /)
- assert_no_line_up(column_set, /null: /)
- end
- end
-end
-
-class SchemaDumperNoStandardizedTypeWidthsTest < ActiveRecord::TestCase
- include SchemaDumpingHelper
-
- setup do
- ActiveRecord::SchemaDumper.standardized_type_widths = false
- ActiveRecord::SchemaMigration.create_table
- end
-
- teardown do
- ActiveRecord::SchemaDumper.standardized_type_widths = true
- end
-
- def standard_dump
- @@standard_dump ||= perform_schema_dump
- end
-
- def perform_schema_dump
- dump_all_table_schema []
- end
-
- def column_definition_lines(output = standard_dump)
- output.scan(/^( *)create_table.*?\n(.*?)^\1end/m).map { |m| m.last.split(/\n/) }
- end
-
- def test_types_no_line_up
- column_definition_lines.each do |column_set|
- next if column_set.empty?
-
- assert column_set.all? { |column| !column.match(/\bt\.\w+\s{2,}/) }
- end
- end
-end
diff --git a/guides/source/configuring.md b/guides/source/configuring.md
index 3e27dfafa0..7239105b29 100644
--- a/guides/source/configuring.md
+++ b/guides/source/configuring.md
@@ -368,11 +368,9 @@ The MySQL adapter adds one additional configuration option:
* `ActiveRecord::ConnectionAdapters::Mysql2Adapter.emulate_booleans` controls whether Active Record will consider all `tinyint(1)` columns as booleans. Defaults to `true`.
-The schema dumper adds additional configuration options:
+The schema dumper adds one additional configuration option:
* `ActiveRecord::SchemaDumper.ignore_tables` accepts an array of tables that should _not_ be included in any generated schema file. This setting is ignored unless `config.active_record.schema_format == :ruby`.
-* `ActiveRecord::SchemaDumper.standardized_argument_widths` configures whether colum arguments should be lined up or not in dump. By default this is `true`. This setting is ignored unless `config.active_record.schema_format == :ruby`.
-* `ActiveRecord::SchemaDumper.standardized_type_widths` configures whether colum types should be lined up or not in dump. By default this is `true`. This setting is ignored unless `config.active_record.schema_format == :ruby`.
### Configuring Action Controller