dor-services 4.25.1 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dor-indexer +20 -19
  3. data/bin/dor-indexerd +3 -2
  4. data/config/certs/robots-dor-dev.crt +29 -0
  5. data/config/certs/robots-dor-dev.key +27 -0
  6. data/config/config_defaults.yml +0 -6
  7. data/config/dev_console_env.rb +65 -0
  8. data/config/environments/development.rb +84 -0
  9. data/config/environments/development.rb.old +84 -0
  10. data/config/environments/test.rb +84 -0
  11. data/lib/dor-services.rb +8 -18
  12. data/lib/dor/config.rb +18 -24
  13. data/lib/dor/datastreams/administrative_metadata_ds.rb +8 -7
  14. data/lib/dor/datastreams/content_metadata_ds.rb +200 -278
  15. data/lib/dor/datastreams/datastream_spec_solrizer.rb +1 -1
  16. data/lib/dor/datastreams/default_object_rights_ds.rb +10 -8
  17. data/lib/dor/datastreams/desc_metadata_ds.rb +30 -34
  18. data/lib/dor/datastreams/embargo_metadata_ds.rb +17 -13
  19. data/lib/dor/datastreams/events_ds.rb +12 -12
  20. data/lib/dor/datastreams/geo_metadata_ds.rb +3 -244
  21. data/lib/dor/datastreams/identity_metadata_ds.rb +34 -30
  22. data/lib/dor/datastreams/role_metadata_ds.rb +6 -6
  23. data/lib/dor/datastreams/simple_dublin_core_ds.rb +12 -9
  24. data/lib/dor/datastreams/version_metadata_ds.rb +14 -33
  25. data/lib/dor/datastreams/workflow_definition_ds.rb +18 -18
  26. data/lib/dor/datastreams/workflow_ds.rb +74 -65
  27. data/lib/dor/migrations/identifiable/assert_adminPolicy.rb +1 -1
  28. data/lib/dor/migrations/identifiable/fix_model_assertions.rb +1 -1
  29. data/lib/dor/migrations/identifiable/record_remediation.rb +2 -2
  30. data/lib/dor/migrations/identifiable/uriify_augmented_contentlocation_refs.rb +1 -1
  31. data/lib/dor/migrations/identifiable/uriify_contentlocation_refs.rb +1 -1
  32. data/lib/dor/migrations/processable/unify_workflows.rb +4 -4
  33. data/lib/dor/migrations/versionable/add_missing_version_md.rb +1 -1
  34. data/lib/dor/models/admin_policy_object.rb +1 -1
  35. data/lib/dor/models/assembleable.rb +3 -4
  36. data/lib/dor/models/collection.rb +0 -2
  37. data/lib/dor/models/contentable.rb +34 -35
  38. data/lib/dor/models/describable.rb +80 -122
  39. data/lib/dor/models/editable.rb +57 -73
  40. data/lib/dor/models/embargoable.rb +13 -15
  41. data/lib/dor/models/eventable.rb +3 -3
  42. data/lib/dor/models/geoable.rb +8 -9
  43. data/lib/dor/models/governable.rb +36 -54
  44. data/lib/dor/models/identifiable.rb +119 -115
  45. data/lib/dor/models/item.rb +4 -4
  46. data/lib/dor/models/itemizable.rb +9 -9
  47. data/lib/dor/models/presentable.rb +133 -0
  48. data/lib/dor/models/preservable.rb +4 -4
  49. data/lib/dor/models/processable.rb +29 -28
  50. data/lib/dor/models/publishable.rb +36 -30
  51. data/lib/dor/models/releasable.rb +310 -0
  52. data/lib/dor/models/shelvable.rb +14 -14
  53. data/lib/dor/models/upgradable.rb +13 -13
  54. data/lib/dor/models/versionable.rb +4 -7
  55. data/lib/dor/models/workflow_object.rb +16 -36
  56. data/lib/dor/services/cleanup_reset_service.rb +28 -34
  57. data/lib/dor/services/cleanup_service.rb +4 -4
  58. data/lib/dor/services/digital_stacks_service.rb +10 -10
  59. data/lib/dor/services/merge_service.rb +1 -1
  60. data/lib/dor/services/metadata_handlers/mdtoolkit_handler.rb +2 -2
  61. data/lib/dor/services/metadata_service.rb +20 -20
  62. data/lib/dor/services/registration_service.rb +26 -27
  63. data/lib/dor/services/reset_workspace_service.rb +15 -15
  64. data/lib/dor/services/sdr_ingest_service.rb +4 -4
  65. data/lib/dor/services/search_service.rb +4 -9
  66. data/lib/dor/services/suri_service.rb +5 -5
  67. data/lib/dor/services/technical_metadata_service.rb +3 -2
  68. data/lib/dor/utils/ng_tidy.rb +9 -9
  69. data/lib/dor/utils/predicate_patch.rb +1 -1
  70. data/lib/dor/utils/solr_doc_helper.rb +13 -5
  71. data/lib/dor/version.rb +1 -1
  72. data/lib/dor/workflow/document.rb +28 -30
  73. data/lib/dor/workflow/graph.rb +36 -36
  74. data/lib/dor/workflow/process.rb +12 -12
  75. data/lib/tasks/dor.rake +1 -1
  76. data/lib/tasks/rdoc.rake +3 -3
  77. metadata +67 -76
  78. data/lib/dor/datastreams/geo2mods.xsl +0 -867
  79. data/lib/dor/models/discoverable.rb +0 -64
  80. data/lib/dor/models/releaseable.rb +0 -357
  81. data/lib/dor/services/indexing_service.rb +0 -64
  82. data/lib/dor/utils/sdr_client.rb +0 -23
  83. data/lib/dor/utils/utc_date_field_mapper.rb +0 -7
