Skip to content

Commit 20da7c6

Browse files
authored
Support Ruby 3.3+, update Rubocop, and prepare release process (#3)
* Update to ruby 3.3 & latest rubocop gems * add rubocop style fixes * Add gem push workflow and fix a Dockerfile style issue * upload artifacts per build matrix item * prepare 0.1.0 for release
1 parent 4bd123d commit 20da7c6

File tree

16 files changed

+208
-29
lines changed

16 files changed

+208
-29
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
fail-fast: false
77
matrix:
88
os: [ ubuntu-latest, macos-latest ]
9-
ruby: [ '2.7', '3.0', '3.1' ]
9+
ruby: [ '3.3', '3.4' ]
1010
runs-on: ${{ matrix.os }}
1111

1212
steps:
@@ -24,7 +24,7 @@ jobs:
2424

2525
- name: Upload artifacts
2626
if: ${{ always() }}
27-
uses: actions/upload-artifact@v3
27+
uses: actions/upload-artifact@v4
2828
with:
29-
name: artifacts
29+
name: artifacts-${{ matrix.ruby }}-${{ matrix.os }}
3030
path: artifacts/**

.github/workflows/gem-push.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Ruby Gem
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
build:
9+
name: Build + Publish
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: read
13+
packages: write
14+
15+
steps:
16+
- uses: actions/checkout@v3
17+
18+
- name: Set up Ruby
19+
uses: ruby/setup-ruby@v1
20+
with:
21+
ruby-version: '3.3'
22+
bundler-cache: true
23+
24+
- name: Publish to RubyGems
25+
run: |
26+
mkdir -p $HOME/.gem
27+
touch $HOME/.gem/credentials
28+
chmod 0600 $HOME/.gem/credentials
29+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
30+
gem build *.gemspec
31+
gem push *.gem
32+
env:
33+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"

.rubocop.yml

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,3 +487,141 @@ Style/RedundantStringEscape: # (new in 1.37)
487487
Style/RedundantEach: # (new in 1.38)
488488
Enabled: true
489489

490+
Gemspec/AddRuntimeDependency: # new in 1.65
491+
Enabled: true
492+
Gemspec/AttributeAssignment: # new in 1.77
493+
Enabled: true
494+
Gemspec/DevelopmentDependencies: # new in 1.44
495+
Enabled: false
496+
Lint/ArrayLiteralInRegexp: # new i n 1.71
497+
Enabled: true
498+
Lint/ConstantReassignment: # new in 1.70
499+
Enabled: true
500+
Lint/CopDirectiveSyntax: # new in 1.72
501+
Enabled: true
502+
Lint/DuplicateMatchPattern: # new in 1.50
503+
Enabled: true
504+
Lint/DuplicateSetElement: # new in 1.67
505+
Enabled: true
506+
Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
507+
Enabled: true
508+
Lint/ItWithoutArgumentsInBlock: # new in 1.59
509+
Enabled: true
510+
Lint/LiteralAssignmentInCondition: # new in 1.58
511+
Enabled: true
512+
Lint/MixedCaseRange: # new in 1.53
513+
Enabled: true
514+
Lint/NumericOperationWithConstantResult: # new in 1.69
515+
Enabled: true
516+
Lint/RedundantRegexpQuantifiers: # new in 1.53
517+
Enabled: true
518+
Lint/RedundantTypeConversion: # new in 1.72
519+
Enabled: true
520+
Lint/SharedMutableDefault: # new in 1.70
521+
Enabled: true
522+
Lint/SuppressedExceptionInNumberConversion: # new in 1.72
523+
Enabled: true
524+
Lint/UnescapedBracketInRegexp: # new in 1.68
525+
Enabled: true
526+
Lint/UselessConstantScoping: # new in 1.72
527+
Enabled: true
528+
Lint/UselessDefaultValueArgument: # new in 1.76
529+
Enabled: true
530+
Lint/UselessDefined: # new in 1.69
531+
Enabled: true
532+
Lint/UselessNumericOperation: # new in 1.66
533+
Enabled: true
534+
Lint/UselessOr: # new in 1.76
535+
Enabled: true
536+
Lint/UselessRescue: # new in 1.43
537+
Enabled: true
538+
Metrics/CollectionLiteralLength: # new in 1.47
539+
Enabled: true
540+
Naming/PredicateMethod: # new in 1.76
541+
Enabled: true
542+
Style/AmbiguousEndlessMethodDefinition: # new in 1.68
543+
Enabled: true
544+
Style/ArrayIntersect: # new in 1.40
545+
Enabled: true
546+
Style/BitwisePredicate: # new in 1.68
547+
Enabled: true
548+
Style/CollectionQuerying: # new in 1.77
549+
Enabled: true
550+
Style/CombinableDefined: # new in 1.68
551+
Enabled: true
552+
Style/ComparableBetween: # new in 1.74
553+
Enabled: true
554+
Style/ComparableClamp: # new in 1.44
555+
Enabled: true
556+
Style/ConcatArrayLiterals: # new in 1.41
557+
Enabled: true
558+
Style/DataInheritance: # new in 1.49
559+
Enabled: true
560+
Style/DigChain: # new in 1.69
561+
Enabled: true
562+
Style/DirEmpty: # new in 1.48
563+
Enabled: true
564+
Style/EmptyStringInsideInterpolation: # new in 1.76
565+
Enabled: true
566+
Style/ExactRegexpMatch: # new in 1.51
567+
Enabled: true
568+
Style/FileEmpty: # new in 1.48
569+
Enabled: true
570+
Style/FileNull: # new in 1.69
571+
Enabled: true
572+
Style/FileTouch: # new in 1.69
573+
Enabled: true
574+
Style/HashFetchChain: # new in 1.75
575+
Enabled: true
576+
Style/HashSlice: # new in 1.71
577+
Enabled: true
578+
Style/ItAssignment: # new in 1.70
579+
Enabled: true
580+
Style/ItBlockParameter: # new in 1.75
581+
Enabled: true
582+
Style/KeywordArgumentsMerging: # new in 1.68
583+
Enabled: true
584+
Style/MapIntoArray: # new in 1.63
585+
Enabled: true
586+
Style/MapToSet: # new in 1.42
587+
Enabled: true
588+
Style/MinMaxComparison: # new in 1.42
589+
Enabled: true
590+
Style/RedundantArrayConstructor: # new in 1.52
591+
Enabled: true
592+
Style/RedundantArrayFlatten: # new in 1.76
593+
Enabled: true
594+
Style/RedundantConstantBase: # new in 1.40
595+
Enabled: true
596+
Style/RedundantCurrentDirectoryInPath: # new in 1.53
597+
Enabled: true
598+
Style/RedundantDoubleSplatHashBraces: # new in 1.41
599+
Enabled: true
600+
Style/RedundantFilterChain: # new in 1.52
601+
Enabled: true
602+
Style/RedundantFormat: # new in 1.72
603+
Enabled: true
604+
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
605+
Enabled: true
606+
Style/RedundantInterpolationUnfreeze: # new in 1.66
607+
Enabled: true
608+
Style/RedundantLineContinuation: # new in 1.49
609+
Enabled: true
610+
Style/RedundantRegexpArgument: # new in 1.53
611+
Enabled: true
612+
Style/RedundantRegexpConstructor: # new in 1.52
613+
Enabled: true
614+
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
615+
Enabled: true
616+
Style/SafeNavigationChainLength: # new in 1.68
617+
Enabled: true
618+
Style/SendWithLiteralMethodName: # new in 1.64
619+
Enabled: true
620+
Style/SingleLineDoEndBlock: # new in 1.57
621+
Enabled: true
622+
Style/SuperArguments: # new in 1.64
623+
Enabled: true
624+
Style/SuperWithArgsParentheses: # new in 1.58
625+
Enabled: true
626+
Style/YAMLFileRead: # new in 1.53
627+
Enabled: true

CHANGES.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
# (next)
1+
# 0.1.0 (23 July 2025)
22

3+
- Update to support Ruby 3.3+.
4+
- Update Rubocop & style changes.
35
- Add `alma-oclc-lookup` script.
46

57
# 0.0.7.1 (24 May 2022)

Dockerfile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# =============================================================================
22
# Target: base
33

4-
FROM ruby:2.7.5-alpine AS base
4+
FROM ruby:3.3-alpine AS base
55

66
RUN apk --no-cache --update upgrade && \
77
apk --no-cache add \
@@ -12,6 +12,7 @@ RUN apk --no-cache --update upgrade && \
1212
openssl \
1313
tzdata \
1414
xz-libs \
15+
yaml-dev \
1516
&& rm -rf /var/cache/apk/*
1617

1718
WORKDIR /opt/app
@@ -51,4 +52,4 @@ COPY --from=development /usr/local/bundle /usr/local/bundle
5152
RUN bundle config set deployment 'true'
5253
RUN bundle install --local --path=/usr/local/bundle
5354

54-
CMD ['bundle', 'exec', 'rake']
55+
CMD ["bundle", "exec", "rake"]

berkeley_library-alma.gemspec

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ require 'berkeley_library/alma/module_info'
88

99
Gem::Specification.new do |spec|
1010
spec.name = BerkeleyLibrary::Alma::ModuleInfo::NAME
11-
spec.author = BerkeleyLibrary::Alma::ModuleInfo::AUTHOR
12-
spec.email = BerkeleyLibrary::Alma::ModuleInfo::AUTHOR_EMAIL
11+
spec.author = BerkeleyLibrary::Alma::ModuleInfo::AUTHORS
12+
spec.email = BerkeleyLibrary::Alma::ModuleInfo::AUTHOR_EMAILS
1313
spec.summary = BerkeleyLibrary::Alma::ModuleInfo::SUMMARY
1414
spec.description = BerkeleyLibrary::Alma::ModuleInfo::DESCRIPTION
1515
spec.license = BerkeleyLibrary::Alma::ModuleInfo::LICENSE
@@ -31,9 +31,9 @@ Gem::Specification.new do |spec|
3131
spec.add_development_dependency 'colorize', '~> 0.8'
3232
spec.add_development_dependency 'rake', '~> 13.0'
3333
spec.add_development_dependency 'rspec', '~> 3.10'
34-
spec.add_development_dependency 'rubocop', '= 1.39'
35-
spec.add_development_dependency 'rubocop-rake', '= 0.6.0'
36-
spec.add_development_dependency 'rubocop-rspec', '= 2.4.0'
34+
spec.add_development_dependency 'rubocop', '~> 1.78.0'
35+
spec.add_development_dependency 'rubocop-rake', '~> 0.7.0'
36+
spec.add_development_dependency 'rubocop-rspec', '~> 3.6.0'
3737
spec.add_development_dependency 'simplecov', '~> 0.21'
3838
spec.add_development_dependency 'simplecov-rcov', '~> 0.2'
3939
spec.add_development_dependency 'webmock', '~> 3.12'

bin/alma-mms-lookup

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ $stderr.sync = true
1414
require 'bundler/setup'
1515

1616
# Require lib directory
17-
unless $LOAD_PATH.include?((lib_path = File.expand_path('../lib', __dir__)))
17+
unless $LOAD_PATH.include?(lib_path = File.expand_path('../lib', __dir__))
1818
puts "Adding #{lib_path} to $LOAD_PATH"
1919
$LOAD_PATH.unshift(lib_path)
2020
end

bin/alma-oclc-lookup

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ $stderr.sync = true
1414
require 'bundler/setup'
1515

1616
# Require lib directory
17-
unless $LOAD_PATH.include?((lib_path = File.expand_path('../lib', __dir__)))
17+
unless $LOAD_PATH.include?(lib_path = File.expand_path('../lib', __dir__))
1818
puts "Adding #{lib_path} to $LOAD_PATH"
1919
$LOAD_PATH.unshift(lib_path)
2020
end

lib/berkeley_library/alma/module_info.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ module BerkeleyLibrary
22
module Alma
33
class ModuleInfo
44
NAME = 'berkeley_library-alma'.freeze
5-
AUTHOR = 'David Moles'.freeze
6-
AUTHOR_EMAIL = 'dmoles@berkeley.edu'.freeze
5+
AUTHORS = ['David Moles', 'maría a. matienzo'].freeze
6+
AUTHOR_EMAILS = ['dmoles@berkeley.edu', 'matienzo@berkeley.edu'].freeze
77
SUMMARY = 'Alma/Primo utilities for the UC Berkeley Library'.freeze
88
DESCRIPTION = 'A gem providing Alma/Primo-related utility code for the UC Berkeley Library'.freeze
99
LICENSE = 'MIT'.freeze
10-
VERSION = '0.0.7.1'.freeze
10+
VERSION = '0.1.0'.freeze
1111
HOMEPAGE = 'https://github.com/BerkeleyLibrary/alma'.freeze
1212
end
1313
end

lib/berkeley_library/alma/record_id.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ def parse(id)
3636
return id if id.is_a?(RecordId)
3737

3838
return MMSID.new(id) if ALMA_RECORD_RE =~ id
39-
return BibNumber.new(id) if MILLENNIUM_RECORD_RE =~ id
39+
40+
BibNumber.new(id) if MILLENNIUM_RECORD_RE =~ id
4041
end
4142
end
4243

0 commit comments

Comments
 (0)