diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2016-08-22 15:46:04 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2016-08-22 15:46:04 -0300 |
commit | df84e9867219e9311aef6f4efd5dd9ec675bee5c (patch) | |
tree | 69e1aaa4201ca87ad671a90adfc60bf8ae9eb58a | |
parent | d25a5ce256c56d2f9e140aaf59f48945ddfcac1a (diff) | |
download | rails-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.md | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/schema_dumper.rb | 41 | ||||
-rw-r--r-- | activerecord/test/cases/schema_dumper_test.rb | 105 | ||||
-rw-r--r-- | guides/source/configuring.md | 4 |
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 |