rocketjob 4.3.0.beta → 4.3.0.beta2

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
  SHA256:
3
- metadata.gz: 8ae22e2ca14255089a3500e9294fc689847bb92525da45ba90426cae38a45378
4
- data.tar.gz: fc0f6dd9c042020a01d47f4c2be35df3896db47e3cc07d875a27f057a8e64ab6
3
+ metadata.gz: b5544569821640636a5dc8cd7953f2c0fbadcfa90ec1c7ac029fa4fc249d1269
4
+ data.tar.gz: 601088d6918f605b80565d2185872b161e1ccf27d923bd6483fe49ac8d5b2586
5
5
  SHA512:
6
- metadata.gz: cb612469360af546d76ea1d024e80cbdf50f40693533fd3e608927911d62c86da6ad4ba290da0186ce98b3be95b3cfad21ceed3bf22091d6e80cf2adc7b2387d
7
- data.tar.gz: 4038eb8af3353d6358f3dc74c50410d1f16cf96fe716c19b29aa8843428e2a8938267b3d130c4023b7234ca45ad5a546d65836ea69775d354889e6cb50121fd6
6
+ metadata.gz: 9eda8d1c26f5e808f5ef2c1157c032ed490daaf697040a8987951c5ad25f979783796567b536c897317445b413f774fddcbd82ed3898a4578e3de4ece7a91ed7
7
+ data.tar.gz: 21744b1a7fad3e03c49367888e4662d0d00f60c671829c54cd8c7174ead64a8b9ce0642c61ae37c063508d5df3c0a7280a78e2bb1f752ac3fcd8e57343bf4a99
@@ -67,32 +67,6 @@ module RocketJob
67
67
  # Parses each line from the file into a Hash and uploads each hash for processing by workers.
68
68
  # See IOStreams::Stream#each_line, IOStreams::Stream#each_row, and IOStreams::Stream#each_record.
69
69
  #
70
- # encoding: [String|Encoding]
71
- # Encode returned data with this encoding.
72
- # 'US-ASCII': Original 7 bit ASCII Format
73
- # 'ASCII-8BIT': 8-bit ASCII Format
74
- # 'UTF-8': UTF-8 Format
75
- # Etc.
76
- # Default: 'UTF-8'
77
- # NOTE: If a IOStreams::Path, or IOStreams::Stream was supplied then the encoding will be set
78
- # if not already set in the supplied stream.
79
- #
80
- # encode_replace: [String]
81
- # The character to replace with when a character cannot be converted to the target encoding.
82
- # nil: Don't replace any invalid characters. Encoding::UndefinedConversionError is raised.
83
- # Default: nil
84
- # NOTE: If a IOStreams::Path, or IOStreams::Stream was supplied then the encoding will be set
85
- # if not already set in the supplied stream.
86
- #
87
- # encode_cleaner: [nil|symbol|Proc]
88
- # Cleanse data read from the input stream.
89
- # nil: No cleansing
90
- # :printable Cleanse all non-printable characters except \r and \n
91
- # Proc/lambda Proc to call after every read to cleanse the data
92
- # Default: :printable
93
- # NOTE: If a IOStreams::Path, or IOStreams::Stream was supplied then the encoding will be set
94
- # if not already set in the supplied stream.
95
- #
96
70
  # Example:
97
71
  # # Load plain text records from a file
98
72
  # job.upload('hello.csv')
@@ -100,7 +74,8 @@ module RocketJob
100
74
  # Example:
101
75
  # # Load plain text records from a file, stripping all non-printable characters,
102
76
  # # as well as any characters that cannot be converted to UTF-8
103
- # job.upload('hello.csv', encode_cleaner: :printable, encode_replace: '')
77
+ # path = IOStreams.path('hello.csv').option(:encode, cleaner: :printable, replace: '')
78
+ # job.upload(path)
104
79
  #
105
80
  # Example: Zip
106
81
  # # Since csv is not known to RocketJob it is ignored
@@ -140,15 +115,15 @@ module RocketJob
140
115
  # * If an io stream is supplied, it is read until it returns nil.
141
116
  # * Only use this method for UTF-8 data, for binary data use #input_slice or #input_records.
142
117
  # * CSV parsing is slow, so it is usually left for the workers to do.
143
- def upload(stream = nil, file_name: nil, category: :main, encoding: 'UTF-8', encode_cleaner: nil, encode_replace: nil, stream_mode: :line, on_first: nil, **args, &block)
118
+ def upload(stream = nil, file_name: nil, category: :main, stream_mode: :line, on_first: nil, **args, &block)
144
119
  raise(ArgumentError, 'Either stream, or a block must be supplied') unless stream || block
145
120
 
146
121
  count =
147
122
  if block
148
123
  input(category).upload(on_first: on_first, &block)
149
124
  else
150
- path = build_path(stream, file_name, encoding: encoding, encode_cleaner: encode_cleaner, encode_replace: encode_replace)
151
-
125
+ path = IOStreams.new(stream)
126
+ path.file_name = file_name if file_name
152
127
  self.upload_file_name = path.file_name
