aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2013-10-21 10:49:49 -0700
committerYves Senn <yves.senn@gmail.com>2013-10-21 10:49:49 -0700
commit5a254c20581cccbab30b816e1efc604dce190179 (patch)
treeb9c8228f4b04103867aaff0db5b73e2bd82120ee
parent1bf87c1ee2e01be272ffe81b3908ea51f559ecb2 (diff)
parenta733e00b10e5f17a7fc70e55e9b1949a5e1128be (diff)
downloadrails-5a254c20581cccbab30b816e1efc604dce190179.tar.gz
rails-5a254c20581cccbab30b816e1efc604dce190179.tar.bz2
rails-5a254c20581cccbab30b816e1efc604dce190179.zip
Merge pull request #12567 from GoBoundless/fix_postgres_structure_import
Fix loading a sql structure file on postgres when the file's path has whitespace in it
-rw-r--r--activerecord/CHANGELOG.md5
-rw-r--r--activerecord/lib/active_record/tasks/postgresql_database_tasks.rb2
-rw-r--r--activerecord/test/cases/tasks/postgresql_rake_test.rb7
3 files changed, 13 insertions, 1 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 76b89fa0d1..97a42ca95b 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,3 +1,8 @@
+* Fix a bug where rake db:structure:load crashed when the path contained
+ spaces.
+
+ *Kevin Mook*
+
* `ActiveRecord::QueryMethods#unscope` unscopes negative equality
Allows you to call `#unscope` on a relation with negative equality
diff --git a/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb b/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
index 4413330fab..3d02ee07d0 100644
--- a/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
+++ b/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
@@ -59,7 +59,7 @@ module ActiveRecord
def structure_load(filename)
set_psql_env
- Kernel.system("psql -q -f #{filename} #{configuration['database']}")
+ Kernel.system("psql -q -f #{Shellwords.escape(filename)} #{configuration['database']}")
end
private
diff --git a/activerecord/test/cases/tasks/postgresql_rake_test.rb b/activerecord/test/cases/tasks/postgresql_rake_test.rb
index f31896bc7f..90dac6399d 100644
--- a/activerecord/test/cases/tasks/postgresql_rake_test.rb
+++ b/activerecord/test/cases/tasks/postgresql_rake_test.rb
@@ -231,6 +231,13 @@ module ActiveRecord
ActiveRecord::Tasks::DatabaseTasks.structure_load(@configuration, filename)
end
+
+ def test_structure_load_accepts_path_with_spaces
+ filename = "awesome file.sql"
+ Kernel.expects(:system).with("psql -q -f awesome\\ file.sql my-app-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.structure_load(@configuration, filename)
+ end
end
end