@@ -20,4 +20,4 @@ module ActiveFedora
20
20
  end
21
21
  end
22
22
  end
23
- end
23
+ end
@@ -1,9 +1,17 @@
1
1
  module SolrDocHelper
2
-
2
+
3
3
  def add_solr_value(solr_doc, field_name, value, field_type = :default, index_types = [:searchable])
4
- index_types.each { |index_type|
5
- ::Solrizer::Extractor.insert_solr_field_value(solr_doc, ::ActiveFedora::SolrService.solr_name(field_name, field_type, index_type), value)
6
- }
4
+ if Solrizer::VERSION > "3"
5
+ case field_type
6
+ when :symbol
7
+ index_types << field_type
8
+ end
9
+ ::Solrizer.insert_field(solr_doc, field_name, value, *index_types)
10
+ else
11
+ index_types.each { |index_type|
12
+ ::Solrizer::Extractor.insert_solr_field_value(solr_doc, ::ActiveFedora::SolrService.solr_name(field_name, field_type, index_type), value)
13
+ }
14
+ end
7
15
  end
8
-
16
+
9
17
  end
data/lib/dor/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dor
2
- VERSION = '4.25.1'
2
+ VERSION = '5.0.0'
3
3
  end
@@ -2,7 +2,7 @@ module Dor
2
2
  module Workflow
3
3
  class Document
4
4
  include SolrDocHelper
5
- include OM::XML::Document
5
+ include ::OM::XML::Document
6
6
 
7
7
  set_terminology do |t|
8
8
  t.root(:path => 'workflow')
@@ -15,7 +15,6 @@ module Workflow
15
15
  t.elapsed(:path=>{:attribute=>"elapsed"})
16
16
  t.lifecycle(:path=>{:attribute=>"lifecycle"})
17
17
  t.attempts(:path=>{:attribute=>"attempts"}, :index_as => [:not_searchable])
18
- t.version(:path=>{:attribute=>"version"})
19
18
  }
20
19
  end
21
20
  @@definitions={}
