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:
parent
87535f50e9
commit
d4e02f755d
5 changed files with 12 additions and 12 deletions
|
@ -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]
|
||||||
|
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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:
|
||||||
#
|
#
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue