research_metadata_batch 0.1.0
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 +7 -0
- data/.gitignore +17 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +41 -0
- data/LICENSE.txt +21 -0
- data/README.md +106 -0
- data/lib/research_metadata_batch.rb +6 -0
- data/lib/research_metadata_batch/base.rb +134 -0
- data/lib/research_metadata_batch/custom.rb +47 -0
- data/lib/research_metadata_batch/dataset.rb +14 -0
- data/lib/research_metadata_batch/event.rb +14 -0
- data/lib/research_metadata_batch/external_organisation.rb +14 -0
- data/lib/research_metadata_batch/journal.rb +14 -0
- data/lib/research_metadata_batch/organisational_unit.rb +14 -0
- data/lib/research_metadata_batch/person.rb +14 -0
- data/lib/research_metadata_batch/project.rb +14 -0
- data/lib/research_metadata_batch/publisher.rb +14 -0
- data/lib/research_metadata_batch/research_metadata_batch.rb +9 -0
- data/lib/research_metadata_batch/research_output.rb +25 -0
- data/lib/research_metadata_batch/version.rb +4 -0
- data/research_metadata_batch.gemspec +19 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bc61ec93f5d5bffe445daa23c318a5ddd2a829b01a799a5d46866e9094f9d594
|
4
|
+
data.tar.gz: b0b0a8d00afb219911466efb16b3ec024a670af3e307a86426ed0c13de84e1fd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 412d324f9e61ed97b51f3b8a8c1fbb42d9f93f41dd12d98c4487922816cfee9d9387c7e06cc6a0041fc8ccf7096eb352ded2345e8208d6f70a7f8cf45a6ca063
|
7
|
+
data.tar.gz: 3235149ee8993d812b876165efa311017ea42ef80747c5c6730b0da3bc27c0208884fbabaf02676bd1da253756e25c1690bb00b76a32137e6dce28c321480f08
|
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Change Log
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
|
+
|
5
|
+
## 0.1.0 - 2018-09-27
|
6
|
+
### Added
|
7
|
+
- Support for resource types:
|
8
|
+
- dataset
|
9
|
+
- event
|
10
|
+
- external_organisation
|
11
|
+
- journal
|
12
|
+
- person
|
13
|
+
- organisational_unit
|
14
|
+
- project
|
15
|
+
- publisher
|
16
|
+
- research_output
|
17
|
+
- For Pure API 59.
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
research_metadata_batch (0.1.0)
|
5
|
+
puree (~> 2.2)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
addressable (2.5.2)
|
11
|
+
public_suffix (>= 2.0.2, < 4.0)
|
12
|
+
domain_name (0.5.20180417)
|
13
|
+
unf (>= 0.0.5, < 1.0.0)
|
14
|
+
http (2.2.2)
|
15
|
+
addressable (~> 2.3)
|
16
|
+
http-cookie (~> 1.0)
|
17
|
+
http-form_data (~> 1.0.1)
|
18
|
+
http_parser.rb (~> 0.6.0)
|
19
|
+
http-cookie (1.0.3)
|
20
|
+
domain_name (~> 0.5)
|
21
|
+
http-form_data (1.0.3)
|
22
|
+
http_parser.rb (0.6.0)
|
23
|
+
mini_portile2 (2.3.0)
|
24
|
+
nokogiri (1.8.4)
|
25
|
+
mini_portile2 (~> 2.3.0)
|
26
|
+
public_suffix (3.0.3)
|
27
|
+
puree (2.2.0)
|
28
|
+
http (~> 2.0)
|
29
|
+
nokogiri (~> 1.6)
|
30
|
+
unf (0.1.4)
|
31
|
+
unf_ext
|
32
|
+
unf_ext (0.0.7.5)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
ruby
|
36
|
+
|
37
|
+
DEPENDENCIES
|
38
|
+
research_metadata_batch!
|
39
|
+
|
40
|
+
BUNDLED WITH
|
41
|
+
1.16.1
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 Adrian Albin-Clark
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
# Research Metadata Batch
|
2
|
+
For the batch processing of Pure records. Custom actions and log messages can be
|
3
|
+
defined in user-defined applications.
|
4
|
+
|
5
|
+
## Status
|
6
|
+
|
7
|
+
[](https://badge.fury.io/rb/research_metadata_batch)
|
8
|
+
[](https://codeclimate.com/github/lulibrary/research-metadata-batch/maintainability)
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'research_metadata_batch'
|
16
|
+
```
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
$ bundle
|
21
|
+
|
22
|
+
Or install it yourself as:
|
23
|
+
|
24
|
+
$ gem install research_metadata_batch
|
25
|
+
|
26
|
+
## Basic usage
|
27
|
+
Uses the default gem behaviour which merely inspects the metadata models using STDOUT.
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
pure_config = {
|
31
|
+
url: ENV['PURE_URL'],
|
32
|
+
username: ENV['PURE_USERNAME'],
|
33
|
+
password: ENV['PURE_PASSWORD'],
|
34
|
+
api_key: ENV['PURE_API_KEY']
|
35
|
+
}
|
36
|
+
ResearchMetadataBatch::Dataset.new(pure_config: pure_config).process
|
37
|
+
```
|
38
|
+
|
39
|
+
## Making an application
|
40
|
+
Require this gem, then open up the base class {ResearchMetadataBatch::Base} as below. Implement methods from
|
41
|
+
{ResearchMetadataBatch::Custom} as inherited methods, including any secondary initialisation using the
|
42
|
+
``init`` method.
|
43
|
+
|
44
|
+
|
45
|
+
For resource-specific customisation, open up a resource class e.g. {ResearchMetadataBatch::Dataset}. Implement methods from
|
46
|
+
{ResearchMetadataBatch::Custom} as resource-specific methods.
|
47
|
+
|
48
|
+
This example uses Amazon Web Services.
|
49
|
+
|
50
|
+
### Base class
|
51
|
+
```ruby
|
52
|
+
module ResearchMetadataBatch
|
53
|
+
class Base
|
54
|
+
def init(aws_config:)
|
55
|
+
aws_credentials = Aws::Credentials.new aws_config[:access_key_id],
|
56
|
+
aws_config[:secret_access_key]
|
57
|
+
@s3_client = Aws::S3::Client.new region: aws_config[:region],
|
58
|
+
credentials: aws_credentials
|
59
|
+
@s3_bucket = aws_config[:s3_bucket]
|
60
|
+
end
|
61
|
+
|
62
|
+
def act(model)
|
63
|
+
# Do something involving Amazon Web Services
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
```
|
68
|
+
|
69
|
+
### Resource class
|
70
|
+
```ruby
|
71
|
+
module ResearchMetadataBatch
|
72
|
+
class Dataset
|
73
|
+
# Implement methods from ResearchMetadataBatch::Custom
|
74
|
+
end
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
### Running a batch process
|
79
|
+
```ruby
|
80
|
+
require_relative '/path/to/your/opened/class'
|
81
|
+
|
82
|
+
pure_config = {
|
83
|
+
url: ENV['PURE_URL'],
|
84
|
+
username: ENV['PURE_USERNAME'],
|
85
|
+
password: ENV['PURE_PASSWORD'],
|
86
|
+
api_key: ENV['PURE_API_KEY']
|
87
|
+
}
|
88
|
+
|
89
|
+
aws_config = {
|
90
|
+
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
|
91
|
+
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
|
92
|
+
region: ENV['AWS_REGION'],
|
93
|
+
s3_bucket: 'YOUR_S3_BUCKET'
|
94
|
+
}
|
95
|
+
|
96
|
+
log_file = '/path/to/your/log/file'
|
97
|
+
|
98
|
+
config = {
|
99
|
+
pure_config: pure_config,
|
100
|
+
log_file: log_file
|
101
|
+
}
|
102
|
+
|
103
|
+
batch = ResearchMetadataBatch::Dataset.new config
|
104
|
+
batch.init aws_config: aws_config
|
105
|
+
batch.process
|
106
|
+
```
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'puree'
|
3
|
+
require_relative 'custom'
|
4
|
+
|
5
|
+
module ResearchMetadataBatch
|
6
|
+
# @note Not to be used directly
|
7
|
+
class Base
|
8
|
+
include ResearchMetadataBatch::Custom
|
9
|
+
# @param pure_config [Hash]
|
10
|
+
# @option config [String] :url
|
11
|
+
# @option config [String] :username
|
12
|
+
# @option config [String] :password
|
13
|
+
# @option config [String] :api_key
|
14
|
+
# @param log_file [String]
|
15
|
+
def initialize(pure_config:, log_file: nil)
|
16
|
+
@pure_config = pure_config
|
17
|
+
if log_file
|
18
|
+
@logger = Logger.new File.new(log_file, 'a'), 20, 'daily'
|
19
|
+
else
|
20
|
+
@logger = Logger.new(STDOUT)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param max [Fixnum] Number of records to act upon. Omit to act upon as many as possible.
|
25
|
+
# @param limit [Fixnum] Pure records limit.
|
26
|
+
# @param offset [Fixnum] Pure records offset.
|
27
|
+
# @param action [Boolean] Set to false to mock an action.
|
28
|
+
# @param delay [Fixnum] Delay in seconds between limit-sized batches.
|
29
|
+
def process(max: nil, limit: 20, offset: 0, action: true, delay: 0)
|
30
|
+
records_available = resource_count
|
31
|
+
|
32
|
+
@logger.info "#{records_available} records in Pure before processing"
|
33
|
+
if action
|
34
|
+
begin
|
35
|
+
preflight
|
36
|
+
@logger.info preflight_success_log_message
|
37
|
+
rescue => error
|
38
|
+
@logger.info preflight_error_log_message(error)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if max
|
43
|
+
if max >= 0 && max <= records_available
|
44
|
+
qty_to_find = max
|
45
|
+
end
|
46
|
+
else
|
47
|
+
qty_to_find = records_available
|
48
|
+
end
|
49
|
+
|
50
|
+
if offset < 0 || offset > records_available - 1
|
51
|
+
offset = 0
|
52
|
+
end
|
53
|
+
|
54
|
+
qty_obtained = 0
|
55
|
+
position = offset
|
56
|
+
|
57
|
+
while position < records_available
|
58
|
+
# extract from Pure
|
59
|
+
begin
|
60
|
+
result = resource_batch limit, position
|
61
|
+
rescue => e
|
62
|
+
@logger.error e
|
63
|
+
sleep 10
|
64
|
+
redo
|
65
|
+
end
|
66
|
+
|
67
|
+
result.each do |i|
|
68
|
+
|
69
|
+
if !record_valid? i
|
70
|
+
@logger.warn "#{log_message_prefix(position, i.uuid)} - record invalid"
|
71
|
+
position += 1
|
72
|
+
next
|
73
|
+
end
|
74
|
+
|
75
|
+
begin
|
76
|
+
if action
|
77
|
+
act_msg = act i
|
78
|
+
else
|
79
|
+
act_msg = mock_act i
|
80
|
+
end
|
81
|
+
@logger.info "#{log_message_prefix(position, i.uuid)} - #{act_success_log_message(i, act_msg)}" if act_msg
|
82
|
+
rescue => error
|
83
|
+
@logger.error "#{log_message_prefix(position, i.uuid)} - ERROR=#{error}"
|
84
|
+
end
|
85
|
+
|
86
|
+
position += 1
|
87
|
+
qty_obtained += 1
|
88
|
+
|
89
|
+
break if qty_obtained == qty_to_find
|
90
|
+
end
|
91
|
+
|
92
|
+
break if qty_obtained == qty_to_find
|
93
|
+
|
94
|
+
# handle error response
|
95
|
+
if result.empty?
|
96
|
+
@logger.error "#{log_message_prefix(position, nil)} - ERROR=system"
|
97
|
+
position += 1
|
98
|
+
end
|
99
|
+
|
100
|
+
sleep delay
|
101
|
+
end
|
102
|
+
|
103
|
+
@logger.info "#{records_available} records in Pure after processing"
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def act(model)
|
110
|
+
puts model.inspect
|
111
|
+
end
|
112
|
+
|
113
|
+
def record_valid?(model)
|
114
|
+
true
|
115
|
+
end
|
116
|
+
|
117
|
+
# @return [String]
|
118
|
+
def log_message_prefix(pure_record, pure_uuid)
|
119
|
+
"PURE_RECORD=#{pure_record} - PURE_UUID=#{pure_uuid}"
|
120
|
+
end
|
121
|
+
|
122
|
+
def resource_count
|
123
|
+
resource_class = "Puree::Extractor::#{Puree::Util::String.titleize(@resource_type)}"
|
124
|
+
Object.const_get(resource_class).new(@pure_config).count
|
125
|
+
end
|
126
|
+
|
127
|
+
def resource_batch(limit, offset)
|
128
|
+
resource_method = "#{@resource_type}s".to_sym
|
129
|
+
client = Puree::REST::Client.new(@pure_config).send resource_method
|
130
|
+
response = client.all params: {size: limit, offset: offset}
|
131
|
+
Puree::XMLExtractor::Collection.send resource_method, response.to_s
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module ResearchMetadataBatch
|
2
|
+
|
3
|
+
# @note These methods (except init) are used internally by {ResearchMetadataBatch::Base#process} and have been left public for documentation purposes only
|
4
|
+
module Custom
|
5
|
+
|
6
|
+
# Second stage initialisation, perhaps third party services.
|
7
|
+
# @param args [Hash]
|
8
|
+
def init(**args)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Anything to be done at the start of a batch run
|
12
|
+
def preflight
|
13
|
+
end
|
14
|
+
|
15
|
+
# Message when preflight method completes
|
16
|
+
# @return [String]
|
17
|
+
def preflight_success_log_message
|
18
|
+
end
|
19
|
+
|
20
|
+
# Message when preflight method does not complete
|
21
|
+
# @return [String]
|
22
|
+
def preflight_error_log_message(error)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Do something with model metadata
|
26
|
+
# @return [String, nil] Optionally, return something transaction-specific, such as a code/ID from an external service.
|
27
|
+
def act(model)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Message when act/mock_act completes
|
31
|
+
# @return [String]
|
32
|
+
def act_success_log_message(model, act_msg)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Fake doing something with model metadata
|
36
|
+
# @return [String, nil]
|
37
|
+
def mock_act(model)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Check for values in metadata
|
41
|
+
# @return [Boolean]
|
42
|
+
def record_valid?(model)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class Dataset < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :dataset
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class Event < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :event
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class ExternalOrganisation < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :external_organisation
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class Journal < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :journal
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class OrganisationalUnit < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :organisational_unit
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class Person < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :person
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class Project < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :project
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class Publisher < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :publisher
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require_relative 'dataset'
|
2
|
+
require_relative 'event'
|
3
|
+
require_relative 'external_organisation'
|
4
|
+
require_relative 'journal'
|
5
|
+
require_relative 'organisational_unit'
|
6
|
+
require_relative 'person'
|
7
|
+
require_relative 'project'
|
8
|
+
require_relative 'publisher'
|
9
|
+
require_relative 'research_output'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module ResearchMetadataBatch
|
4
|
+
|
5
|
+
class ResearchOutput < ResearchMetadataBatch::Base
|
6
|
+
# (see ResearchMetadataBatch::Base#initialize)
|
7
|
+
def initialize(pure_config:, log_file: nil)
|
8
|
+
super
|
9
|
+
@resource_type = :research_output
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def resource_batch(limit, offset)
|
15
|
+
research_outputs_hash = super
|
16
|
+
research_outputs_array = []
|
17
|
+
research_outputs_hash.each do |k, v|
|
18
|
+
research_outputs_array += v
|
19
|
+
end
|
20
|
+
research_outputs_array
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "research_metadata_batch/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "research_metadata_batch"
|
8
|
+
spec.version = ResearchMetadataBatch::VERSION
|
9
|
+
spec.authors = ["Adrian Albin-Clark"]
|
10
|
+
spec.email = ["a.albin-clark@lancaster.ac.uk"]
|
11
|
+
spec.summary = %q{Batch processing for the Pure Research Information System.}
|
12
|
+
spec.homepage = 'https://github.com/lulibrary/research_metadata_batch'
|
13
|
+
spec.license = "MIT"
|
14
|
+
spec.files = `git ls-files -z`.split("\x0")
|
15
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
16
|
+
spec.require_paths = ["lib"]
|
17
|
+
spec.required_ruby_version = '~> 2.1'
|
18
|
+
spec.add_dependency 'puree', '~> 2.2'
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: research_metadata_batch
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adrian Albin-Clark
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-10-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: puree
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.2'
|
27
|
+
description:
|
28
|
+
email:
|
29
|
+
- a.albin-clark@lancaster.ac.uk
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".gitignore"
|
35
|
+
- CHANGELOG.md
|
36
|
+
- Gemfile
|
37
|
+
- Gemfile.lock
|
38
|
+
- LICENSE.txt
|
39
|
+
- README.md
|
40
|
+
- lib/research_metadata_batch.rb
|
41
|
+
- lib/research_metadata_batch/base.rb
|
42
|
+
- lib/research_metadata_batch/custom.rb
|
43
|
+
- lib/research_metadata_batch/dataset.rb
|
44
|
+
- lib/research_metadata_batch/event.rb
|
45
|
+
- lib/research_metadata_batch/external_organisation.rb
|
46
|
+
- lib/research_metadata_batch/journal.rb
|
47
|
+
- lib/research_metadata_batch/organisational_unit.rb
|
48
|
+
- lib/research_metadata_batch/person.rb
|
49
|
+
- lib/research_metadata_batch/project.rb
|
50
|
+
- lib/research_metadata_batch/publisher.rb
|
51
|
+
- lib/research_metadata_batch/research_metadata_batch.rb
|
52
|
+
- lib/research_metadata_batch/research_output.rb
|
53
|
+
- lib/research_metadata_batch/version.rb
|
54
|
+
- research_metadata_batch.gemspec
|
55
|
+
homepage: https://github.com/lulibrary/research_metadata_batch
|
56
|
+
licenses:
|
57
|
+
- MIT
|
58
|
+
metadata: {}
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.1'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.7.3
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: Batch processing for the Pure Research Information System.
|
79
|
+
test_files: []
|