alma 0.2.6 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +54 -0
  3. data/.circleci/setup-rubygems.sh +3 -0
  4. data/.github/dependabot.yml +7 -0
  5. data/.gitignore +3 -0
  6. data/.rubocop.yml +134 -0
  7. data/.ruby-version +1 -1
  8. data/CODE_OF_CONDUCT.md +1 -1
  9. data/Gemfile +4 -3
  10. data/Guardfile +75 -0
  11. data/README.md +136 -26
  12. data/Rakefile +3 -1
  13. data/alma.gemspec +21 -16
  14. data/lib/alma/alma_record.rb +3 -3
  15. data/lib/alma/api_defaults.rb +39 -0
  16. data/lib/alma/availability_response.rb +50 -53
  17. data/lib/alma/bib.rb +26 -42
  18. data/lib/alma/bib_holding.rb +25 -0
  19. data/lib/alma/bib_item.rb +28 -38
  20. data/lib/alma/bib_item_set.rb +72 -12
  21. data/lib/alma/bib_set.rb +7 -21
  22. data/lib/alma/config.rb +10 -4
  23. data/lib/alma/course.rb +47 -0
  24. data/lib/alma/course_set.rb +17 -0
  25. data/lib/alma/electronic/README.md +20 -0
  26. data/lib/alma/electronic/batch_utils.rb +224 -0
  27. data/lib/alma/electronic/business.rb +29 -0
  28. data/lib/alma/electronic.rb +167 -0
  29. data/lib/alma/error.rb +16 -4
  30. data/lib/alma/fine.rb +16 -0
  31. data/lib/alma/fine_set.rb +36 -21
  32. data/lib/alma/item_request_options.rb +23 -0
  33. data/lib/alma/library.rb +29 -0
  34. data/lib/alma/library_set.rb +21 -0
  35. data/lib/alma/loan.rb +31 -2
  36. data/lib/alma/loan_set.rb +62 -15
  37. data/lib/alma/location.rb +29 -0
  38. data/lib/alma/location_set.rb +21 -0
  39. data/lib/alma/renewal_response.rb +19 -11
  40. data/lib/alma/request.rb +167 -0
  41. data/lib/alma/request_options.rb +36 -17
  42. data/lib/alma/request_set.rb +64 -15
  43. data/lib/alma/response.rb +45 -0
  44. data/lib/alma/result_set.rb +27 -35
  45. data/lib/alma/user.rb +111 -92
  46. data/lib/alma/user_request.rb +19 -0
  47. data/lib/alma/user_set.rb +5 -6
  48. data/lib/alma/version.rb +3 -1
  49. data/lib/alma.rb +34 -22
  50. data/log/.gitignore +4 -0
  51. metadata +118 -10
  52. data/.travis.yml +0 -5
  53. data/lib/alma/api.rb +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f8f97556fd38ab3e4b03c42ee739d1a8a878f997e1d2ee54fb5dd5017b3cd51
4
- data.tar.gz: 1e5d6362f38d31fe538afe713b9b5ec87469f0364ddfde258e29a1c3b076cf88
3
+ metadata.gz: 210d45982a6c339d9b8c170a73077be4f56bcf4eaa989debe95d2f9d97897c0e
4
+ data.tar.gz: 1b988140c47bc0974e617cc1131aee0b82dfbcd50ce20d408fbd2a969cf180c7
5
5
  SHA512:
