pg_tasks 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5fcc8c4ebd3261bb86e000784e251573fe277d3
4
- data.tar.gz: a1eacb6d11cbc6fe09042a92c82fa1343c4c648e
3
+ metadata.gz: fc265a9b51988c66412de5651644fe6427761bd0
4
+ data.tar.gz: 7326fe644b0d418c17707e6f80600c3554ba9c61
5
5
  SHA512:
6
- metadata.gz: 2fd7aa59f705bff7d9709290ab2be2b81b1305f18d6ecf5ed9bec0bd9bd71c64c2bf69a50dd5e312cbd133a77d64c9acbfa198e2407e1bb6cfe62f7ec582d92b
7
- data.tar.gz: eca219a82b9e75fc951ecc41d29e38fbdfafe25555f5af1604a24dcb0c8ae811fac0509c015792f9588fb2bb31a53025b8008131fd1fe8f6eeea6fe1bf3ba071
6
+ metadata.gz: b005994e668eb75f856f12ad35b17d671cea87a31779ee6bd519a7035147b01dd478f95d150f800e0b4faee7920858e50dd1289403c08ea21c4e0d7e99a826a7
7
+ data.tar.gz: 5bfd6120421f4f5606a274e7840c23c474846eaed9150d04e60b898c594d068f9bcb02b1d0415c959e504c84a5df5317d8e709f5ccb68f50ce19b36b4c974462
data/Rakefile CHANGED
@@ -14,6 +14,4 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
-
18
17
  Bundler::GemHelper.install_tasks
19
-
@@ -1,8 +1,8 @@
1
1
  #--
2
2
  # Copyright (c) 2015 Thomas Schank
3
3
  #
4
- # Released to the public under the terms of the MIT license.
5
- # See MIT-LICENSE.
4
+ # Released to the public under the terms of the MIT license.
5
+ # See MIT-LICENSE.
6
6
  #
7
7
  #++
8
8
 
@@ -1,11 +1,11 @@
1
1
  #--
2
2
  # Copyright (c) 2015 Thomas Schank
3
3
  #
4
- # Released to the public under the terms of the MIT license.
5
- # See MIT-LICENSE.
4
+ # Released to the public under the terms of the MIT license.
5
+ # See MIT-LICENSE.
6
6
  #
7
7
  #++
8
8
 
9
9
  module PgTasks
10
- VERSION = "1.0.1"
10
+ VERSION = '1.1.0'
11
11
  end
data/lib/pg_tasks.rb CHANGED
@@ -1,23 +1,21 @@
1
1
  #--
2
2
  # Copyright (c) 2015 Thomas Schank
3
3
  #
4
- # Released to the public under the terms of the MIT license.
5
- # See MIT-LICENSE.
4
+ # Released to the public under the terms of the MIT license.
5
+ # See MIT-LICENSE.
6
6
  #
7
7
  #++
8
-
8
+
9
9
  require 'active_record/tasks/database_tasks'
10
10
  require 'active_record/tasks/postgresql_database_tasks'
11
11
 
12
12
  module PgTasks
13
-
14
13
  require 'pg_tasks/railtie' if defined?(Rails)
15
14
 
16
15
  DEFAULT_BINARY_DATA_FILE_NAME = 'data.pgbin'
17
16
  DEFAULT_BINARY_STRUCTURE_AND_DATA_FILE_NAME = 'structure_and_data.pgbin'
18
17
 
19
18
  class << self
20
-
21
19
  %w(data_dump data_restore).each do |method_name|
22
20
  define_method method_name do |filename = nil|
23
21
  ActiveRecord::Tasks::DatabaseTasks \
@@ -29,17 +27,17 @@ module PgTasks
29
27
 
30
28
  %w(structure_and_data_dump structure_and_data_restore).each do |method_name|
31
29
  define_method method_name do |filename = nil|
32
- ActiveRecord::Tasks::DatabaseTasks \
33
- .perform_pg_db_task_for_config_and_filename \
34
- method_name, current_config,
35
- filename_or_default_binary_structure_and_data_file(filename)
30
+ ActiveRecord::Tasks::DatabaseTasks \
31
+ .perform_pg_db_task_for_config_and_filename \
32
+ method_name, current_config,
33
+ filename_or_default_binary_structure_and_data_file(filename)
36
34
  end
37
35
  end
38
36
 
39
37
  def truncate_tables
40
38
  ActiveRecord::Base.connection.tap do |connection|
41
39
  connection.tables.reject { |tn| tn == 'schema_migrations' }
42
- .join(', ').tap do |tables|
40
+ .join(', ').tap do |tables|
43
41
  connection.execute " TRUNCATE TABLE #{tables} CASCADE; "
44
42
  end
45
43
  end
@@ -62,32 +60,37 @@ module PgTasks
62
60
  File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir,
63
61
  DEFAULT_BINARY_STRUCTURE_AND_DATA_FILE_NAME)