153
128
  input(category).upload(on_first: on_first) do |io|
154
129
  path.public_send("each_#{stream_mode}".to_sym, **args) { |line| io << line }
@@ -372,16 +347,13 @@ module RocketJob
372
347
  # Notes:
373
348
  # - The records are returned in '_id' order. Usually this is the order in
374
349
  # which the records were originally loaded.
375
- def download(stream = nil, category: :main, header_line: nil, encoding: 'UTF-8', encode_cleaner: nil, encode_replace: nil, **args, &block)
350
+ def download(stream = nil, category: :main, header_line: nil, **args, &block)
376
351
  raise "Cannot download incomplete job: #{id}. Currently in state: #{state}-#{sub_state}" if rocket_job_processing?
377
352
 
378
- if block
379
- output(category).download(header_line: header_line, &block)
380
- else
381
- path = build_path(stream, nil, encoding: encoding, encode_cleaner: encode_cleaner, encode_replace: encode_replace)
382
- path.line_writer(**args) do |io|
383
- output(category).download(header_line: header_line) { |record| io << record }
384
- end
353
+ return output(category).download(header_line: header_line, &block) if block
354
+
355
+ IOStreams.new(stream).line_writer(**args) do |io|
356
+ output(category).download(header_line: header_line) { |record| io << record }
385
357
  end
386
358
  end
387
359
 
@@ -417,17 +389,6 @@ module RocketJob
417
389
  RocketJob::Sliced::Writer::Output.collect(self, input_slice) { |writer| writer << result }
418
390
  end
419
391
  end
420
-
421
- private
422
-
423
- def build_path(stream, file_name, encoding: nil, encode_cleaner: nil, encode_replace: nil)
424
- path = IOStreams.new(stream)
425
- path.file_name = file_name if file_name
426
- if (encoding || encode_cleaner || encode_replace) && !path.setting(:encode)
427
- path.option_or_stream(:encode, encoding: encoding, cleaner: encode_cleaner, replace: encode_replace)
428
- end
429
- path
430
- end
431
392
  end
432
393
  end
433
394
  end
@@ -49,20 +49,20 @@ module RocketJob
49
49
  #
50
50
  # Notes:
51
51
  # - When supplying a block the header must be set manually
52
- def upload(file_name_or_io = nil, **args, &block)
53
- if tabular_input_type == :text
54
- args[:encoding] = 'UTF-8'
55
- args[:encode_cleaner] = :printable
56
- args[:encode_replace] = ''
52
+ def upload(stream = nil, **args, &block)
53
+ input_stream = stream.nil? ? nil : IOStreams.new(stream)
54
+
55
+ if stream && (tabular_input_type == :text)
56
+ input_stream.option_or_stream(:encode, encoding: 'UTF-8', cleaner: :printable, replace: '')
57
57
  end
58
58
 
59
59
  # If an input header is not required, then we don't extract it'
60
- return super(file_name_or_io, stream_mode: tabular_input_mode, **args, &block) unless tabular_input.header?
60
+ return super(input_stream, stream_mode: tabular_input_mode, **args, &block) unless tabular_input.header?
61
61
 
62
62
  # If the header is already set then it is not expected in the file
63
63
  if tabular_input_header.present?
64
64
  tabular_input_cleanse_header
65
- return super(file_name_or_io, stream_mode: tabular_input_mode, **args, &block)
65
+ return super(input_stream, stream_mode: tabular_input_mode, **args, &block)
66
66
  end
67
67
 
68
68
  case tabular_input_mode
@@ -72,16 +72,16 @@ module RocketJob
72
72
  tabular_input_cleanse_header
73
73
  self.tabular_input_header = tabular_input.header.columns
74
74
  end
75
- super(file_name_or_io, on_first: parse_header, stream_mode: tabular_input_mode, **args, &block)
75
+ super(input_stream, on_first: parse_header, stream_mode: tabular_input_mode, **args, &block)
76
76
  when :row
77
77
  set_header = -> (row) do
78
78
  tabular_input.header.columns = row
79
79
  tabular_input_cleanse_header
80
80
  self.tabular_input_header = tabular_input.header.columns
81
81
  end
82
- super(file_name_or_io, on_first: set_header, stream_mode: tabular_input_mode, **args, &block)
82
+ super(input_stream, on_first: set_header, stream_mode: tabular_input_mode, **args, &block)
83
83
  when :record
84
- super(file_name_or_io, stream_mode: tabular_input_mode, **args, &block)
84
+ super(input_stream, stream_mode: tabular_input_mode, **args, &block)
85
85
  else
86
86
  raise(ArgumentError, "Invalid tabular_input_mode: #{stream_mode.inspect}")
87
87
  end
@@ -1,3 +1,3 @@
1
1
  module RocketJob
2
- VERSION = '4.3.0.beta'.freeze
2
+ VERSION = '4.3.0.beta2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketjob
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0.beta
4
+ version: 4.3.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2019-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0.beta
47
+ version: 1.0.0.beta2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0.beta
54
+ version: 1.0.0.beta2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mongoid
57
57
  requirement: !ruby/object:Gem::Requirement