lyber-core 1.3.0 → 3.2.2

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Y2NhYmQxMTVlZWIwZWY3MjM1YmI5YjFmYWQ2YzljMzVjYzU4NGU4Mg==
5
+ data.tar.gz: !binary |-
6
+ YzI0OGFmZDIwMmVlNTNjNjM4MmY5ZWZhM2FlYWViMjg4ZDUwNGIwNA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NjYzYzYxYWQxZDE2YjA0Y2I4MWExODdlZTIwNDdhOTJjYjZlZGYzZGUxNTdh
10
+ NGZlZDVkMmRjY2I5NWUwMDkyZTJiMzJlMDIxNjZjMDhhNGE4NDJkY2UxMTM3
11
+ ZjI4MzViODRkMzRlOWI5MDI3YjFlOWMyMmY5MDNiYTNmNjljODM=
12
+ data.tar.gz: !binary |-
13
+ NDAwMGY4ZDBmMjYyYmU1YjI5ZjU2NWFkYjRkMTg1ZTgyZTUyMDAxZTZlZTkz
14
+ OWVlY2NkOGE3OGY3YmMzZjZjYzgwNTZjNDc1OGY4NmUzODBhOGEwMzIzODM4
15
+ NGJhZDcyOTZhZjlhMGVmNjZlOTE4YWJiNjg5ZGMzZjBkODI1MTg=
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Stanford University Library
1
+ Copyright (c) 2014 Stanford University Library
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md ADDED
@@ -0,0 +1,81 @@
1
+ # lyber_core
2
+
3
+ ## Robot Creation
4
+
5
+ Create a class that mixes in `LyberCore::Robot`
6
+
7
+ * In the intializer, call `super` with the repository, workflow name, step name
8
+ * Your class `#perform` method will perform the actual work, with `druid` passed in as the one and only argument
9
+
10
+ ```ruby
11
+ module Robots
12
+ module DorRepo
13
+ module Accession
14
+
15
+ class Shelve
16
+ include LyberCore::Robot
17
+
18
+ def initialize
19
+ super('dor', 'accessionWF', 'shelve')
20
+ end
21
+
22
+ def perform druid
23
+ obj = Dor::Item.find(druid)
24
+ obj.shelve
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ ```
33
+
34
+ ## Robot Environment Setup
35
+
36
+ * Create a `config/boot.rb` file to load the classpath, classes and configuration that your robot will need in order to run.
37
+ See the [boot.rb file from the Common-Accessioning robot suite](https://github.com/sul-dlss/common-accessioning/blob/master/config/boot.rb) as an example
38
+
39
+ * Add `require 'resque/tasks'` to your `Rakefile`
40
+
41
+ * Create an `environment` task within your `Rakefile` that requires your `config/boot.rb` file
42
+
43
+ #### Example Rakefile modifications
44
+ ```ruby
45
+ require 'resque/tasks'
46
+ ...
47
+ task :environment do
48
+ require_relative 'config/boot'
49
+ end
50
+ ```
51
+
52
+ ## Start the Robot
53
+
54
+ * Use rake to start your robot, specifying the Resque queue as the environment variable `QUEUE`
55
+
56
+ ```
57
+ $ QUEUE=accessionWF_shelve rake environment resque:work
58
+ ```
59
+
60
+ ## Enqueing a Job
61
+
62
+ ```ruby
63
+ require 'resque'
64
+ Resque.enqueue_to('accessionWF_shelve'.to_sym, Robot::DorRepo::Accession::Shelve, 'druid:aa123bb4567')
65
+ ```
66
+
67
+
68
+ ## Releases
69
+ * **3.0** Robot overhaul. Use `resque` for job management and `bluepill` for process management
70
+ * **2.1.1** Relax dor-services-gem version requirement
71
+ * **2.0** Moved what was left of DorService (namely get_objects_for_workstep()) to dor-services' Dor::WorkflowService. Removed IdentityMetadata and DublinCore XML models. Factored out all remaining global constants. Removed unnecessary dependencies.
72
+ * **1.3** Started to use Dor::Config for workspace configuration
73
+ * **1.0.0** Factored all Dor::* classes and object models out of lyber-core and into a separate dor-services gem. WARNING: MAY BREAK COMPATIBILITY WITH PREVIOUS DOR-ENABLED CODE.
74
+ * **0.9.8** Created branch for legacy work "0.9-legacy". Robots can now be configured with fully qualified workflows for prerequisites
75
+ eg <i>dor:googleScannedBookWF:register-object</i>
76
+ * **0.9.2** Workflow bug fixes. Last version that supports active-fedora 1.0.7
77
+ * We recommend that you **DO NOT USE** any version older than these
78
+
79
+ ## Copyright
80
+
81
+ Copyright (c) 2014 Stanford University Library. See LICENSE for details.
data/lib/lyber_core.rb CHANGED
@@ -1,17 +1,3 @@
1
- require 'lyber_core/config'
2
- require 'dlss_service'
3
- require 'dor-services'
4
- require 'lyber_core/connection'
5
1
  require 'lyber_core/destroyer'
6
2
  require 'lyber_core/log'
7
- require 'lyber_core/robots/robot'
8
- require 'lyber_core/robots/service_controller'
9
- require 'lyber_core/robots/workflow'
10
- require 'lyber_core/robots/workspace'
11
- require 'lyber_core/robots/work_queue'
12
- require 'lyber_core/robots/work_item'
13
- require 'lyber_core/exceptions/empty_queue'
14
- require 'lyber_core/exceptions/fatal_error'
15
- require 'lyber_core/exceptions/service_error'
16
- require 'lyber_core/exceptions/item_error'
17
-
3
+ require 'lyber_core/robot'
@@ -22,16 +22,9 @@ module LyberCore
22
22
 
23
23
  def get_druid_list
24
24
  begin
25
- druid_list = []
26
- url_string = "#{WORKFLOW_URI}/workflow_queue?repository=#{@repository}&workflow=#{@workflow}&completed=#{@registration_robot}"
27
- LyberCore::Log.info("Fetching druids from #{url_string}")
28
- doc = Nokogiri::XML(open(url_string))
29
- doc.xpath("//objects/object/@id").each do |id|
30
- druid_list << id.to_s
31
- end
32
- return druid_list
25
+ Dor::WorkflowService.get_objects_for_workstep @registration_robot, '', @repository, @workflow
33
26
  rescue Exception => e
34
- raise e, "Couldn't fetch druid list from #{url_string}"
27
+ raise e, "Couldn't fetch druid list"
35
28
  end
36
29
  end
37
30
 
@@ -1,15 +1,15 @@
1
1
 
2
2
  module LyberCore
3
-
3
+
4
4
  class LyberCore::Log
5
5
  require 'logger'
6
-
6
+
7
7
  # Default values
8
- DEFAULT_LOGFILE = "/tmp/lybercore_log.log"
8
+ DEFAULT_LOGFILE = "/tmp/lybercore_log.log" # TODO change to STDOUT?
9
9
  DEFAULT_LOG_LEVEL = Logger::INFO
10
- DEFAULT_FORMATTER = proc{|s,t,p,m|"%5s [%s] (%s) %s :: %s\n" % [s,
10
+ DEFAULT_FORMATTER = proc{|s,t,p,m|"%5s [%s] (%s) %s :: %s\n" % [s,
11
11
  t.strftime("%Y-%m-%d %H:%M:%S"), $$, p, m]}
12
-
12
+
13
13
  # Initial state
14
14
  @@logfile = DEFAULT_LOGFILE
15
15
  @@log ||= Logger.new(@@logfile)
@@ -17,25 +17,25 @@ module LyberCore
17
17
  # $stderr.reopen(@@logfile)
18
18
  @@log.level = DEFAULT_LOG_LEVEL
19
19
  @@log.formatter = DEFAULT_FORMATTER
20
-
20
+
21
21
  # Restore LyberCore::Log to its default state
22
22
  def Log.restore_defaults
23
23
  @@log.level = DEFAULT_LOG_LEVEL
24
24
  Log.set_logfile(DEFAULT_LOGFILE)
25
25
  @@log.formatter = DEFAULT_FORMATTER
26
26
  end
27
-
27
+
28
28
  # The current location of the logfile
29
29
  def Log.logfile
30
30
  return @@logfile
31
31
  end
32
-
33
32
 
34
-
35
- # Accepts a filename as an argument, and checks to see whether that file can be
33
+
34
+
35
+ # Accepts a filename as an argument, and checks to see whether that file can be
36
36
  # opened for writing. If it can be opened, it closes the existing Logger object
37
37
  # and re-opens it with the new logfile location. It raises an exception if it
38
- # cannot write to the specified logfile.
38
+ # cannot write to the specified logfile.
39
39
  def Log.set_logfile(new_logfile)
40
40
  begin
41
41
  current_log_level = @@log.level
@@ -47,12 +47,12 @@ module LyberCore
47
47
  rescue Exception => e
48
48
  raise e, "Couldn't initialize logfile #{new_logfile} because\n#{e.message}: #{e.backtrace.join(%{\n})}}"
49
49
  end
50
-
50
+
51
51
  end
52
-
53
- # Set the log level.
54
- # See http://ruby-doc.org/core/classes/Logger.html for more info.
55
- # Possible values are:
52
+
53
+ # Set the log level.
54
+ # See http://ruby-doc.org/core/classes/Logger.html for more info.
55
+ # Possible values are:
56
56
  # Logger::FATAL (4): an unhandleable error that results in a program crash
57
57
  # Logger::ERROR (3): a handleable error condition
58
58
  # Logger::WARN (2): a warning
@@ -72,47 +72,43 @@ module LyberCore
72
72
  raise e, "Couldn't set log level because\n#{e.message}: #{e.backtrace.join(%{\n})}"
73
73
  end
74
74
  end
75
-
75
+
76
76
  # Return the current log level
77
77
  def Log.level
78
78
  @@log.level
79
79
  end
80
-
80
+
81
81
  def Log.fatal(msg)
82
82
  @@log.add(Logger::FATAL) { msg }
83
83
  end
84
-
84
+
85
85
  def Log.error(msg)
86
86
  @@log.add(Logger::ERROR) { msg }
87
87
  end
88
-
88
+
89
89
  def Log.warn(msg)
90
90
  @@log.add(Logger::WARN) { msg }
91
91
  end
92
-
92
+
93
93
  def Log.info(msg)
94
94
  @@log.add(Logger::INFO) { msg }
95
95
  end
96
-
96
+
97
97
  def Log.debug(msg)
98
98
  @@log.add(Logger::DEBUG) { msg }
99
99
  end
100
100
 
101
101
  def Log.exception(e)
102
102
  msg = Log.exception_message(e)
103
- if e.is_a?(LyberCore::Exceptions::FatalError)
104
- Log.fatal(msg)
105
- else
106
- Log.error(msg)
107
- end
103
+ Log.error(msg)
108
104
  end
109
105
 
110
106
  def Log.exception_message(e)
111
107
  msg = e.inspect.split($/).join('; ') + "\n"
112
108
  msg << e.backtrace.join("\n") if(e.backtrace)
113
109
  end
114
-
110
+
115
111
  end
116
-
117
-
112
+
113
+
118
114
  end
@@ -0,0 +1,67 @@
1
+ require 'benchmark'
2
+
3
+ module LyberCore
4
+ module Robot
5
+
6
+ # Add the ClassMethods to the class this is being mixed into
7
+ def self.included base
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+
13
+ # Called by job-manager on derived-class
14
+ # Instantiate the Robot and call #work with the passed in druid
15
+ def perform(druid)
16
+ # Get the name of the derived-class that was invoked
17
+ klazz = self.name.split('::').inject(Object) {|o,c| o.const_get c}
18
+ bot = klazz.new
19
+ bot.work druid
20
+ end
21
+ end
22
+
23
+ attr_accessor :check_queued_status
24
+
25
+ def initialize(repo, workflow_name, step_name, opts = {})
26
+ @repo = repo
27
+ @workflow_name = workflow_name
28
+ @step_name = step_name
29
+ @check_queued_status = opts.fetch(:check_queued_status, true)
30
+ # create option to check return value of process_item
31
+ # @check_if_processed = opts.fetch(:check_if_processed, false)
32
+ end
33
+
34
+ # Sets up logging, timing and error handling of the job
35
+ # Calls the #perform method, then sets workflow to 'completed' or 'error' depending on success
36
+ def work(druid)
37
+ LyberCore::Log.set_logfile($stdout) # let process manager(bluepill) handle logging
38
+ LyberCore::Log.info "Processing #{druid}"
39
+ return if @check_queued_status && !item_queued?(druid)
40
+
41
+ elapsed = Benchmark.realtime do
42
+ self.perform druid # implemented in the mixed-in robot class
43
+ end
44
+ # TODO check return value of #process_item if @check_if_processed == true ( have a self.processed? method that gets set in #process_item)
45
+ # if true returned, update step to completed
46
+ # otherwise, the robot did something like set the step to 'waiting' with a note
47
+
48
+ Dor::WorkflowService.update_workflow_status @repo, druid, @workflow_name, @step_name, 'completed', :elapsed => elapsed, :note => Socket.gethostname
49
+ LyberCore::Log.info "Finished #{druid} in #{elapsed}s"
50
+ rescue => e
51
+ LyberCore::Log.error e.message + "\n" + e.backtrace.join("\n")
52
+ Dor::WorkflowService.update_workflow_error_status @repo, druid , @workflow_name, @step_name, e.message, :error_text => Socket.gethostname
53
+ end
54
+
55
+ private
56
+ def item_queued?(druid)
57
+ status = Dor::WorkflowService.get_workflow_status(@repo, druid, @workflow_name, @step_name)
58
+ if(status =~ /queued/i)
59
+ return true
60
+ else
61
+ LyberCore::Log.warn "Item is not queued, but has status of '#{status}'. Will skip processing"
62
+ return false
63
+ end
64
+ end
65
+
66
+ end
67
+ end
metadata CHANGED
@@ -1,15 +1,9 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: lyber-core
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 1
8
- - 3
9
- - 0
10
- version: 1.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.2.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Alpana Pande
14
8
  - Bess Sadler
15
9
  - Chris Fitzpatrick
@@ -20,398 +14,165 @@ authors:
20
14
  autorequire:
21
15
  bindir: bin
22
16
  cert_chain: []
23
-
24
- date: 2011-07-21 00:00:00 -07:00
25
- default_executable:
26
- dependencies:
27
- - !ruby/object:Gem::Dependency
28
- version_requirements: &id001 !ruby/object:Gem::Requirement
29
- none: false
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- hash: 3
34
- segments:
35
- - 0
36
- version: "0"
37
- prerelease: false
38
- type: :runtime
39
- requirement: *id001
40
- name: actionpack
41
- - !ruby/object:Gem::Dependency
42
- version_requirements: &id002 !ruby/object:Gem::Requirement
43
- none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- hash: 19
48
- segments:
49
- - 1
50
- - 2
51
- - 6
52
- version: 1.2.6
53
- prerelease: false
17
+ date: 2014-05-08 00:00:00.000000000 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: dor-workflow-service
21
+ requirement: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ~>
24
+ - !ruby/object:Gem::Version
25
+ version: '1.6'
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 1.6.3
54
29
  type: :runtime
55
- requirement: *id002
56
- name: active-fedora
57
- - !ruby/object:Gem::Dependency
58
- version_requirements: &id003 !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
67
30
  prerelease: false
68
- type: :runtime
69
- requirement: *id003
70
- name: daemons
71
- - !ruby/object:Gem::Dependency
72
- version_requirements: &id004 !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 19
78
- segments:
79
- - 0
80
- - 3
81
- - 0
82
- version: 0.3.0
83
- prerelease: false
84
- type: :runtime
85
- requirement: *id004
86
- name: dor-services
87
- - !ruby/object:Gem::Dependency
88
- version_requirements: &id005 !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- hash: 27
94
- segments:
95
- - 0
96
- - 1
97
- - 0
98
- version: 0.1.0
99
- prerelease: false
100
- type: :runtime
101
- requirement: *id005
102
- name: bagit
103
- - !ruby/object:Gem::Dependency
104
- version_requirements: &id006 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - "="
108
- - !ruby/object:Gem::Version
109
- hash: 113
110
- segments:
111
- - 1
112
- - 4
113
- - 3
114
- - 1
115
- version: 1.4.3.1
116
- prerelease: false
117
- type: :runtime
118
- requirement: *id006
119
- name: nokogiri
120
- - !ruby/object:Gem::Dependency
121
- version_requirements: &id007 !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 15
127
- segments:
128
- - 0
129
- - 0
130
- - 8
131
- version: 0.0.8
132
- prerelease: false
133
- type: :runtime
134
- requirement: *id007
135
- name: solr-ruby
136
- - !ruby/object:Gem::Dependency
137
- version_requirements: &id008 !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- hash: 17
143
- segments:
144
- - 0
145
- - 3
146
- - 1
147
- version: 0.3.1
148
- prerelease: false
149
- type: :runtime
150
- requirement: *id008
151
- name: solrizer
152
- - !ruby/object:Gem::Dependency
153
- version_requirements: &id009 !ruby/object:Gem::Requirement
154
- none: false
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- hash: 3
159
- segments:
160
- - 0
161
- version: "0"
162
- prerelease: false
163
- type: :runtime
164
- requirement: *id009
165
- name: stomp
166
- - !ruby/object:Gem::Dependency
167
- version_requirements: &id010 !ruby/object:Gem::Requirement
168
- none: false
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- hash: 31
173
- segments:
174
- - 1
175
- - 2
176
- - 0
177
- version: 1.2.0
178
- prerelease: false
179
- type: :runtime
180
- requirement: *id010
181
- name: systemu
182
- - !ruby/object:Gem::Dependency
183
- version_requirements: &id011 !ruby/object:Gem::Requirement
184
- none: false
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- hash: 3
189
- segments:
190
- - 0
191
- version: "0"
192
- prerelease: false
193
- type: :runtime
194
- requirement: *id011
195
- name: validatable
196
- - !ruby/object:Gem::Dependency
197
- version_requirements: &id012 !ruby/object:Gem::Requirement
198
- none: false
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- hash: 3
203
- segments:
204
- - 0
205
- version: "0"
206
- prerelease: false
207
- type: :development
208
- requirement: *id012
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '1.6'
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 1.6.3
39
+ - !ruby/object:Gem::Dependency
209
40
  name: fakeweb
210
- - !ruby/object:Gem::Dependency
211
- version_requirements: &id013 !ruby/object:Gem::Requirement
212
- none: false
213
- requirements:
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- hash: 3
217
- segments:
218
- - 0
219
- version: "0"
220
- prerelease: false
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
221
46
  type: :development
222
- requirement: *id013
223
- name: haml
224
- - !ruby/object:Gem::Dependency
225
- version_requirements: &id014 !ruby/object:Gem::Requirement
226
- none: false
227
- requirements:
228
- - - ">="
229
- - !ruby/object:Gem::Version
230
- hash: 25
231
- segments:
232
- - 0
233
- - 1
234
- - 1
235
- version: 0.1.1
236
47
  prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: lyberteam-gems-devel
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
237
60
  type: :development
238
- requirement: *id014
239
- name: lyberteam-devel
240
- - !ruby/object:Gem::Dependency
241
- version_requirements: &id015 !ruby/object:Gem::Requirement
242
- none: false
243
- requirements:
244
- - - ">="
245
- - !ruby/object:Gem::Version
246
- hash: 49
247
- segments:
248
- - 0
249
- - 8
250
- - 7
251
- version: 0.8.7
252
61
  prerelease: false
253
- type: :development
254
- requirement: *id015
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ - !ruby/object:Gem::Dependency
255
68
  name: rake
256
- - !ruby/object:Gem::Dependency
257
- version_requirements: &id016 !ruby/object:Gem::Requirement
258
- none: false
259
- requirements:
260
- - - ">="
261
- - !ruby/object:Gem::Version
262
- hash: 3
263
- segments:
264
- - 0
265
- version: "0"
266
- prerelease: false
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: 0.8.7
267
74
  type: :development
268
- requirement: *id016
269
- name: rcov
270
- - !ruby/object:Gem::Dependency
271
- version_requirements: &id017 !ruby/object:Gem::Requirement
272
- none: false
273
- requirements:
274
- - - ">="
275
- - !ruby/object:Gem::Version
276
- hash: 3
277
- segments:
278
- - 0
279
- version: "0"
280
75
  prerelease: false
281
- type: :development
282
- requirement: *id017
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: 0.8.7
81
+ - !ruby/object:Gem::Dependency
283
82
  name: rdoc
284
- - !ruby/object:Gem::Dependency
285
- version_requirements: &id018 !ruby/object:Gem::Requirement
286
- none: false
287
- requirements:
288
- - - <
289
- - !ruby/object:Gem::Version
290
- hash: 3
291
- segments:
292
- - 2
293
- - 0
294
- version: "2.0"
295
- prerelease: false
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
296
88
  type: :development
297
- requirement: *id018
298
- name: rspec
299
- - !ruby/object:Gem::Dependency
300
- version_requirements: &id019 !ruby/object:Gem::Requirement
301
- none: false
302
- requirements:
303
- - - ">="
304
- - !ruby/object:Gem::Version
305
- hash: 3
306
- segments:
307
- - 0
308
- version: "0"
309
89
  prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rspec
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
310
102
  type: :development
311
- requirement: *id019
312
- name: ruby-debug
313
- - !ruby/object:Gem::Dependency
314
- version_requirements: &id020 !ruby/object:Gem::Requirement
315
- none: false
316
- requirements:
317
- - - ">="
318
- - !ruby/object:Gem::Version
319
- hash: 3
320
- segments:
321
- - 0
322
- version: "0"
323
103
  prerelease: false
324
- type: :development
325
- requirement: *id020
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
326
110
  name: stompserver
327
- - !ruby/object:Gem::Dependency
328
- version_requirements: &id021 !ruby/object:Gem::Requirement
329
- none: false
330
- requirements:
331
- - - ">="
332
- - !ruby/object:Gem::Version
333
- hash: 3
334
- segments:
335
- - 0
336
- version: "0"
337
- prerelease: false
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
338
116
  type: :development
339
- requirement: *id021
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
340
124
  name: yard
341
- description: |-
342
- Contains classes to make http connections with a client-cert, use Jhove, and call Suri
343
- Also contains core classes to build robots
344
- email:
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ description: ! 'Contains classes to make http connections with a client-cert, use
138
+ Jhove, and call Suri
139
+
140
+ Also contains core classes to build robots'
141
+ email:
345
142
  - wmene@stanford.edu
346
143
  executables: []
347
-
348
144
  extensions: []
349
-
350
145
  extra_rdoc_files: []
351
-
352
- files:
353
- - lib/dlss_service.rb
354
- - lib/dor_service.rb
355
- - lib/lyber_core/config.rb
356
- - lib/lyber_core/connection.rb
146
+ files:
147
+ - LICENSE
148
+ - README.md
149
+ - lib/lyber_core.rb
357
150
  - lib/lyber_core/destroyer.rb
358
- - lib/lyber_core/exceptions/chained_error.rb
359
- - lib/lyber_core/exceptions/empty_queue.rb
360
- - lib/lyber_core/exceptions/fatal_error.rb
361
- - lib/lyber_core/exceptions/item_error.rb
362
- - lib/lyber_core/exceptions/service_error.rb
363
151
  - lib/lyber_core/log.rb
364
- - lib/lyber_core/robots/robot.rb
365
- - lib/lyber_core/robots/service_controller.rb
366
- - lib/lyber_core/robots/work_item.rb
367
- - lib/lyber_core/robots/work_queue.rb
368
- - lib/lyber_core/robots/workflow.rb
369
- - lib/lyber_core/robots/workspace.rb
370
- - lib/lyber_core/utils/bagit_bag.rb
371
- - lib/lyber_core/utils/checksum_validate.rb
372
- - lib/lyber_core/utils/file_utilities.rb
373
- - lib/lyber_core/utils.rb
374
- - lib/lyber_core.rb
152
+ - lib/lyber_core/robot.rb
375
153
  - lib/tasks/rdoc.rake
376
- - lib/xml_models/identity_metadata/dublin_core.rb
377
- - lib/xml_models/identity_metadata/identity_metadata.rb
378
- - LICENSE
379
- - README.rdoc
380
- has_rdoc: true
381
- homepage: http://github.com/wmene/lyber-core
154
+ homepage: http://github.com/sul-dlss/lyber-core
382
155
  licenses: []
383
-
156
+ metadata: {}
384
157
  post_install_message:
385
158
  rdoc_options: []
386
-
387
- require_paths:
159
+ require_paths:
388
160
  - lib
389
- required_ruby_version: !ruby/object:Gem::Requirement
390
- none: false
391
- requirements:
392
- - - ">="
393
- - !ruby/object:Gem::Version
394
- hash: 3
395
- segments:
396
- - 0
397
- version: "0"
398
- required_rubygems_version: !ruby/object:Gem::Requirement
399
- none: false
400
- requirements:
401
- - - ">="
402
- - !ruby/object:Gem::Version
403
- hash: 23
404
- segments:
405
- - 1
406
- - 3
407
- - 6
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ! '>='
169
+ - !ruby/object:Gem::Version
408
170
  version: 1.3.6
409
171
  requirements: []
410
-
411
172
  rubyforge_project:
412
- rubygems_version: 1.5.2
173
+ rubygems_version: 2.2.2
413
174
  signing_key:
414
- specification_version: 3
175
+ specification_version: 4
415
176
  summary: Core services used by the SULAIR Digital Library
416
177
  test_files: []
417
-
178
+ has_rdoc: