lyber-core 1.3.0 → 3.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/LICENSE +1 -1
- data/README.md +81 -0
- data/lib/lyber_core.rb +1 -15
- data/lib/lyber_core/destroyer.rb +2 -9
- data/lib/lyber_core/log.rb +26 -30
- data/lib/lyber_core/robot.rb +67 -0
- metadata +131 -370
- data/README.rdoc +0 -76
- data/lib/dlss_service.rb +0 -81
- data/lib/dor_service.rb +0 -588
- data/lib/lyber_core/config.rb +0 -13
- data/lib/lyber_core/connection.rb +0 -130
- data/lib/lyber_core/exceptions/chained_error.rb +0 -21
- data/lib/lyber_core/exceptions/empty_queue.rb +0 -9
- data/lib/lyber_core/exceptions/fatal_error.rb +0 -10
- data/lib/lyber_core/exceptions/item_error.rb +0 -19
- data/lib/lyber_core/exceptions/service_error.rb +0 -10
- data/lib/lyber_core/robots/robot.rb +0 -333
- data/lib/lyber_core/robots/service_controller.rb +0 -174
- data/lib/lyber_core/robots/work_item.rb +0 -112
- data/lib/lyber_core/robots/work_queue.rb +0 -177
- data/lib/lyber_core/robots/workflow.rb +0 -104
- data/lib/lyber_core/robots/workspace.rb +0 -77
- data/lib/lyber_core/utils.rb +0 -4
- data/lib/lyber_core/utils/bagit_bag.rb +0 -100
- data/lib/lyber_core/utils/checksum_validate.rb +0 -65
- data/lib/lyber_core/utils/file_utilities.rb +0 -168
- data/lib/xml_models/identity_metadata/dublin_core.rb +0 -116
- data/lib/xml_models/identity_metadata/identity_metadata.rb +0 -264
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
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/
|
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'
|
data/lib/lyber_core/destroyer.rb
CHANGED
@@ -22,16 +22,9 @@ module LyberCore
|
|
22
22
|
|
23
23
|
def get_druid_list
|
24
24
|
begin
|
25
|
-
|
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
|
27
|
+
raise e, "Couldn't fetch druid list"
|
35
28
|
end
|
36
29
|
end
|
37
30
|
|
data/lib/lyber_core/log.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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
|
-
|
69
|
-
|
70
|
-
|
71
|
-
- !ruby/object:Gem::
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
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
|
-
|
254
|
-
|
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
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
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
|
-
|
282
|
-
|
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
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
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
|
-
|
325
|
-
|
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
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
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
|
-
|
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
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
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
|
-
|
353
|
-
-
|
354
|
-
- lib/
|
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/
|
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
|
-
|
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
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
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:
|
173
|
+
rubygems_version: 2.2.2
|
413
174
|
signing_key:
|
414
|
-
specification_version:
|
175
|
+
specification_version: 4
|
415
176
|
summary: Core services used by the SULAIR Digital Library
|
416
177
|
test_files: []
|
417
|
-
|
178
|
+
has_rdoc:
|