6
- metadata.gz: 2e9e26c6789cf81b7d8390c56a42f6c422dffda52befa4b629873bfa7edc0a7974c20ed51c485f861809743e9fa9db988af4d4cbe4f63ee8b15b4371ee27f38c
7
- data.tar.gz: ad6e0abc8e573bb1c02b34047eab1847e21ca858c6baa385b969c1faf45033151679201543f13ddc74d696035e234387e75eba7bfe4e046ff60231fc1e795b3b
6
+ metadata.gz: 1667314072be96beb05c3f389c5240142ff5e0f44be0eed44d2240653ad4dd38f07a221b2ab3235921e37e7620e4518128e1b8806880daadffc9f570bbccd773
7
+ data.tar.gz: b98783202cf24c6a33c0c249f70d9f55a715b611c89a3249d4cf14a1352f2dca476123315649f9d3f624b1533fa0547d285605af309cfab8c537a1b6d81db85b
@@ -0,0 +1,54 @@
1
+ version: 2.1
2
+ orbs:
3
+ ruby: circleci/ruby@1.2
4
+
5
+ workflows:
6
+ version: 2
7
+ test-deploy:
8
+ jobs:
9
+ - build
10
+ - deploy:
11
+ filters:
12
+ tags:
13
+ only: /.*/
14
+ branches:
15
+ ignore: /.*/
16
+
17
+ jobs:
18
+ build:
19
+ docker:
20
+ - image: cimg/ruby:2.7.2-browsers
21
+ auth:
22
+ username: $DOCKERHUB_USER
23
+ password: $DOCKERHUB_PASSWORD
24
+
25
+ executor: ruby/default
26
+ steps:
27
+ - checkout
28
+ - run:
29
+ name: Which bundler?
30
+ command: bundle -v
31
+ - run: bundle install
32
+ - run:
33
+ name: lint
34
+ command: bundle exec rubocop
35
+ - run:
36
+ name: test
37
+ command: bundle exec rake
38
+ deploy:
39
+ docker:
40
+ - image: cimg/ruby:2.7.2-browsers
41
+
42
+ working_directory: ~/repo
43
+
44
+ steps:
45
+ - checkout
46
+ - run:
47
+ name: Setup Rubygems
48
+ command: bash .circleci/setup-rubygems.sh
49
+
50
+ - run:
51
+ name: Publish to Rubygems
52
+ command: |
53
+ gem build alma.gemspec
54
+ gem push "$(ls alma-*.gem)"
@@ -0,0 +1,3 @@
1
+ mkdir ~/.gem
2
+ echo -e "---\r\n:rubygems_api_key: $ALMA_RUBYGEMS" > ~/.gem/credentials
3
+ chmod 0600 /home/circleci/.gem/credentials
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
data/.gitignore CHANGED
@@ -7,3 +7,6 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .byebug_history
11
+ .DS_Store
12
+ spec/.DS_Store
data/.rubocop.yml ADDED
@@ -0,0 +1,134 @@
1
+ require:
2
+ - rubocop-rails
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.7
6
+ # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
7
+ # to ignore them, so only the ones explicitly set in this file are enabled.
8
+ DisabledByDefault: true
9
+ Exclude:
10
+ - 'node_modules/**/*'
11
+ - '**/templates/**/*'
12
+ - '**/vendor/**/*'
13
+ - 'actionpack/lib/action_dispatch/journey/parser.rb'
14
+ - 'bin/*'
15
+ - 'solr/**/*'
16
+
17
+ # Prefer &&/|| over and/or.
18
+ Style/AndOr:
19
+ Enabled: true
20
+
21
+ # Align `when` with `case`.
22
+ Layout/CaseIndentation:
23
+ Enabled: true
24
+
25
+ # Align comments with method definitions.
26
+ Layout/CommentIndentation:
27
+ Enabled: true
28
+
29
+ Layout/EmptyLineAfterMagicComment:
30
+ Enabled: true
31
+
32
+ # In a regular class definition, no empty lines around the body.
33
+ Layout/EmptyLinesAroundClassBody:
34
+ Enabled: true
35
+
36
+ # In a regular method definition, no empty lines around the body.
37
+ Layout/EmptyLinesAroundMethodBody:
38
+ Enabled: true
39
+
40
+ # In a regular module definition, no empty lines around the body.
41
+ Layout/EmptyLinesAroundModuleBody:
42
+ Enabled: true
43
+
44
+ Layout/FirstArgumentIndentation:
45
+ Enabled: true
46
+
47
+ # Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
48
+ Style/HashSyntax:
49
+ Enabled: true
50
+
51
+ # Method definitions after `private` or `protected` isolated calls need one
52
+ # extra level of indentation.
53
+ Layout/IndentationConsistency:
54
+ Enabled: true
55
+ EnforcedStyle: indented_internal_methods
56
+
57
+ # Two spaces, no tabs (for indentation).
58
+ Layout/IndentationWidth:
59
+ Enabled: true
60
+
61
+ Layout/SpaceAfterColon:
62
+ Enabled: true
63
+
64
+ Layout/SpaceAfterComma:
65
+ Enabled: true
66
+
67
+ Layout/SpaceAroundEqualsInParameterDefault:
68
+ Enabled: true
69
+
70
+ Layout/SpaceAroundKeyword:
71
+ Enabled: true
72
+
73
+ Layout/SpaceAroundOperators:
74
+ Enabled: true
75
+
76
+ Layout/SpaceBeforeFirstArg:
77
+ Enabled: true
78
+
79
+ # Defining a method with parameters needs parentheses.
80
+ Style/MethodDefParentheses:
81
+ Enabled: true
82
+
83
+ Style/FrozenStringLiteralComment:
84
+ Enabled: true
85
+ EnforcedStyle: always
86
+ Exclude:
87
+ - 'app/models/traject_indexer.rb'
88
+ - 'db/schema.rb'
89
+
90
+ # Use `foo {}` not `foo{}`.
91
+ Layout/SpaceBeforeBlockBraces:
92
+ Enabled: true
93
+
94
+ # Use `foo { bar }` not `foo {bar}`.
95
+ Layout/SpaceInsideBlockBraces:
96
+ Enabled: true
97
+
98
+ # Use `{ a: 1 }` not `{a:1}`.
99
+ Layout/SpaceInsideHashLiteralBraces:
100
+ Enabled: true
101
+
102
+ Layout/SpaceInsideParens:
103
+ Enabled: true
104
+
105
+ # Check quotes usage according to lint rule below.
106
+ Style/StringLiterals:
107
+ Enabled: true
108
+ EnforcedStyle: double_quotes
109
+
110
+ # Detect hard tabs, no hard tabs.
111
+ Layout/IndentationStyle:
112
+ Enabled: true
113
+
114
+ # Blank lines should not have any spaces.
115
+ Layout/TrailingEmptyLines:
116
+ Enabled: true
117
+
118
+ # No trailing whitespace.
119
+ Layout/TrailingWhitespace:
120
+ Enabled: true
121
+
122
+ # Use quotes for string literals when they are enough.
123
+ Style/RedundantPercentQ:
124
+ Enabled: true
125
+
126
+ # Align `end` with the matching keyword or starting expression except for
127
+ # assignments, where it should be aligned with the LHS.
128
+ Layout/EndAlignment:
129
+ Enabled: true
130
+ EnforcedStyleAlignWith: variable
131
+
132
+ # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
133
+ Lint/RequireParentheses:
134
+ Enabled: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.4.1
1
+ ruby-2.7.2
data/CODE_OF_CONDUCT.md CHANGED
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
55
55
  ## Enforcement
