aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-05 14:48:19 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-05 14:48:19 -0700
commitfdcbc560ab155f82898e8894db4e566b78abfa37 (patch)
tree7d1cb1c66b5e6c342cc460ec82f9703f19d1aa72 /activerecord
parent1c8539da4738d51795422903b84f79705bc854cc (diff)
parentece23b5fa01301ec006aa42f8b59ec938c35427b (diff)
downloadrails-fdcbc560ab155f82898e8894db4e566b78abfa37.tar.gz
rails-fdcbc560ab155f82898e8894db4e566b78abfa37.tar.bz2
rails-fdcbc560ab155f82898e8894db4e566b78abfa37.zip
Merge pull request #7525 from seamusabshere/use-mysql-binary-for-rake-db-structure-load
Use the 'mysql' binary for 'rake db:structure:load'
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/tasks/mysql_database_tasks.rb12
-rw-r--r--activerecord/test/cases/tasks/mysql_rake_test.rb7
2 files changed, 10 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/tasks/mysql_database_tasks.rb b/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
index bf62dfd5b5..85d08402f9 100644
--- a/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
+++ b/activerecord/lib/active_record/tasks/mysql_database_tasks.rb
@@ -54,11 +54,15 @@ module ActiveRecord
end
def structure_load(filename)
- establish_connection(configuration)
- connection.execute('SET foreign_key_checks = 0')
- IO.read(filename).split("\n\n").each do |table|
- connection.execute(table)
+ args = ['mysql']
+ args.concat(['--user', configuration['username']]) if configuration['username']
+ args << "--password=#{configuration['password']}" if configuration['password']
+ args.concat(['--default-character-set', configuration['charset']]) if configuration['charset']
+ configuration.slice('host', 'port', 'socket', 'database').each do |k, v|
+ args.concat([ "--#{k}", v ]) if v
end
+ args.concat(['--execute', %{SET FOREIGN_KEY_CHECKS = 0; SOURCE #{filename}; SET FOREIGN_KEY_CHECKS = 1}])
+ Kernel.system(*args)
end
private
diff --git a/activerecord/test/cases/tasks/mysql_rake_test.rb b/activerecord/test/cases/tasks/mysql_rake_test.rb
index b49561d858..be591da8d6 100644
--- a/activerecord/test/cases/tasks/mysql_rake_test.rb
+++ b/activerecord/test/cases/tasks/mysql_rake_test.rb
@@ -251,17 +251,14 @@ module ActiveRecord
ActiveRecord::Base.stubs(:connection).returns(@connection)
ActiveRecord::Base.stubs(:establish_connection).returns(true)
+ Kernel.stubs(:system)
end
def test_structure_load
filename = "awesome-file.sql"
- ActiveRecord::Base.expects(:establish_connection).with(@configuration)
- @connection.expects(:execute).twice
+ Kernel.expects(:system).with('mysql', '--database', 'test-db', '--execute', %{SET FOREIGN_KEY_CHECKS = 0; SOURCE #{filename}; SET FOREIGN_KEY_CHECKS = 1})
- open(filename, 'w') { |f| f.puts("SELECT CURDATE();") }
ActiveRecord::Tasks::DatabaseTasks.structure_load(@configuration, filename)
- ensure
- FileUtils.rm(filename)
end
end