libis-workflow-mongoid 2.0.5 → 2.0.6

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: 017f82dc01ac32a1e83b84d9fc5df11ffaf0615c
4
- data.tar.gz: d92861630b1adebd7230af71e6d51b0285107308
3
+ metadata.gz: a97ed4107bf80afa5dc836eda58f8476c3d863b5
4
+ data.tar.gz: 3ba0b9532f2a929e626fe6e2a8cbd4d90e5abb7e
5
5
  SHA512:
6
- metadata.gz: 82f885ebe58ec52be066d8aefd8859612569e5ba6556d905852c80062fe0c9b51265563763b845caa2a4bded2924c9ce708c5dca71bcfcd94b60b0ef3478e107
7
- data.tar.gz: 97bf3b6bc08f98149cbe887e855c2fcc9d776aa1b951fc85910cdaabff6b2dc2294368735a540e761069f23d4bfd2663813f8a1a4f96afa53aab2c857acf9483
6
+ metadata.gz: e9763f51354b51451354dd54849c8e4b7a44cc96f91ee6c0a7c7286e22e02f933c4653e553fb149692c375f5d518c00914e23f0b3da905bdab3537d304b62304
7
+ data.tar.gz: 9513f8c35aaf0a7c3d28b5534c18c385cee0b767fdb787871b79e6278cb45ab65231978921aaf6b5289759b69ed2f3500b227a702a64bd2d3764ae78a580f57f
@@ -2,7 +2,6 @@ require 'mongoid'
2
2
  require 'mongoid/document'
3
3
  require 'yaml'
4
4
  require 'libis/tools/extend/hash'
5
- require 'map_with_indifferent_access'
6
5
 
7
6
  require_relative 'sequence'
8
7
 
@@ -34,8 +33,8 @@ module Libis
34
33
  end
35
34
 
36
35
  def create_from_hash(hash, id_tags, &block)
37
- hash = hash.key_strings_to_symbols
38
- id_tags = id_tags.map(&:to_sym)
36
+ hash = hash.key_symbols_to_strings(recursive: true)
37
+ id_tags = id_tags.map(&:to_s)
39
38
  return nil unless id_tags.empty? || id_tags.any? { |k| hash.include?(k) }
40
39
  tags = id_tags.inject({}) do |h, k|
41
40
  v = hash.delete(k)
@@ -51,17 +50,6 @@ module Libis
51
50
  item
52
51
  end
53
52
 
54
- def indifferent_hash(field_name, method_name)
55
- define_method method_name do
56
- MapWithIndifferentAccess::Map.new(self.read_attribute(field_name))
57
- end
58
-
59
- define_method "#{method_name}=" do |value|
60
- self.write_attribute(field_name, value)
61
- self.send(method_name)
62
- end
63
- end
64
-
65
53
  end
66
54
 
67
55
  def dup
@@ -1,4 +1,3 @@
1
- require 'map_with_indifferent_access'
2
1
  require 'libis/workflow/base/job'
3
2
  require 'libis/workflow/mongoid/base'
4
3
 
@@ -15,7 +14,7 @@ module Libis
15
14
 
16
15
  field :name, type: String
17
16
  field :description, type: String
18
- field :_input, type: Hash, default: -> { Hash.new }
17
+ field :input, type: Hash, default: -> { Hash.new }
19
18
  field :run_object, type: String
20
19
  field :log_to_file, type: Boolean, default: false
21
20
  field :log_each_run, type: Boolean, default: false
@@ -31,27 +30,10 @@ module Libis
31
30
 
32
31
  def self.from_hash(hash)
33
32
  self.create_from_hash(hash, [:name]) do |item, cfg|
34
- item.workflow = Libis::Workflow::Mongoid.from_hash(name: cfg.delete(:workflow))
33
+ item.workflow = Libis::Workflow::Mongoid.from_hash(name: cfg.delete('workflow'))
35
34
  end
36
35
  end
37
36
 
38
- # def input
39
- # MapWithIndifferentAccess::Map.new(self.read_attribute(:_input))
40
- # end
41
- #
42
- # def input=(hash)
43
- # self.write_attribute(:_input, hash)
44
- # self.input
45
- # end
46
-
47
- indifferent_hash :_input, :input
48
-
49
- def to_hash
50
- result = super
51
- result[:input] = result.delete(:_input)
52
- result
53
- end
54
-
55
37
  def logger
