processor 2.2.0 → 2.3.0

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzUxNDQ3NmM4YzZhOTk5Njc0MjVmNThiNDJhYTlhZWQ0NjhkNjJlOQ==
5
- data.tar.gz: !binary |-
6
- MWExYTAxNjk0MDU3MGRiMDc3NmE3NzA0MzNkZjMzMTYxZTEwY2I3OA==
2
+ SHA1:
3
+ metadata.gz: 7325236eb0afe0d54037330c14e9e92f86e619f1
4
+ data.tar.gz: 0ba778329bfb0303aad872898514b584becca282
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NzcxYTA0Y2UyYTU4OGNiYTA0YjkxMDdlODE5YTQ2ZjRhZDA3ZGY0ODM0MWY5
10
- N2Y5NzY3MzI4MTZiN2UyMDY0NDgwYzQ1N2E1NDIxNmU2NmM4Y2I0ZmE5YjI1
11
- NGU2ZjIwZTU1OWVmNjRmM2FhODY1ODFiOTBmODI5ZWI0MWExNGU=
12
- data.tar.gz: !binary |-
13
- MWQ3MWIyZGIzZGVhYzA1ZWJkYjlhOWM5NzE0MDIzZDRhNjE2NmI0MGE5OTk5
14
- N2FhZTBiMzViNDY0MTM1NWMyNGNkZDI1ZTNjZDcxYjA5OTgzMzBjZThkMTNk
15
- NzNmOWE2YjdhNDMwZmE1YmM5MjU3N2Q4ZmZiZWRlNjAzM2MwZjI=
6
+ metadata.gz: bd4daf73250b1600753f79ba0b3b9aa7e962e702b63a13a8ce6c0a43590f5603269e768b4d9166178c0d24b8cc5694e1adbc1b187bea92eb8d10e268267545f2
7
+ data.tar.gz: 37749c66a998816b215fa66719973e04d4adb3b664a9f66dc521d9f8cffc884b89c9a3bef093f363dda3e76c9842116e5d6aa9cfc7d03cfe6a68c7a259621a78
@@ -6,6 +6,7 @@ require "processor/data/batch_processor"
6
6
  require "processor/data/null_processor"
7
7
  require "processor/data/solr_pages_processor"
8
8
  require "processor/data/csv_processor"
9
+ require "processor/data/active_record_batch_processor"
9
10
 
10
11
  require "processor/observer/logger"
11
12
  require "processor/observer/null_observer"
@@ -0,0 +1,40 @@
1
+ require_relative "null_processor"
2
+
3
+ module Processor
4
+ module Data
5
+ class ActiveRecordBatchProcessor < NullProcessor
6
+ attr_reader :source
7
+
8
+ def initialize(source:, presenter: -> { Hash.new }, output:, batch_size: 1000)
9
+ @source = source
10
+ @presenter = presenter
11
+ @output = output
12
+ @batch_size = batch_size
13
+ end
14
+
15
+ def records
16
+ source.find_each(batch_size: batch_size)
17
+ end
18
+
19
+ def process(record)
20
+ output.write presenter.call(record)
21
+ "OK"
22
+ end
23
+
24
+ def record_id(record)
25
+ record.id
26
+ end
27
+
28
+ def finalize
29
+ output.close
30
+ end
31
+
32
+ def total_records
33
+ @total_records ||= source.count
34
+ end
35
+
36
+ private
37
+ attr_reader :presenter, :output, :batch_size
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module Processor
2
- VERSION = "2.2.0"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -22,7 +22,6 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency "rake"
23
23
  gem.add_development_dependency "rspec", "~> 2.6"
24
24
  gem.add_development_dependency "pry" unless Processor::RUNNING_ON_CI
25
- gem.add_development_dependency "pry-plus" if "ruby" == RUBY_ENGINE && false == Processor::RUNNING_ON_CI
26
25
  gem.add_development_dependency "coveralls" if Processor::RUNNING_ON_CI
27
26
  end
28
27
 
@@ -1,3 +1,4 @@
1
+ require "processor"
1
2
  if Processor::RUNNING_ON_CI
2
3
  require 'coveralls'
3
4
  Coveralls.wear!
metadata CHANGED
@@ -1,72 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: processor
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Paramonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-11 00:00:00.000000000 Z
11
+ date: 2016-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: pry-plus
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- description: ! 'Processor is a tool that helps to iterate over collection and perform
55
+ description: 'Processor is a tool that helps to iterate over collection and perform
70
56
  complex actions on a result. It is extremely useful in data migrations, report generation,
71
57
  etc. '
72
58
  email:
@@ -75,11 +61,11 @@ executables: []
75
61
  extensions: []
76
62
  extra_rdoc_files: []
77
63
  files:
78
- - .coveralls.yml
79
- - .gitignore
80
- - .rspec
81
- - .rvmrc
82
- - .travis.yml
64
+ - ".coveralls.yml"
65
+ - ".gitignore"
66
+ - ".rspec"
67
+ - ".rvmrc"
68
+ - ".travis.yml"
83
69
  - Gemfile
84
70
  - LICENSE
85
71
  - README.md
@@ -89,6 +75,7 @@ files:
89
75
  - example/migrator.rb
90
76
  - example/observer/progress_bar.rb
91
77
  - lib/processor.rb
78
+ - lib/processor/data/active_record_batch_processor.rb
92
79
  - lib/processor/data/array_processor.rb
93
80
  - lib/processor/data/batch_processor.rb
94
81
  - lib/processor/data/csv_processor.rb
@@ -138,17 +125,17 @@ require_paths:
138
125
  - lib
139
126
  required_ruby_version: !ruby/object:Gem::Requirement
140
127
  requirements:
141
- - - ! '>='
128
+ - - ">="
142
129
  - !ruby/object:Gem::Version
143
130
  version: '0'
144
131
  required_rubygems_version: !ruby/object:Gem::Requirement
145
132
  requirements:
146
- - - ! '>='
133
+ - - ">="
147
134
  - !ruby/object:Gem::Version
148
135
  version: '0'
149
136
  requirements: []
150
137
  rubyforge_project:
151
- rubygems_version: 2.2.2
138
+ rubygems_version: 2.4.5
152
139
  signing_key:
153
140
  specification_version: 4
154
141
  summary: Universal processor for threaded collection iteration, logging and post processing
@@ -172,4 +159,3 @@ test_files:
172
159
  - spec/processor/thread_spec.rb
173
160
  - spec/spec_helper_lite.rb
174
161
  - spec/support/dummy_file
175
- has_rdoc: