pg_tasks 1.3.3 → 2.0.0.pre.1

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: 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