mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Respect 'ignore_tables' in SQLite structure dump
This commit is contained in:
parent
486562fa95
commit
4b49ab6642
2 changed files with 30 additions and 1 deletions
|
@ -38,7 +38,16 @@ module ActiveRecord
|
|||
def structure_dump(filename, extra_flags)
|
||||
dbfile = configuration["database"]
|
||||
flags = extra_flags.join(" ") if extra_flags
|
||||
`sqlite3 #{flags} #{dbfile} .schema > #{filename}`
|
||||
|
||||
ignore_tables = ActiveRecord::SchemaDumper.ignore_tables
|
||||
if ignore_tables.any?
|
||||
tables = `sqlite3 #{dbfile} .tables`.split - ignore_tables
|
||||
condition = tables.map { |table| "tbl_name = '#{table}'" }.join(" OR ")
|
||||
statement = "SELECT sql FROM sqlite_master WHERE #{condition} ORDER BY tbl_name, type DESC, name"
|
||||
`sqlite3 #{flags} #{dbfile} "#{statement}" > #{filename}`
|
||||
else
|
||||
`sqlite3 #{flags} #{dbfile} .schema > #{filename}`
|
||||
end
|
||||
end
|
||||
|
||||
def structure_load(filename, extra_flags)
|
||||
|
|
|
@ -180,6 +180,9 @@ if current_adapter?(:SQLite3Adapter)
|
|||
"adapter" => "sqlite3",
|
||||
"database" => @database
|
||||
}
|
||||
|
||||
`sqlite3 #{@database} 'CREATE TABLE bar(id INTEGER)'`
|
||||
`sqlite3 #{@database} 'CREATE TABLE foo(id INTEGER)'`
|
||||
end
|
||||
|
||||
def test_structure_dump
|
||||
|
@ -189,6 +192,23 @@ if current_adapter?(:SQLite3Adapter)
|
|||
ActiveRecord::Tasks::DatabaseTasks.structure_dump @configuration, filename, "/rails/root"
|
||||
assert File.exist?(dbfile)
|
||||
assert File.exist?(filename)
|
||||
assert_match(/CREATE TABLE foo/, File.read(filename))
|
||||
assert_match(/CREATE TABLE bar/, File.read(filename))
|
||||
ensure
|
||||
FileUtils.rm_f(filename)
|
||||
FileUtils.rm_f(dbfile)
|
||||
end
|
||||
|
||||
def test_structure_dump_with_ignore_tables
|
||||
dbfile = @database
|
||||
filename = "awesome-file.sql"
|
||||
ActiveRecord::SchemaDumper.expects(:ignore_tables).returns(["foo"])
|
||||
|
||||
ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, filename, "/rails/root")
|
||||
assert File.exist?(dbfile)
|
||||
assert File.exist?(filename)
|
||||
assert_match(/bar/, File.read(filename))
|
||||
assert_no_match(/foo/, File.read(filename))
|
||||
ensure
|
||||
FileUtils.rm_f(filename)
|
||||
FileUtils.rm_f(dbfile)
|
||||
|
|
Loading…
Reference in a new issue