56
56
 
57
57
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at chad.nelson@temple.edu. All
58
+ reported by contacting the project team at svc.libdev@temple.edu. All
59
59
  complaints will be reviewed and investigated and will result in a response that
60
60
  is deemed necessary and appropriate to the circumstances. The project team is
61
61
  obligated to maintain confidentiality with regard to the reporter of an incident.
data/Gemfile CHANGED
@@ -1,7 +1,8 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in alma.gemspec
4
6
  gemspec
5
7
 
6
- gem 'simplecov', require: false, group: :test
7
-
8
+ gem "simplecov", require: false, group: :test
data/Guardfile ADDED
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ # A sample Guardfile
4
+ # More info at https://github.com/guard/guard#readme
5
+
6
+ ## Uncomment and set this to only include directories you want to watch
7
+ # directories %w(app lib config test spec features) \
8
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
9
+
10
+ ## Note: if you are using the `directories` clause above and you are not
11
+ ## watching the project directory ('.'), then you will want to move
12
+ ## the Guardfile to a watched dir and symlink it back, e.g.
13
+ #
14
+ # $ mkdir config
15
+ # $ mv Guardfile config/
16
+ # $ ln -s config/Guardfile .
17
+ #
18
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
19
+
20
+ # Note: The cmd option is now required due to the increasing number of ways
21
+ # rspec may be run, below are examples of the most common uses.
22
+ # * bundler: 'bundle exec rspec'
23
+ # * bundler binstubs: 'bin/rspec'
24
+ # * spring: 'bin/rspec' (This will use spring if running and you have
25
+ # installed the spring binstubs per the docs)
26
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
27
+ # * 'just' rspec: 'rspec'
28
+
29
+ guard :rspec, cmd: "bundle exec rspec" do
30
+ require "guard/rspec/dsl"
31
+ dsl = Guard::RSpec::Dsl.new(self)
32
+
33
+ # Feel free to open issues for suggestions and improvements
34
+
35
+ # RSpec files
36
+ rspec = dsl.rspec
37
+ watch(rspec.spec_helper) { rspec.spec_dir }
38
+ watch(rspec.spec_support) { rspec.spec_dir }
39
+ watch(rspec.spec_files)
40
+
41
+ # Ruby files
42
+ ruby = dsl.ruby
43
+ dsl.watch_spec_files_for(ruby.lib_files)
44
+
45
+ # Rails files
46
+ rails = dsl.rails(view_extensions: %w(erb haml slim))
47
+ dsl.watch_spec_files_for(rails.app_files)
48
+ dsl.watch_spec_files_for(rails.views)
49
+
50
+ watch(rails.controllers) do |m|
51
+ [
52
+ rspec.spec.call("routing/#{m[1]}_routing"),
53
+ rspec.spec.call("controllers/#{m[1]}_controller"),
54
+ rspec.spec.call("acceptance/#{m[1]}")
55
+ ]
56
+ end
57
+
58
+ # Rails config changes
59
+ watch(rails.spec_helper) { rspec.spec_dir }
60
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
61
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
62
+
63
+ # Capybara features specs
64
+ watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
65
+ watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
66
+
67
+ # Turnip features and steps
68
+ watch(%r{^spec/acceptance/(.+)\.feature$})
69
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
70
+ Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
71
+ end
72
+
73
+ # Specific files when defaults don't work (for some reason):
74
+ watch("lib/alma.rb") { "spec/alma_spec.rb" }
75
+ end
data/README.md CHANGED
@@ -26,75 +26,81 @@ You'll need to configure the Alma gem to ensure you query the appropriate data.
26
26
 
