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 +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:
|