diff options
author | Caleb Thompson <caleb@calebthompson.io> | 2014-07-25 13:30:23 -0500 |
---|---|---|
committer | Caleb Thompson <caleb@calebthompson.io> | 2014-07-25 15:11:45 -0500 |
commit | 75f3584d9b87097377b312d35bd124686723ce4a (patch) | |
tree | 49d0da96d1ea814f548e1e53f1a2b2186475c703 /CONTRIBUTING.md | |
parent | 48cd7d337d7b2848e16cd38cc50f04fc04d85ff4 (diff) | |
download | rails-75f3584d9b87097377b312d35bd124686723ce4a.tar.gz rails-75f3584d9b87097377b312d35bd124686723ce4a.tar.bz2 rails-75f3584d9b87097377b312d35bd124686723ce4a.zip |
Extract iterator method in AR::SchemaDumper
Gems which wish to tie into ActiveRecord::SchemaDumper need to
duplicate this logic currently. [Foreigner] is one such example, as is a
library I'm currently working on but which hasn't been released yet:
def tables_with_foreign_keys(stream)
tables_without_foreign_keys(stream)
@connection.tables.sort.each do |table|
next if ['schema_migrations', ignore_tables].flatten.any? do |ignored|
case ignored
when String; table == ignored
when Regexp; table =~ ignored
else
raise StandardError, 'ActiveRecord::SchemaDumper.ignore_tables accepts an array of String and / or Regexp values.'
end
end
foreign_keys(table, stream)
end
end
[Foreigner]: https://github.com/matthuhiggins/foreigner/blob/master/lib/foreigner/schema_dumper.rb#L36-L43
Extract the skip logic to a method, making it much simpler to follow
this same behavior in gems that are tying into the migration flow and
let them dump only tables that aren't skipped without copying this block
of code. The above code could then be simplified to:
def tables_with_foreign_keys(stream)
tables_without_foreign_keys(stream)
@connection.tables.sort.each do |table|
foreign_keys(table, stream) unless ignored?(table)
end
end
It also, in my opinion, simplifies the logic on ActiveRecord's side, and
clarifies the intent of the skip logic.
Diffstat (limited to 'CONTRIBUTING.md')
0 files changed, 0 insertions, 0 deletions