@@ -31,28 +30,27 @@ module Workflow
31
30
  def priority
32
31
  processes.map {|proc| proc.priority.to_i }.detect(0) {|p| p > 0}
33
32
  end
34
-
35
- # @return [Boolean] if any process node does not have version, returns true, false otherwise (all processes have version)
33
+
36
34
  def active?
37
- ng_xml.at_xpath("/workflow/process[not(@version)]") ? true : false
35
+ processes.any? { |proc| !proc.version }
38
36
  end
39
37
 
40
38
  def definition
41
39
  @definition ||= begin
42
- if @@definitions.has_key? workflowId.first
43
- @@definitions[workflowId.first]
40
+ if @@definitions.has_key? self.workflowId.first
41
+ @@definitions[self.workflowId.first]
44
42
  else
45
- wfo = Dor::WorkflowObject.find_by_name(workflowId.first)
43
+ wfo = Dor::WorkflowObject.find_by_name(self.workflowId.first)
46
44
  wf_def=wfo ? wfo.definition : nil
47
- @@definitions[workflowId.first] = wf_def
45
+ @@definitions[self.workflowId.first] = wf_def
48
46
  wf_def
49
47
  end
50
48
  end
51
49
  end
52
50
 
53
- def graph(parent = nil, dir = nil)
54
- wf_definition = definition
55
- result = wf_definition ? Workflow::Graph.from_processes(wf_definition.repo, wf_definition.name, processes, parent) : nil
51
+ def graph(parent=nil, dir=nil)
52
+ wf_definition = self.definition
53
+ result = wf_definition ? Workflow::Graph.from_processes(wf_definition.repo, wf_definition.name, self.processes, parent) : nil
56
54
  unless result.nil?
57
55
  result['rankdir'] = dir || 'TB'
58
56
  end
@@ -60,7 +58,7 @@ module Workflow
60
58
  end
61
59
 
62
60
  def [](value)
63
- processes.find { |p| p.name == value }
61
+ self.processes.find { |p| p.name == value }
64
62
  end
65
63
 
66
64
  def processes
@@ -68,16 +66,15 @@ module Workflow
68
66
  if ng_xml.search("/workflow/process").length == 0
69
67
  return []
70
68
  end
71
- @processes ||=
72
- if definition
73
- definition.processes.collect do |process|
69
+ @processes ||= if self.definition
70
+ self.definition.processes.collect do |process|
74
71
  node = ng_xml.at("/workflow/process[@name = '#{process.name}']")
75
72
  process.update!(node,self) unless node.nil?
76
73
  process
77
74
  end
78
75
  else
79
- find_by_terms(:workflow, :process).collect do |x|
80
- pnode = Dor::Workflow::Process.new(repository, workflowId, {})
76
+ self.find_by_terms(:workflow, :process).collect do |x|
77
+ pnode = Dor::Workflow::Process.new(self.repository, self.workflowId, {})
81
78
  pnode.update!(x,self)
82
79
  pnode
83
80
  end.sort_by(&:datetime)
@@ -85,12 +82,12 @@ module Workflow
85
82
  end
86
83
 
87
84
  def workflow_should_show_completed? processes
88
- processes.all?{|p| ['skipped', 'completed', '', nil].include?(p.status)}
85
+ return processes.all?{|p| ['skipped', 'completed', '', nil].include?(p.status)}
89
86
  end
90
87
 
91
- def to_solr(solr_doc = Hash.new, *args)
92
- wf_name = workflowId.first
93
- repo = repository.first
88
+ def to_solr(solr_doc=Hash.new, *args)
89
+ wf_name = self.workflowId.first
90
+ repo = self.repository.first
94
91
  add_solr_value(solr_doc, 'wf', wf_name, :string, [:facetable])
95
92
  add_solr_value(solr_doc, 'wf_wps', wf_name, :string, [:facetable])