64
62
  end
65
-
66
63
  end
67
64
  end
68
65
 
69
66
  module ActiveRecord
70
67
  module Tasks
71
68
  class PostgreSQLDatabaseTasks
72
-
73
69
  def data_dump(filename)
74
70
  set_psql_env
75
71
  command = 'pg_dump -F c -a -T schema_migrations -x -O -f ' \
76
72
  "#{Shellwords.escape(filename)} " \
77
73
  "#{Shellwords.escape(configuration['database'])}"
78
- raise 'Error during data_dump' unless Kernel.system(command)
79
- $stdout.puts "The data of '#{configuration['database']} " \
80
- "has been dumped to '#{filename}'"
74
+ unless Kernel.system(command)
75
+ raise 'Error during data_dump'
76
+ else
77
+ $stdout.puts "The data of '#{configuration['database']} " \
78
+ "has been dumped to '#{filename}'"
79
+ end
81
80
  end
82
81
 
83
82
  def data_restore(filename)
84
83
  set_psql_env
85
- command = 'pg_restore --disable-triggers -a -x -O -d ' \
86
- "#{Shellwords.escape(configuration['database'])} " \
84
+ command = 'pg_restore --disable-triggers ' \
85
+ '--single-transaction -a -x -O ' \
86
+ "-d #{Shellwords.escape(configuration['database'])} " \
87
87
  "#{Shellwords.escape(filename)}"
88
- raise 'Error during data_restore ' unless Kernel.system(command)
89
- $stdout.puts "Data from '#{filename}' has been restored to \
88
+ unless Kernel.system(command)
89
+ raise 'Error during data_restore '
90
+ else
91
+ $stdout.puts "Data from '#{filename}' has been restored to \
90
92
  '#{configuration['database']}'"
93
+ end
91
94
  end
92
95
 
93
96
  def structure_and_data_dump(filename)
@@ -105,7 +108,7 @@ module ActiveRecord
105
108
 
106
109
  def structure_and_data_restore(filename)
107
110
  set_psql_env
108
- command = 'pg_restore --disable-triggers -x -O -d ' \
111
+ command = 'pg_restore --disable-triggers --single-transaction -x -O -d ' \
109
112
  "#{Shellwords.escape(configuration['database'])} " \
110
113
  "#{Shellwords.escape(filename)}"
111
114
  unless Kernel.system(command)
@@ -115,7 +118,6 @@ module ActiveRecord
115
118
  "has been restored to '#{filename}'"
116
119
  end
117
120
  end
118
-
119
121
  end
120
122
  end
121
123
  end
@@ -123,7 +125,6 @@ end
123
125
  module ActiveRecord
124
126
  module Tasks
125
127
  module DatabaseTasks
126
-
127
128
  def perform_pg_db_task_for_config_and_filename(task_name, *arguments)
128
129
  configuration = arguments.first
129
130
  filename = arguments.delete_at 1
@@ -134,7 +135,6 @@ module ActiveRecord
134
135
  rescue Exception => error
135
136
  $stderr.puts error, *(error.backtrace)
136
137
  end
137
-
138
138
  end
139
139
  end
140
140
  end
@@ -1,23 +1,20 @@
1
1
  #--
2
2
  # Copyright (c) 2015 Thomas Schank
3
3
  #
4
- # Released to the public under the terms of the MIT license.
5
- # See MIT-LICENSE.
4
+ # Released to the public under the terms of the MIT license.
5
+ # See MIT-LICENSE.
6
6
  #
7
7
  #++
8
8
 
9
9
  require 'pg_tasks'
10
10
 
11
11
  namespace :db do
12
-
13
12
  namespace :pg do
14
-
15
13
  task truncate_tables: [:environment, :load_config] do
16
14
  PgTasks.truncate_tables
17
15
  end
18
16
 
19
17
  namespace :data do
20
-
21
18
  task dump: [:environment, :load_config] do
22
19
  PgTasks.data_dump ENV['FILE']
23
20
  end
@@ -25,11 +22,9 @@ namespace :db do
25
22
  task restore: [:environment, :load_config] do
26
23
  PgTasks.data_restore ENV['FILE']
27
24
  end
28
-
29
25
  end
30
26
 
31
27
  namespace :structure_and_data do
32
-
33
28
  task dump: [:environment, :load_config] do
34
29
  PgTasks.structure_and_data_dump ENV['FILE']
35
30
  end
@@ -37,9 +32,6 @@ namespace :db do
37
32
  task restore: [:environment, :load_config] do
38
33
  PgTasks.structure_and_data_restore ENV['FILE']
39
34
  end
40
-
41
35
  end
42
-
43
36
  end
44
-
45
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Schank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-11 00:00:00.000000000 Z
11
+ date: 2015-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rubocop
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
47
61
  description:
48
62
  email:
49
63
  - DrTom@schank.ch