1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

ActiveRecord::Base.schema_ignore_tables => ActiveRecord::SchemaDumper.ignore_tables

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3347 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Tobias Lütke 2005-12-24 17:31:26 +00:00
parent 87535f50e9
commit d4e02f755d
5 changed files with 12 additions and 12 deletions

View file

@ -1,6 +1,6 @@
*SVN* *SVN*
* Added ActiveRecord::Base.schema_ignore_tables which tells SchemaDumper which tables to ignore. Useful for tables with funky column like the ones required for tsearch2. [TobiasLuetke] * Added ActiveRecord::SchemaDumper.ignore_tables which tells SchemaDumper which tables to ignore. Useful for tables with funky column like the ones required for tsearch2. [TobiasLuetke]
* SchemaDumper now doesn't fail anymore when there are unknown column types in the schema. Instead the table is ignored and a Comment is left in the schema.rb. [TobiasLuetke] * SchemaDumper now doesn't fail anymore when there are unknown column types in the schema. Instead the table is ignored and a Comment is left in the schema.rb. [TobiasLuetke]

View file

@ -74,3 +74,4 @@ RAILS_CONNECTION_ADAPTERS.each do |adapter|
end end
require 'active_record/query_cache' require 'active_record/query_cache'
require 'active_record/schema_dumper'

View file

@ -332,12 +332,6 @@ module ActiveRecord #:nodoc:
cattr_accessor :schema_format cattr_accessor :schema_format
@@schema_format = :sql @@schema_format = :sql
# A list of tables which should not be dumped to the schema.
# Acceptable values are strings as well as regexp.
# This setting is only used if schema_format == :ruby
cattr_accessor :schema_ignore_tables
@@schema_ignore_tables = []
class << self # Class methods class << self # Class methods
# Find operates with three different retrieval approaches: # Find operates with three different retrieval approaches:
# #

View file

@ -4,6 +4,11 @@ module ActiveRecord
class SchemaDumper #:nodoc: class SchemaDumper #:nodoc:
private_class_method :new private_class_method :new
# A list of tables which should not be dumped to the schema.
# Acceptable values are strings as well as regexp.
# This setting is only used if ActiveRecord::Base.schema_format == :ruby
cattr_accessor :ignore_tables
@@ignore_tables = []
def self.dump(connection=ActiveRecord::Base.connection, stream=STDOUT) def self.dump(connection=ActiveRecord::Base.connection, stream=STDOUT)
new(connection).dump(stream) new(connection).dump(stream)
@ -44,12 +49,12 @@ HEADER
def tables(stream) def tables(stream)
@connection.tables.sort.each do |tbl| @connection.tables.sort.each do |tbl|
next if ["schema_info", Base.schema_ignore_tables].flatten.any? do |ignored| next if ["schema_info", ignore_tables].flatten.any? do |ignored|
case ignored case ignored
when String: tbl == ignored when String: tbl == ignored
when Regexp: tbl =~ ignored when Regexp: tbl =~ ignored
else else
raise StandardError, 'ActiveRecord::Base.schema_ignore_tables accepts an array of String and / or Regexp values.' raise StandardError, 'ActiveRecord::SchemaDumper.ignore_tables accepts an array of String and / or Regexp values.'
end end
end end
table(tbl, stream) table(tbl, stream)

View file

@ -18,7 +18,7 @@ if ActiveRecord::Base.connection.respond_to?(:tables)
def test_schema_dump_with_string_ignored_table def test_schema_dump_with_string_ignored_table
stream = StringIO.new stream = StringIO.new
ActiveRecord::Base.schema_ignore_tables = ['accounts'] ActiveRecord::SchemaDumper.ignore_tables = ['accounts']
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream) ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
output = stream.string output = stream.string
assert_no_match %r{create_table "accounts"}, output assert_no_match %r{create_table "accounts"}, output
@ -30,7 +30,7 @@ if ActiveRecord::Base.connection.respond_to?(:tables)
def test_schema_dump_with_regexp_ignored_table def test_schema_dump_with_regexp_ignored_table
stream = StringIO.new stream = StringIO.new
ActiveRecord::Base.schema_ignore_tables = [/^account/] ActiveRecord::SchemaDumper.ignore_tables = [/^account/]
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream) ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
output = stream.string output = stream.string
assert_no_match %r{create_table "accounts"}, output assert_no_match %r{create_table "accounts"}, output
@ -41,7 +41,7 @@ if ActiveRecord::Base.connection.respond_to?(:tables)
def test_schema_dump_illegal_ignored_table_value def test_schema_dump_illegal_ignored_table_value
stream = StringIO.new stream = StringIO.new
ActiveRecord::Base.schema_ignore_tables = [5] ActiveRecord::SchemaDumper.ignore_tables = [5]
assert_raise(StandardError) do assert_raise(StandardError) do
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream) ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
end end