96
93
  add_solr_value(solr_doc, 'wf_wsp', wf_name, :string, [:facetable])
@@ -101,20 +98,20 @@ module Workflow
101
98
  processes.each do |process|
102
99
  if process.status.present?
103
100
  #add a record of the robot having operated on this item, so we can track robot activity
104
- if process.date_time && process.status && (process.status == 'completed' || process.status == 'error')
101
+ if process.date_time and process.status and (process.status == 'completed' || process.status == 'error')
105
102
  add_solr_value(solr_doc, "wf_#{wf_name}_#{process.name}", process.date_time+'Z', :date)
106
103
  end
107
104
  add_solr_value(solr_doc, 'wf_error', "#{wf_name}:#{process.name}:#{process.error_message}", :string, [:facetable,:displayable]) if process.error_message #index the error message without the druid so we hopefully get some overlap
108
105
  add_solr_value(solr_doc, 'wf_wsp', "#{wf_name}:#{process.status}", :string, [:facetable])
109
106
  add_solr_value(solr_doc, 'wf_wsp', "#{wf_name}:#{process.status}:#{process.name}", :string, [:facetable])
110
- add_solr_value(solr_doc, 'wf_wps', "#{wf_name}:#{process.name}", :string, [:facetable])
111
- add_solr_value(solr_doc, 'wf_wps', "#{wf_name}:#{process.name}:#{process.status}", :string, [:facetable])
107
+ add_solr_value(solr_doc, 'wf_wps', "#{wf_name}:#{process.name}", :string, [:facetable, :symbol])
108
+ add_solr_value(solr_doc, 'wf_wps', "#{wf_name}:#{process.name}:#{process.status}", :string, [:facetable, :symbol])
112
109
  add_solr_value(solr_doc, 'wf_swp', "#{process.status}", :string, [:facetable])
113
110
  add_solr_value(solr_doc, 'wf_swp', "#{process.status}:#{wf_name}", :string, [:facetable])
114
111
  add_solr_value(solr_doc, 'wf_swp', "#{process.status}:#{wf_name}:#{process.name}", :string, [:facetable])
115
112
  if process.state != process.status
116
113
  add_solr_value(solr_doc, 'wf_wsp', "#{wf_name}:#{process.state}:#{process.name}", :string, [:facetable])
117
- add_solr_value(solr_doc, 'wf_wps', "#{wf_name}:#{process.name}:#{process.state}", :string, [:facetable])
114
+ add_solr_value(solr_doc, 'wf_wps', "#{wf_name}:#{process.name}:#{process.state}", :string, [:facetable, :symbol])
118
115
  add_solr_value(solr_doc, 'wf_swp', "#{process.state}", :string, [:facetable])
119
116
  add_solr_value(solr_doc, 'wf_swp', "#{process.state}:#{wf_name}", :string, [:facetable])
120
117
  add_solr_value(solr_doc, 'wf_swp', "#{process.state}:#{wf_name}:#{process.name}", :string, [:facetable])
@@ -122,16 +119,17 @@ module Workflow
122
119
  end
123
120
  end
124
121
 
125
- solr_doc['wf_wps_facet'].uniq! if solr_doc['wf_wps_facet']
126
- solr_doc['wf_wsp_facet'].uniq! if solr_doc['wf_wsp_facet']
127
- solr_doc['wf_swp_facet'].uniq! if solr_doc['wf_swp_facet']
122
+ solr_doc[Solrizer.solr_name('wf_wps', :symbol)].uniq! if solr_doc[Solrizer.solr_name('wf_wps', :symbol)]
123
+ solr_doc[Solrizer.solr_name('wf_wps', :facetable)].uniq! if solr_doc[Solrizer.solr_name('wf_wps', :facetable)]
124
+ solr_doc[Solrizer.solr_name('wf_wsp', :facetable)].uniq! if solr_doc[Solrizer.solr_name('wf_wsp', :facetable)]
125
+ solr_doc[Solrizer.solr_name('wf_swp', :facetable)].uniq! if solr_doc[Solrizer.solr_name('wf_swp', :facetable)]
128
126
  solr_doc['workflow_status'].uniq! if solr_doc['workflow_status']