27
27
  ```ruby
28
28
  Alma.configure do |config|
29
- # You have to set te apikey
29
+ # You have to set the apikey
30
30
  config.apikey = 'EXAMPLE_EL_DEV_NETWORK_APPLICATION_KEY'
31
- # Alma gem defaults to querying Ex Libris's North American Api servers. You can override that here.
32
- config.region = "https://api-eu.hosted.exlibrisgroup.com
31
+ # Alma gem defaults to querying Ex Libris's North American API servers. You can override that here.
32
+ config.region = "https://api-eu.hosted.exlibrisgroup.com"
33
+
34
+ # By default enable_loggable is set to false
35
+ config.enable_loggable = false
36
+
37
+ # By default timeout is set to 5 seconds; can only provide integers
38
+ config.timeout = 10
33
39
  end
34
40
  ```
35
41
 
36
42
  Now you can access those configuration attributes with `Alma.configuration.apikey`
37
43
 
38
44
  ### Making Requests
39
-
45
+
40
46
  #### Get a Single user
41
47
  ```ruby
42
48
  user = Alma::User.find(123456789)
43
-
49
+
44
50
  user.first_name
45
51
  > Chad
46
-
52
+
47
53
  user.email
48
54
  > chad.nelson@fictional.edu
49
-
55
+
50
56
  user.keys
51
57
  >{first_name: "Chad",
52
58
  ...}
53
59
  ```
54
-
60
+
55
61
  #### Get details on a users fines
56
-
62
+
57
63
  ```ruby
58
64
  fines = user.fines
59
65
  fines.sum
60
66
  > "20.0"
61
-
67
+
62
68
  fines.total_record_count
63
69
  > "2"
64
-
70
+
65
71
  fines
66
72
  > [#<Alma::AlmaRecord:0x000000038b7b50
67
73
  ...>,
68
74
  #<Alma::AlmaRecord:0x000000038b7b28
69
75
  ...>]
70
-
76
+
71
77
  fines.first.title
72
78
  > "Practical Object Oriented Design with Ruby"
73
-
79
+
74
80
  ```
75
81
 