56
38
  return ::Libis::Workflow::Mongoid::Config.logger unless self.log_to_file
57
39
  logger = ::Logging::Repository[self.name]
@@ -76,7 +58,7 @@ module Libis
76
58
  # noinspection RubyStringKeysInHashInspection
77
59
  def execute(opts = {})
78
60
  if self.log_each_run
79
- opts[:run_config] = {
61
+ opts['run_config'] = {
80
62
  'log_to_file=' => true,
81
63
  'log_level=' => self.log_level
82
64
  }
@@ -19,6 +19,11 @@ module Libis
19
19
  field :status, type: String
20
20
  field :run_id
21
21
 
22
+ index({logger_type: 1, logger_id: 1, c_at: 1}, {background: true, name: 'by_logger'})
23
+ index({logger_type: 1, logger_id: 1, c_at: 1, task: 1}, {background: true, name: 'by_logger_task'})
24
+ index({logger_type: 1, logger_id: 1, c_at: 1, }, {background: true, name: 'by_logger'})
25
+ index({logger_type: 1, logger_id: 1, c_at: 1, status: 1}, {background: true, sparse: true, name: 'status_by_logger'})
26
+
22
27
  belongs_to :logger, polymorphic: true
23
28
 
24
29
  end
@@ -1,7 +1,7 @@
1
1
  module Libis
2
2
  module Workflow
3
3
  module Mongoid
4
- VERSION = '2.0.5' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
4
+ VERSION = '2.0.6' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
5
5
  end
6
6
  end
7
7
  end
@@ -11,12 +11,12 @@ module Libis
11
11
 
12
12
  store_in collection: 'workflow_items'
13
13
 
14
- field :_options, type: Hash, default: -> { Hash.new }
15
- field :_properties, type: Hash, default: -> { Hash.new }
16
- field :_summary, type: Hash, default: -> { Hash.new }
14
+ field :options, type: Hash, default: -> { Hash.new }
15
+ field :properties, type: Hash, default: -> { Hash.new }
16
+ field :summary, type: Hash, default: -> { Hash.new }
17
17
 
18
18
  has_many :logs, as: :logger, class_name: Libis::Workflow::Mongoid::LogEntry.to_s,
19
- dependent: :destroy, autosave: true, order: :_id.asc do
19
+ dependent: :destroy, autosave: true, order: :c_at.asc do
20
20
  def log_history
21
21
  where(:status.exists => false)
22
22
  end
@@ -36,18 +36,6 @@ module Libis
36
36
  document.logs.each { |log| log.destroy! }
37
37
  end
38
38
 
39
- indifferent_hash :_options, :options
40
- indifferent_hash :_properties, :properties
41
- indifferent_hash :_summary, :summary
42
-
43
- def to_hash
44
- result = super
45
- result[:options] = result.delete(:_options)
46
- result[:properties] = result.delete(:_properties)
47
- result[:summary] = result.delete(:_summary)
48
- result
49
- end
50
-
51
39
  def log_history
52
40
  # noinspection RubyResolve
53
41
  self.logs.log_history.all || []
@@ -1,4 +1,3 @@
1
- require 'map_with_indifferent_access'
2
1
  require 'libis/workflow/base/workflow'
3
2
  require 'libis/workflow/mongoid/base'
4
3
  require 'libis/tools/config_file'
@@ -17,7 +16,7 @@ module Libis
17
16
 
18
17
  field :name, type: String
19
18
  field :description, type: String
20
- field :_config, type: Hash, default: -> { Hash.new }
19
+ field :config, type: Hash, default: -> { Hash.new }
21
20
 
22
21
  index({name: 1}, {unique: 1})
23
22
 
@@ -25,11 +24,7 @@ module Libis
25
24
 
26
25
  def self.from_hash(hash)
27
26
  self.create_from_hash(hash, [:name]) do |item, cfg|
28
- if (value = item.read_attribute(:config))
29
- item.write_attribute(:_config, value)
30
- item.remove_attribute(:config)
31
- end
32
- item.configure(cfg.key_strings_to_symbols(recursive: true).merge(name: item.name))
27
+ item.configure(cfg.merge('name' => item.name))
33
28
  cfg.clear
34
29
  end
35
30
  end
@@ -39,22 +34,10 @@ module Libis
39
34
  config << file_or_hash
40
35
  return nil if config.empty?
41
36
  workflow = self.new
42
- workflow.configure(config.to_hash.key_strings_to_symbols(recursive: true))
37
+ workflow.configure(config.to_hash.key_symbols_to_strings(recursive: true))
43
38
  workflow
44
39
  end
45
40
 
46
- indifferent_hash :_config, :config
47
-
48
- def to_hash
49
- result = super
50
- result[:config] = result.delete(:_config)
51
- result
52
- end
53
-
54
- def input
55
- Libis::Tools::DeepStruct.new(super)
56
- end
57
-
58
41
  end
59
42
  end
60
43
  end
@@ -12,7 +12,7 @@ class TestDirItem < TestItem
12
12
  end
13
13
 
14
14
  def name
15
- self.properties[:name] || super
15
+ self.properties['name'] || super
16
16
  end
17
17
 
18
18
  end
@@ -15,15 +15,15 @@ class TestFileItem < TestItem
15
15
  end
16
16
 
17
17
  def name
18
- self.properties[:name] || super
18
+ self.properties['name'] || super
19
19
  end
20
20
 
21
21
  def filesize
22
- properties[:size]
22
+ properties['size']
23
23
  end
24
24
 
25
25
  def fixity_check(checksum)
26
- properties[:checksum] == checksum
26
+ properties['checksum'] == checksum
27
27
  end
28
28
 
29
29
  end
@@ -6,7 +6,7 @@ class CamelizeName < ::Libis::Workflow::Task
6
6
 
7
7
  def process(item)
8
8
  return unless (item.is_a?(TestFileItem) || item.is_a?(TestDirItem))
9
- item.properties[:name] = item.name.camelize
9
+ item.properties['name'] = item.name.camelize
10
10
  item.save!
11
11
  end
12
12
 
@@ -38,40 +38,40 @@ describe 'TestWorkflow' do
38
38
  let(:workflow) {
39
39
  wf = TestWorkflow.find_or_initialize_by(name: 'TestWorkflow')
40
40
  wf.configure(
41
- name: 'TestWorkflow',
42
- description: 'Workflow for testing',
43
- tasks: [
44
- {class: 'CollectFiles', recursive: true},
41
+ 'name' => 'TestWorkflow',
42
+ 'description' => 'Workflow for testing',
43
+ 'tasks' => [
44
+ {'class' => 'CollectFiles', 'recursive' => true},
45
45
  {
46
- name: 'ProcessFiles',
47
- subitems: true,
48
- tasks: [
49
- {class: 'ChecksumTester', recursive: true},
50
- {class: 'CamelizeName', recursive: true}
46
+ 'name' => 'ProcessFiles',
47
+ 'subitems' => true,
48
+ 'tasks' => [
49
+ {'class' => 'ChecksumTester', 'recursive' => true},
50
+ {'class' => 'CamelizeName', 'recursive' => true}
51
51
  ]
52
52
  }
53
53
  ],
54
- input: {
55
- dirname: {default: '.', propagate_to: 'CollectFiles#location'},
56
- checksum_type: {default: 'SHA1', propagate_to: 'ProcessFiles/ChecksumTester'}
54
+ 'input' => {
55
+ 'dirname' => {'default' => '.', 'propagate_to' => 'CollectFiles#location'},
56
+ 'checksum_type' => {'default' => 'SHA1', 'propagate_to' => 'ProcessFiles/ChecksumTester'}
57
57
  }
58
58
  )
59
- wf.save
59
+ wf.save!
60
60
  wf
61
61
  }
62
62
  let(:job) {
63
63
  job = TestJob.find_or_initialize_by(name: 'TestJob')
64
64
  job.configure(
65
- name: 'TestJob',
66
- description: 'Job for testing',
67
- workflow: workflow,
68
- run_object: 'TestRun',
69
- input: {dirname: dirname, checksum_type: 'SHA256'},
65
+ 'name' => 'TestJob',
66
+ 'description' => 'Job for testing',
67
+ 'workflow' => workflow,
68
+ 'run_object' => 'TestRun',
69
+ 'input' => {'dirname' => dirname, 'checksum_type' => 'SHA256'},
70
70
  )
71
71
 
72
72
  # noinspection RubyResolve
73
73
  job.runs.each { |run| run.destroy! }
74
- job.save
74
+ job.save!
75
75
  job
76
76
  }
77
77
 
@@ -81,9 +81,9 @@ describe 'TestWorkflow' do
81
81
 
82
82
  it 'should contain three tasks' do
83
83
 
84
- expect(workflow.config[:tasks].size).to eq 3
85
- expect(workflow.config[:tasks].first[:class]).to eq 'CollectFiles'
86
- expect(workflow.config[:tasks].last[:class]).to eq '::Libis::Workflow::Tasks::Analyzer'
84
+ expect(workflow.config['tasks'].size).to eq 3
85
+ expect(workflow.config['tasks'].first['class']).to eq 'CollectFiles'
86
+ expect(workflow.config['tasks'].last['class']).to eq '::Libis::Workflow::Tasks::Analyzer'
87
87
 
88
88
  end
89
89
 
@@ -162,17 +162,17 @@ STR
162
162
  expect(wf.description).to eq 'Workflow for testing'
163
163
  expect(wf.input.count).to eq 2
164
164
  expect(wf.input[:dirname][:default]).to eq '.'
165
- expect(wf.config[:tasks].count).to eq 3
166
- expect(wf.config[:tasks][0][:class]).to eq 'CollectFiles'
167
- expect(wf.config[:tasks][0][:recursive]).to eq true
168
- expect(wf.config[:tasks][1][:name]).to eq 'ProcessFiles'
169
- expect(wf.config[:tasks][1][:subitems]).to eq true
170
- expect(wf.config[:tasks][1][:tasks].count).to eq 2
171
- expect(wf.config[:tasks][1][:tasks][0][:class]).to eq 'ChecksumTester'
172
- expect(wf.config[:tasks][1][:tasks][0][:recursive]).to eq true
173
- expect(wf.config[:tasks][1][:tasks][1][:class]).to eq 'CamelizeName'
174
- expect(wf.config[:tasks][1][:tasks][1][:recursive]).to eq true
175
- expect(wf.config[:tasks][2][:class]).to eq '::Libis::Workflow::Tasks::Analyzer'
165
+ expect(wf.config['tasks'].count).to eq 3
166
+ expect(wf.config['tasks'][0]['class']).to eq 'CollectFiles'
167
+ expect(wf.config['tasks'][0]['recursive']).to eq true
168
+ expect(wf.config['tasks'][1]['name']).to eq 'ProcessFiles'
169
+ expect(wf.config['tasks'][1]['subitems']).to eq true
170
+ expect(wf.config['tasks'][1]['tasks'].count).to eq 2
171
+ expect(wf.config['tasks'][1]['tasks'][0]['class']).to eq 'ChecksumTester'
172
+ expect(wf.config['tasks'][1]['tasks'][0]['recursive']).to eq true
173
+ expect(wf.config['tasks'][1]['tasks'][1]['class']).to eq 'CamelizeName'
174
+ expect(wf.config['tasks'][1]['tasks'][1]['recursive']).to eq true
175
+ expect(wf.config['tasks'][2]['class']).to eq '::Libis::Workflow::Tasks::Analyzer'
176
176
  end
177
177
 
178
178
  # noinspection RubyResolve
@@ -190,8 +190,8 @@ STR
190
190
  item = run.items.first
191
191
  expect(item.nil?).to eq false
192
192
  expect(item.is_a? TestDirItem).to eq true
193
- expect(item.properties[:name]).to eq 'Items'
194
- expect(item.properties[:ingest_failed]).to eq false
193
+ expect(item.properties['name']).to eq 'Items'
194
+ expect(item.properties['ingest_failed']).to eq false
195
195
  end
196
196
 
197
197
  it 'move item in relation' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-workflow-mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-11 00:00:00.000000000 Z
11
+ date: 2016-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libis-workflow
@@ -122,14 +122,6 @@ files:
122
122
  - lib/libis/workflow/mongoid/work_item.rb
123
123
  - lib/libis/workflow/mongoid/worker.rb
124
124
  - lib/libis/workflow/mongoid/workflow.rb
125
- - lib/map_with_indifferent_access.rb
126
- - lib/map_with_indifferent_access/list.rb
127
- - lib/map_with_indifferent_access/map.rb
128
- - lib/map_with_indifferent_access/normalization.rb
129
- - lib/map_with_indifferent_access/normalization/deep_normalizer.rb
130
- - lib/map_with_indifferent_access/values.rb
131
- - lib/map_with_indifferent_access/version.rb
132
- - lib/map_with_indifferent_access/wraps_collection.rb
133
125
  - libis-workflow-mongoid.gemspec
134
126
  - mongoid.yml
135
127
  - spec/db_env.sh