129
127
 
130
128
  solr_doc
131
129
  end
132
130
 
133
131
  def inspect
134
- "#<#{self.class.name}:#{object_id}>"
132
+ "#<#{self.class.name}:#{self.object_id}>"
135
133
  end
136
134
  end
137
135
  end
@@ -3,16 +3,16 @@ require 'graphviz'
3
3
  module Dor
4
4
  module Workflow
5
5
  class Graph
6
-
6
+
7
7
  FILL_COLORS = { 'waiting' => "white", 'ready' => "white", 'error' => "#8B0000", 'blocked' => "white", 'completed' => "darkgreen", 'unknown' => "#CFCFCF" }
8
8
  TEXT_COLORS = { 'waiting' => "black", 'ready' => "black", 'error' => "white", 'blocked' => "#8B0000", 'completed' => "white", 'unknown' => "black" }
9
9
  PATTERNS = { 'waiting' => "diagonals", 'ready' => "filled", 'error' => "filled", 'blocked' => "diagonals", 'completed' => "filled", 'unknown' => "filled" }
10
10
  RESERVED_KEYS = ['repository','name']
11
11
 
12
12
  attr_reader :repo, :name, :processes, :graph, :root
13
-
13
+
14
14
  def self.from_config(name, config, parent = nil)
15
- wf = new(config['repository'], name, parent)
15
+ wf = self.new(config['repository'], name, parent)
16
16
  config.keys.each { |p| wf.add_process(p.to_s) unless RESERVED_KEYS.include?(p) }
17
17
  config.keys.each { |p|
18
18
  if wf.processes[p]
@@ -27,12 +27,12 @@ class Graph
27
27
  end
28
28
  }
29
29
  wf.finish
30
- wf
30
+ return wf
31
31
  end
32
-
32
+
33
33
  def self.from_processes(repo, name, processes, parent = nil)
34
- wf = new(repo, name, parent)
35
- processes.each { |p|
34
+ wf = self.new(repo, name, parent)
35
+ processes.each { |p|
36
36
  wf.add_process(p.name).status = p.state || 'unknown'
37
37
  }
38
38
  processes.each { |p|
@@ -46,15 +46,15 @@ class Graph
46
46
  }
47
47
  }
48
48
  wf.finish
49
- wf
49
+ return wf
50
50
  end
51
-
51
+
52
52
  def initialize(repo, name, parent = nil)
53
53
  @repo = repo
54
54
  @name = name
55
55
  if parent.nil?
56
56
  @graph = GraphViz.new(qname)
57
- @root = add_nodes(name)
57
+ @root = self.add_nodes(name)
58
58
  else
59
59
  @graph = parent.subgraph(qname)
60
60
  @root = parent.add_nodes(name)
@@ -63,34 +63,34 @@ class Graph
63
63
  @root.shape = 'plaintext'
64
64
  @processes = {}
65
65
  end
66
-
66
+
67
67
  def qname
68
68
  [@repo,@name].join(':')
69
69
  end
70
-
70
+
71
71
  def add_process(name, external = false)
72
72
  pqname = name.split(/:/).length == 3 ? name : [qname,name].join(':')
73
73
  p = Process.new(self, pqname, name)
74
74
  @processes[name] = p
75
- p
75
+ return p
76
76
  end
77
-
77
+
78
78
  def finish
79
79
  @processes.values.each do |process|
80
80
  process.node.fontname = 'Helvetica'