76
82
  Each fine object reflects the available fields in the returned JSON,[as documented on the Ex Libris Api docs](https://developers.exlibrisgroup.com/alma/apis/xsd/rest_fees.xsd?tags=GET)
77
83
 
78
84
  #### Get details on a users loans
79
-
85
+
80
86
  ```ruby
81
87
  loans = user.loans
82
88
 
83
89
  loans.total_record_count
84
90
  > "2"
85
-
91
+
86
92
  loans
87
93
  > [#<Alma::Loan:0x000000038c6b79
88
94
  ...>,
89
95
  #<Alma::Loan:0x000000038c6b34
90
96
  ...>]
91
-
97
+
92
98
  loans.first.title
93
99
  > "Javascript: The Good Parts"
94
-
100
+
95
101
  loans.first.due_date
96
- "2016-12-26z
97
-
102
+ "2016-12-26z"
103
+
98
104
  ```
99
105
  Each loan object reflects the available fields in the returned XML,[as documented on the Ex Libris Api docs](https://developers.exlibrisgroup.com/alma/apis/xsd/rest_item_loans.xsd?tags=GET)
100
106
 
@@ -105,10 +111,10 @@ requests = user.requests
105
111
 
106
112
  requests.total_record_count
107
113
  > "1"
108
-
114
+
109
115
  requests.list
110
116
  > [#<Alma::AlmaRecord:0x000000038c6b79...>]
111
-
117
+
112
118
  requests.list.first.title
113
119
  > "Food in history / Reay Tannahill."
114
120
 
@@ -117,26 +123,131 @@ requests.list.first.pickup_location
117
123
 
118
124
  requests.list.first.request_status
119
125
  > "In Process"
120
-
126
+
121
127
  ```
122
128
  Each request object reflects the available fields in the returned XML,[as documented on the Ex Libris Api docs](https://developers.exlibrisgroup.com/alma/apis/xsd/rest_user_requests.xsd?tags=GET)
123
129
 
124
130
  Loans, fines and Requests can also be accessed statically
125
-
131
+
126
132
  ```ruby
127
133
  Alma::User.get_fines({:user_id => 123456789})
128
-
134
+
129
135
  Alma::User.get_loans({:user_id => 123456789})
130
136
 
131
137
  Alma::User.get_requests({:user_id => 123456789})
132
-
138
+
139
+ ```
140
+
141
+ ### Bib Records
142
+ Wrappings for some of the API endpoints described by the [Bibliographic Records and Inventory
143
+ ](https://developers.exlibrisgroup.com/alma/apis/bibs) section of the Ex Libris Developers Network
144
+
145
+ ### All the items for a Bib Records
146
+ Corresponds to the [Retrieve Items list](https://developers.exlibrisgroup.com/alma/apis/bibs/GET/gwPcGly021om4RTvtjbPleCklCGxeYAfEqJOcQOaLEvNcHQT0/ozqu3DGTurs/XxIP4LrexQUdc=/af2fb69d-64f4-42bc-bb05-d8a0ae56936e) api endpoint
147
+
148
+ To get the list of items for all holdings of a bib record.
149
+ `items = Alma::BibItem.find("EXAMPLE_MMS_ID")`
150
+
151
+ You can also pass a holding ID as an option, if you only want that holdings items.
152
+ `items = Alma::BibItem.find("EXAMPLE_MMS_ID", holding_id: EXAMPLE_HOLDING_ID)`
153
+
154
+
155
+ The response is a BibItemSet which can be iterated over to access items:
156
+
157
+ ```ruby
158
+ items.each { ... }
159
+
160
+ items.total_record_count
161
+ > 4
133
162
  ```
163
+
164
+ You can remove items that are missing or lost from the result set
165
+ ` avail_items = items.filter_missing_and_lost
166
+ `
167
+
168
+ Items can be grouped by the library they are held at, which returns a hash with library codes as the keys and an array of items as the values.
169
+
170
+ ```ruby
171
+ items.grouped_by_library
172
+ { "MAIN" =>
173
+ [#<Alma::BibItem:0x000000038c6b79...>],
174
+ "NOT_MAIN" =>
175
+ [#<Alma::BibItem:0x000000038c6b88...>, #<Alma::BibItem:0x000000038c6b94...>,],
176
+ }
177
+ ```
178
+
179
+ The data for each item can be accessed via hash representation of the [item structure](https://developers.exlibrisgroup.com/alma/apis/xsd/rest_item.xsd), e.g.:
180
+
181
+ ```ruby
182
+ item = items.first
183
+
184
+ item["holding_data"]["call_number"]
185
+ "T385 .F79 2008"
186
+
187
+ item["item_data"]["location"]["value"]
188
+ "STACKS"
189
+
190
+ ```
191
+
192
+ There are also numerous convenience methods
193
+
194
+ ```ruby
195
+ # Boolean checks
196
+ item.in_temp_location?
197
+ item.in_place? # Basically, On Shelf or Not
198
+ item.non_circulating?
199
+ item.missing_or_lost?
200
+ item.has_temp_call_number?
201
+ item.has_alt_call_number?
202
+ item.has_process_type?
203
+
204
+
205
+ # Opinionated Accessors - return the value, or an empty string
206
+
207
+ # Returns temp library/location if appropriate, else normal library/location
208
+ item.library
209
+ item.library_name
210
+ item.location
211
+ item.location_name
212
+
213
+ # which use these methods under the hood
214
+ item.holding_library
215
+ item.holding_location
216
+
217
+ item.temp_library
218
+ item.temp_location
219
+
220
+
221
+ # Looks for Temp call number, then alternate call number, then normal call number
222
+ item.call_number
223
+
224
+ # and which use
225
+ item.temp_call_number
226
+ item.alt_call_number
227
+
228
+
229
+ # standard accessors
230
+ item.process_type
231
+ item.base_status
232
+ item.circulation_policy
233
+ item.description
234
+ item.public_note
235
+
236
+ ```
237
+
238
+ ### Logging
239
+ This gem exposes a loggable interface to responses. Thus a response will respond to `loggable` and return a hash with state values that may be of use to log.
240
+
241
+ As a bonus, when we enable this feature using the `enable_loggable` configuration, error messages will contain the loggable values and be formatted as JSON.
242
+
134
243
  ## Development
135
244
 
136
245
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
137
246
 
138
247
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
139
248
 
249
+ Use `bundle exec guard` to continuously run specs while developing.
250
+
140
251
  ## Contributing
141
252
 
142
253
  Bug reports and pull requests are welcome on GitHub at https://github.com/tulibraries/alma_rb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -145,4 +256,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/tulibr
145
256
  ## License
146
257
 
147
258
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
148
-
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
data/alma.gemspec CHANGED
@@ -1,16 +1,18 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path("../lib", __FILE__)
3
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'alma/version'
6
+ require "alma/version"
5
7
 
6
8
  Gem::Specification.new do |spec|
7
9
  spec.name = "alma"
8
10
  spec.version = Alma::VERSION
9
- spec.authors = ["Chad Nelson"]
10
- spec.email = ["chad.nelson@temple.edu"]
11
+ spec.authors = ["Jennifer Anton", "David Kinzer", "Chad Nelson"]
12
+ spec.email = ["jennifer.anton@temple.edu", "david.kinzer@temple.edu", "chad.nelson@temple.edu"]
11
13
 
12
- spec.summary = %q{Client for Ex Libris Alma Web Services}
13
- spec.description = %q{Client for Ex Libris Alma Web Services}
14
+ spec.summary = "Client for Ex Libris Alma Web Services"
15
+ spec.description = "Client for Ex Libris Alma Web Services"
14
16
  spec.homepage = "https://github.com/tulibraries/alma_rb"
15
17
  spec.license = "MIT"
16
18
 
@@ -21,16 +23,19 @@ Gem::Specification.new do |spec|
21
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
24
  spec.require_paths = ["lib"]
23
25
 
24
- spec.add_dependency 'ezwadl'
25
- spec.add_dependency 'httparty'
26
- spec.add_dependency 'xml-simple'
27
-
28
-
29
-
26
+ spec.add_dependency "ezwadl"
27
+ spec.add_dependency "httparty"
28
+ spec.add_dependency "xml-simple"
29
+ spec.add_dependency "activesupport"
30
30
 
31
- spec.add_development_dependency "bundler", "~> 1.13"
32
- spec.add_development_dependency "rake", "~> 10.0"
31
+ spec.add_development_dependency "bundler", "~> 2.0"
32
+ spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
- spec.add_development_dependency 'webmock'
35
- spec.add_development_dependency 'pry'
34
+ spec.add_development_dependency "webmock"
35
+ spec.add_development_dependency "pry"
36
+ spec.add_development_dependency "rubocop"
37
+ spec.add_development_dependency "rubocop-rails"
38
+ spec.add_development_dependency "byebug"
39
+ spec.add_development_dependency "guard"
40
+ spec.add_development_dependency "guard-rspec"
36
41
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Alma
2
4
  class AlmaRecord
3
-
4
5
  def initialize(record)
5
6
  @raw_record = record
6
7
  post_initialize()
@@ -23,6 +24,5 @@ module Alma
23
24
  # Subclasses can define this method to perform extra initialization
24
25
  # after the super class init.
25
26
  end
26
-
27
27
  end
28
- end
28
+ end