pg_tasks 1.3.3 → 2.0.0.pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8eedb9562ed35e4f14eee1f724e605c71ef026f0
4
- data.tar.gz: 8362caf2327c36b50af7bc8906dba6842806777a
3
+ metadata.gz: 624d4e26327ef5a1005ff2b0d796504def390bc5
4
+ data.tar.gz: 55ab7b8400af50cb1f082b616ab4d2c267264831
5
5
  SHA512:
6
- metadata.gz: 697a230867135e471965c3d89bb9f5766ee8c3810634be3affd6aa46b506fdc59c1b6b0cdfa052c3fb0d7887dece3076308f2d14b706fc2a306189334c8e27a0
7
- data.tar.gz: a48615a79d90d5afc05a812e7591926a146dbe81867c567a0971d0e480134317eabdc338eb640ac60831145e0fc0a5e9fadb0da7f7fc4443075d093d473f62bb
6
+ metadata.gz: a1460d625e02201f3ddb3619818cfd50af043fc1df7ed5345e81bf5e3fc76c86481929bfe8d6650e57c6764092b421326c2f35120464ec4bae39246f38c800d9
7
+ data.tar.gz: 78c658fbf4d5684a5a9a0edd99d06edf63fe8d2ac897ae50bbf64a307e35be40bd8c994710c93a4dea873de4e9a0076eb52b270299a58e9ca47ba77b31aa3511
@@ -7,5 +7,5 @@
7
7
  #++
8
8
 
9
9
  module PgTasks
10
- VERSION = '1.3.3'
10
+ VERSION = '2.0.0-1'
11
11
  end
data/lib/pg_tasks.rb CHANGED
@@ -16,12 +16,12 @@ module PgTasks
16
16
  DEFAULT_BINARY_STRUCTURE_AND_DATA_FILE_NAME = 'structure_and_data.pgbin'
17
17
 
18
18
  class << self
19
- %w(data_dump data_restore).each do |method_name|
19
+ %w(data_restore).each do |method_name|
20
20
  define_method method_name do |filename = nil|
21
21
  ActiveRecord::Tasks::DatabaseTasks \
22
22
  .perform_pg_db_task_for_config_and_filename \
23
23
  method_name, current_config,
24
- filename_or_default_binary_data_file(filename)
24
+ filename_or_default_binary_structure_and_data_file(filename)
25
25
  end
26
26
  end
27
27
 
@@ -53,12 +53,6 @@ module PgTasks
53
53
  ActiveRecord::Tasks::DatabaseTasks.current_config
54
54
  end
55
55
 
56
- def filename_or_default_binary_data_file(filename)
57
- (filename.present? && filename) || \
58
- File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir,
59
- DEFAULT_BINARY_DATA_FILE_NAME)
60
- end
61
-
62
56
  def filename_or_default_binary_structure_and_data_file(filename)
63
57
  (filename.present? && filename) || \
64
58
  File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir,
@@ -70,30 +64,33 @@ end
70
64
  module ActiveRecord
71
65
  module Tasks
72
66
  class PostgreSQLDatabaseTasks
73
- def data_dump(filename)
74
- set_psql_env
75
- command = 'pg_dump -F c -a -T schema_migrations -x -O -f ' \
76
- "#{Shellwords.escape(filename.to_s)} " \
77
- "#{Shellwords.escape(configuration['database'])}"
78
- unless Kernel.system(command)
79
- raise 'Error during data_dump'
80
- else
81
- $stdout.puts "The data of '#{configuration['database']} " \
82
- "has been dumped to '#{filename}'"
83
- end
84
- end
85
67
 
86
68
  def data_restore(filename)
87
- set_psql_env
88
- command = 'pg_restore --disable-triggers --exit-on-error ' \
89
- '--single-transaction -a -x -O ' \
90
- "-d #{Shellwords.escape(configuration['database'])} " \
91
- "#{Shellwords.escape(filename.to_s)}"
92
- unless Kernel.system(command)
93
- raise 'Error during data_restore '
94
- else
95
- $stdout.puts "Data from '#{filename}' has been restored to \
69
+ shell_filename= Shellwords.escape filename.to_s
70
+ list_cmd = "pg_restore -l #{shell_filename}"
71
+ pg_list = `#{list_cmd}`
72
+ raise "Command #{list_cmd} failed " if $?.exitstatus != 0
73
+ restore_list = pg_list.split(/\n/) \
74
+ .reject{|l| l =~ /TABLE DATA .* schema_migrations/}.join("\n")
75
+ begin
76
+ restore_list_file = Tempfile.new 'pg_restore_list'
77
+ restore_list_file.write restore_list
78
+ set_psql_env
79
+ command = 'pg_restore --data-only --exit-on-error ' \
80
+ ' --single-transaction --no-privileges --no-owner ' \
81
+ ' --disable-trigger ' \
82
+ " -L #{restore_list_file.path} " \
83
+ " -d #{Shellwords.escape(configuration['database'])} " \
84
+ " #{shell_filename }"
85
+ unless Kernel.system(command)
86
+ raise 'Error during data_restore '
87
+ else
88
+ $stdout.puts "Data from '#{filename}' has been restored to \
96
89
  '#{configuration['database']}'"
90
+ end
91
+ ensure
92
+ restore_list_file.close
93
+ restore_list_file.unlink
97
94
  end
98
95
  end
99
96
 
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.3.3
4
+ version: 2.0.0.pre.1
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-08-31 00:00:00.000000000 Z
11
+ date: 2016-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -86,12 +86,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ">="
89
+ - - ">"
90
90
  - !ruby/object:Gem::Version
91
- version: '0'
91
+ version: 1.3.1
92
92
  requirements: []
93
93
  rubyforge_project:
94
- rubygems_version: 2.4.8
94
+ rubygems_version: 2.4.5.1
95
95
  signing_key:
96
96
  specification_version: 4
97
97
  summary: PostgreSQL Tasks and Functions for Ruby on Rails