81
- if process.id =~ %r{^#{qname}} && process.prerequisites.length == 0
81
+ if process.id =~ %r{^#{qname}} and process.prerequisites.length == 0
82
82
  (@root << process.node)[:arrowhead => 'none', :arrowtail => 'none', :dir => 'both', :style => 'invisible']
83
83
  end
84
84
  end
85
85
 
86
86
  @root.fontname = 'Helvetica'
87
- self
87
+ return self
88
88
  end
89
-
89
+
90
90
  def inspect
91
- "#{to_s[0..-2]} #{repo}:#{name} (#{processes.keys.join(', ')})>"
91
+ "#{self.to_s[0..-2]} #{repo}:#{name} (#{processes.keys.join(', ')})>"
92
92
  end
93
-
93
+
94
94
  def method_missing(sym,*args)
95
95
  if @graph.respond_to?(sym)
96
96
  @graph.send(sym,*args)
@@ -98,11 +98,11 @@ class Graph
98
98
  super
99
99
  end
100
100
  end
101
-
101
+
102
102
  class Process
103
-
103
+
104
104
  attr_reader :name, :status, :node, :prerequisites
105
-
105
+
106
106
  def initialize(graph, id, name)
107
107
  @name = name
108
108
  @graph = graph
@@ -110,13 +110,13 @@ class Graph
110
110
  @node.shape = 'box'
111
111
  @node.label = name
112
112
  @prerequisites = []
113
- set_status('unknown')
113
+ self.set_status('unknown')
114
114
  end
115
-
115
+
116
116
  def id
117
117
  @node.id
118
118
  end
119
-
119
+
120
120
  def status=(s)
121
121
  @status = s
122
122
  if s == 'external'
@@ -129,14 +129,14 @@ class Graph
129
129
  @node.style = PATTERNS[s]
130
130
  end
131
131
  end
132
-
132
+
133
133
  def set_status(s)
134
134
  self.status = s
135
- self
135
+ return self
136
136
  end
137
-
137
+
138
138
  def depends_on(*processes)
139
- wf1 = id.split(/:/)[0..1].join(':')
139
+ wf1 = self.id.split(/:/)[0..1].join(':')
140
140
  processes.each { |process|
141
141
  wf2 = process.id.split(/:/)[0..1].join(':')
142
142
  edge = (process.node << @node)
@@ -146,21 +146,21 @@ class Graph
146
146
  if (wf1 != wf2)
147
147
  edge.style = 'dashed'
148
148
  end
149
- prerequisites << process
149
+ self.prerequisites << process
150
150
  }
151
- self
151
+ return self
152
152
  end
153
-
153
+
154
154
  def same_as(process)
155
- @node = process.node
155
+ @node = process.node
156
156
  end
157
-
157
+
158
158
  def all_prerequisites
159
159
  prerequisites.collect { |p| p.all_prerequisites + [p.name] }.flatten.uniq
160
160
  end
161
-
161
+
162
162
  end
163
163
 
164
164
  end
165
165
  end
166
- end
166
+ end
@@ -23,8 +23,8 @@ module Workflow
23
23
  'batch_limit' => node['batch-limit'] ? node['batch-limit'].to_i : nil,
24
24
  'error_limit' => node['error-limit'] ? node['error-limit'].to_i : nil,
25
25
  'prerequisite' => node.xpath('prereq').collect { |p|
26
- repo = (p['repository'].nil? || p['repository'] == @repo) ? nil : p['repository']
27
- wf = (p['workflow'].nil? || p['workflow'] == @workflow) ? nil : p['workflow']
26
+ repo = (p['repository'].nil? or p['repository'] == @repo) ? nil : p['repository']
27
+ wf = (p['workflow'].nil? or p['workflow'] == @workflow) ? nil : p['workflow']
28
28
  [repo,wf,p.text.to_s].compact.join(':')
29
29
  },
30
30
  'priority' => node['priority'] ? node['priority'].to_i : 0
@@ -43,22 +43,22 @@ module Workflow
43
43
  def note ; @attrs['note'] ; end
44
44
  def version ; @attrs['version'] ; end
45
45
  def priority ; @attrs['priority'] ; end
46
- def completed? ; status == 'completed' ; end
47
- def error? ; status == 'error' ; end
48
- def waiting? ; status == 'waiting' ; end
49
- def date_time ;@attrs['datetime'] ; end
46
+ def completed? ; self.status == 'completed' ; end
47
+ def error? ; self.status == 'error' ; end
48
+ def waiting? ; self.status == 'waiting' ; end
49
+ def date_time ;@attrs['datetime'] ; end
50
50
 
51
51
  def archived?
52
52
  return true if(@attrs['archived'] =~ /true$/i)
53
- false
53
+ return false
54
54
  end
55
55
 
56
56
  def ready?
57
- self.waiting? && (!prerequisite.nil?) && prerequisite.all? { |pr| (prq = owner[pr]) && prq.completed? }
57
+ self.waiting? and (not self.prerequisite.nil?) and self.prerequisite.all? { |pr| (prq = self.owner[pr]) && prq.completed? }
58
58
  end
59
59
 
60
60
  def blocked?
61
- self.waiting? && (!prerequisite.nil?) && prerequisite.any? { |pr| (prq = owner[pr]) && (prq.error? || prq.blocked?) }
61
+ self.waiting? and (not self.prerequisite.nil?) and self.prerequisite.any? { |pr| (prq = self.owner[pr]) && (prq.error? or prq.blocked?) }
62
62
  end
63
63
 
64
64
  def state
@@ -83,7 +83,7 @@ module Workflow
83
83
  @attrs['elapsed'].nil? ? nil : @attrs['elapsed'].to_f
84
84
  end
85
85
 
86
- def update!(info, new_owner = nil)
86
+ def update!(info, new_owner=nil)
87
87
  @owner = new_owner unless new_owner.nil?
88
88
  if info.is_a? Nokogiri::XML::Node
89
89
  info = Hash[info.attributes.collect { |k,v| [k,v.value] }]
@@ -92,8 +92,8 @@ module Workflow
92
92
  end
93
93
 
94
94
  def to_hash
95
- @attrs.reject { |k,v| v.nil? || v == 0 || (v.respond_to?(:empty?) && v.empty?) }
95
+ @attrs.reject { |k,v| v.nil? or v == 0 or (v.respond_to?(:empty?) and v.empty?) }
96
96
  end
97
97
  end
98
98
  end
99
- end
99
+ end
data/lib/tasks/dor.rake CHANGED
@@ -24,7 +24,7 @@ task :bump_version, [:level] do |t, args|
24
24
  version = version.join('.')
25
25
  file_content.sub!(/^(\s*VERSION = )['"](.+)['"]/,"#{declaration}'#{version}'")
26
26
  File.open(version_file,'w') { |f| f.write(file_content) }
27
-
27
+
28
28
  readme_file = File.expand_path('../../../README.rdoc',__FILE__)
29
29
  file_content = File.read(readme_file)
30
30
  lines = file_content.lines.to_a
data/lib/tasks/rdoc.rake CHANGED
@@ -10,11 +10,11 @@ namespace :doc do
10
10
  require 'yard/rake/yardoc_task'
11
11
 
12
12
  YARD::Rake::YardocTask.new(:generate) do |yt|
13
- yt.files = Dir.glob(File.join(project_root, 'lib', '*.rb')) +
13
+ yt.files = Dir.glob(File.join(project_root, 'lib', '*.rb')) +
14
14
  Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) +
15
15
  [ File.join(project_root, 'README.rdoc') ] +
16
16
  [ File.join(project_root, 'LICENSE') ]
17
-
17
+
18
18
  yt.options = ['--output-dir', doc_destination, '--readme', 'README.rdoc']
19
19
  end
20
20
  rescue LoadError
@@ -29,4 +29,4 @@ namespace :doc do
29
29
  rm_r doc_destination if File.exists?(doc_destination)
30
30
  end
31
31
 
32
- end
32
+ end