Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,30 @@
name: Build
on: [ push, pull_request ]
on: [ push, pull_request, workflow_dispatch ]
jobs:
test:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
ruby: [ '2.7', '3.0' ]
ruby: [ '3.3', '3.4' ]
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
- name: Check out repository
uses: actions/checkout@v3

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake

- name: Run checks
run: bundle exec rake

- name: Upload artifacts
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: artifacts-${{ matrix.ruby }}-${{ matrix.os }}
path: artifacts/**
33 changes: 33 additions & 0 deletions .github/workflows/gem-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Ruby Gem

on:
release:
types: [published]

jobs:
build:
name: Build + Publish
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- uses: actions/checkout@v3

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true

- name: Publish to RubyGems
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
gem build *.gemspec
gem push *.gem
env:
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
178 changes: 177 additions & 1 deletion .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ AllCops:
- 'out/**/*'
# Exclude vendor files in GitHub build
- 'vendor/**/*'
SuggestExtensions:
rubocop-rails: false

# Allow one line around block body (Layout/EmptyLines will still disallow two or more)
Layout/EmptyLinesAroundBlockBody:
Expand Down Expand Up @@ -181,7 +183,7 @@ Lint/TripleQuotes: # (new in 1.9)
Enabled: true
Style/IfWithBooleanLiteralBranches: # (new in 1.9)
Enabled: true
Gemspec/DateAssignment: # (new in 1.10)
Gemspec/DeprecatedAttributeAssignment: # (new in 1.10)
Enabled: true
Style/HashConversion: # (new in 1.10)
Enabled: true
Expand Down Expand Up @@ -234,3 +236,177 @@ Style/MapToHash: # new in 1.24
Style/NestedFileDirname: # new in 1.26
Enabled: true

Gemspec/AddRuntimeDependency: # new in 1.65
Enabled: true
Gemspec/AttributeAssignment: # new in 1.77
Enabled: true
Gemspec/DevelopmentDependencies: # new in 1.44
Enabled: false
Layout/LineContinuationLeadingSpace: # new in 1.31
Enabled: true
Layout/LineContinuationSpacing: # new in 1.31
Enabled: true
Lint/ArrayLiteralInRegexp: # new in 1.71
Enabled: true
Lint/ConstantOverwrittenInRescue: # new in 1.31
Enabled: true
Lint/ConstantReassignment: # new in 1.70
Enabled: true
Lint/CopDirectiveSyntax: # new in 1.72
Enabled: true
Lint/DuplicateMagicComment: # new in 1.37
Enabled: true
Lint/DuplicateMatchPattern: # new in 1.50
Enabled: true
Lint/DuplicateSetElement: # new in 1.67
Enabled: true
Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
Enabled: true
Lint/ItWithoutArgumentsInBlock: # new in 1.59
Enabled: true
Lint/LiteralAssignmentInCondition: # new in 1.58
Enabled: true
Lint/MixedCaseRange: # new in 1.53
Enabled: true
Lint/NonAtomicFileOperation: # new in 1.31
Enabled: true
Lint/NumericOperationWithConstantResult: # new in 1.69
Enabled: true
Lint/RedundantRegexpQuantifiers: # new in 1.53
Enabled: true
Lint/RedundantTypeConversion: # new in 1.72
Enabled: true
Lint/RefinementImportMethods: # new in 1.27
Enabled: true
Lint/RequireRangeParentheses: # new in 1.32
Enabled: true
Lint/SharedMutableDefault: # new in 1.70
Enabled: true
Lint/SuppressedExceptionInNumberConversion: # new in 1.72
Enabled: true
Lint/UnescapedBracketInRegexp: # new in 1.68
Enabled: true
Lint/UselessConstantScoping: # new in 1.72
Enabled: true
Lint/UselessDefaultValueArgument: # new in 1.76
Enabled: true
Lint/UselessDefined: # new in 1.69
Enabled: true
Lint/UselessNumericOperation: # new in 1.66
Enabled: true
Lint/UselessOr: # new in 1.76
Enabled: true
Lint/UselessRescue: # new in 1.43
Enabled: true
Metrics/CollectionLiteralLength: # new in 1.47
Enabled: true
Naming/PredicateMethod: # new in 1.76
Enabled: true
Security/CompoundHash: # new in 1.28
Enabled: true
Style/AmbiguousEndlessMethodDefinition: # new in 1.68
Enabled: true
Style/ArrayIntersect: # new in 1.40
Enabled: true
Style/BitwisePredicate: # new in 1.68
Enabled: true
Style/CollectionQuerying: # new in 1.77
Enabled: true
Style/CombinableDefined: # new in 1.68
Enabled: true
Style/ComparableBetween: # new in 1.74
Enabled: true
Style/ComparableClamp: # new in 1.44
Enabled: true
Style/ConcatArrayLiterals: # new in 1.41
Enabled: true
Style/DataInheritance: # new in 1.49
Enabled: true
Style/DigChain: # new in 1.69
Enabled: true
Style/DirEmpty: # new in 1.48
Enabled: true
Style/EmptyHeredoc: # new in 1.32
Enabled: true
Style/EmptyStringInsideInterpolation: # new in 1.76
Enabled: true
Style/EnvHome: # new in 1.29
Enabled: true
Style/ExactRegexpMatch: # new in 1.51
Enabled: true
Style/FetchEnvVar: # new in 1.28
Enabled: true
Style/FileEmpty: # new in 1.48
Enabled: true
Style/FileNull: # new in 1.69
Enabled: true
Style/FileTouch: # new in 1.69
Enabled: true
Style/HashFetchChain: # new in 1.75
Enabled: true
Style/HashSlice: # new in 1.71
Enabled: true
Style/ItAssignment: # new in 1.70
Enabled: true
Style/ItBlockParameter: # new in 1.75
Enabled: true
Style/KeywordArgumentsMerging: # new in 1.68
Enabled: true
Style/MagicCommentFormat: # new in 1.35
Enabled: true
Style/MapCompactWithConditionalBlock: # new in 1.30
Enabled: true
Style/MapIntoArray: # new in 1.63
Enabled: true
Style/MapToSet: # new in 1.42
Enabled: true
Style/MinMaxComparison: # new in 1.42
Enabled: true
Style/ObjectThen: # new in 1.28
Enabled: true
Style/OperatorMethodCall: # new in 1.37
Enabled: true
Style/RedundantArrayConstructor: # new in 1.52
Enabled: true
Style/RedundantArrayFlatten: # new in 1.76
Enabled: true
Style/RedundantConstantBase: # new in 1.40
Enabled: true
Style/RedundantCurrentDirectoryInPath: # new in 1.53
Enabled: true
Style/RedundantDoubleSplatHashBraces: # new in 1.41
Enabled: true
Style/RedundantEach: # new in 1.38
Enabled: true
Style/RedundantFilterChain: # new in 1.52
Enabled: true
Style/RedundantFormat: # new in 1.72
Enabled: true
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
Enabled: true
Style/RedundantInitialize: # new in 1.27
Enabled: true
Style/RedundantInterpolationUnfreeze: # new in 1.66
Enabled: true
Style/RedundantLineContinuation: # new in 1.49
Enabled: true
Style/RedundantRegexpArgument: # new in 1.53
Enabled: true
Style/RedundantRegexpConstructor: # new in 1.52
Enabled: true
Style/RedundantStringEscape: # new in 1.37
Enabled: true
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
Enabled: true
Style/SafeNavigationChainLength: # new in 1.68
Enabled: true
Style/SendWithLiteralMethodName: # new in 1.64
Enabled: true
Style/SingleLineDoEndBlock: # new in 1.57
Enabled: true
Style/SuperArguments: # new in 1.64
Enabled: true
Style/SuperWithArgsParentheses: # new in 1.58
Enabled: true
Style/YAMLFileRead: # new in 1.53
Enabled: true
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.7
~> 3.3
6 changes: 4 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# 0.2.8 (next)
# 0.3.0 (2025-07-23)

- Log `HTTP_USER_AGENT`
- Update to support Ruby 3.3+ and Rails 7+ exclusively.
- Update Rubocop & Style changes.
- Log `HTTP_USER_AGENT`.

# 0.2.7 (2022-05-25)

Expand Down
7 changes: 4 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# =============================================================================
# Target: base

FROM ruby:2.7-alpine AS base
FROM ruby:3.3-alpine AS base

RUN apk --no-cache --update upgrade && \
apk --no-cache add \
Expand All @@ -12,6 +12,7 @@ RUN apk --no-cache --update upgrade && \
openssl \
tzdata \
xz-libs \
yaml-dev \
&& rm -rf /var/cache/apk/*

WORKDIR /opt/app
Expand All @@ -29,8 +30,8 @@ RUN apk --update --no-cache add \
git \
&& rm -rf /var/cache/apk/*

# The base image ships bundler 1.17.2, but we want something more recent
RUN gem install bundler -v 2.1.4
# The base image ships an older bundler, but we want something more recent
RUN gem install bundler -v 2.5.22

# Copy codebase to WORKDIR. Unlike application projects, for a gem project
# we need to do this before running `bundle install`, in order for the gem
Expand Down
27 changes: 13 additions & 14 deletions berkeley_library-logging.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -11,41 +11,40 @@ require 'berkeley_library/logging/module_info'

Gem::Specification.new do |spec|
spec.name = BerkeleyLibrary::Logging::ModuleInfo::NAME
spec.author = BerkeleyLibrary::Logging::ModuleInfo::AUTHOR
spec.email = BerkeleyLibrary::Logging::ModuleInfo::AUTHOR_EMAIL
spec.author = BerkeleyLibrary::Logging::ModuleInfo::AUTHORS
spec.email = BerkeleyLibrary::Logging::ModuleInfo::AUTHOR_EMAILS
spec.summary = BerkeleyLibrary::Logging::ModuleInfo::SUMMARY
spec.description = BerkeleyLibrary::Logging::ModuleInfo::DESCRIPTION
spec.license = BerkeleyLibrary::Logging::ModuleInfo::LICENSE
spec.version = BerkeleyLibrary::Logging::ModuleInfo::VERSION
spec.homepage = BerkeleyLibrary::Logging::ModuleInfo::HOMEPAGE

spec.files = `git ls-files -z`.split("\x0")
spec.test_files = spec.files.grep(%r{^(test|spec|features|artifacts)/})
spec.require_paths = ['lib']

spec.required_ruby_version = ">= #{ruby_version}"
spec.required_ruby_version = ruby_version

rails_version = '>= 6'
rails_version = '>= 7'

spec.add_dependency 'activesupport', rails_version
spec.add_dependency 'amazing_print', '~> 1.1'
spec.add_dependency 'colorize', '~> 0.8.1'
spec.add_dependency 'colorize', '~> 1.0'
spec.add_dependency 'lograge', '~> 0.11'
spec.add_dependency 'ougai', '~> 1.8'
spec.add_dependency 'ougai', '~> 2.0'

spec.add_development_dependency 'brakeman', '~> 4.9'
spec.add_development_dependency 'bundle-audit', '~> 0.1'
spec.add_development_dependency 'ci_reporter_rspec', '~> 1.0'
spec.add_development_dependency 'dotenv', '~> 2.7'
spec.add_development_dependency 'irb', '~> 1.2' # workaroundfor https://github.com/bundler/bundler/issues/6929
spec.add_development_dependency 'listen', '>= 3.0.5', '< 3.2'
spec.add_development_dependency 'listen', '~> 3.2'
spec.add_development_dependency 'rails', rails_version
spec.add_development_dependency 'rake', '~> 13.0'
spec.add_development_dependency 'rspec-support', '~> 3.9'
spec.add_development_dependency 'rubocop', '~> 1.26.0'
spec.add_development_dependency 'rubocop-rspec', '~> 2.4.0'
spec.add_development_dependency 'simplecov', '~> 0.21.1'
spec.add_development_dependency 'simplecov-console', '~> 0.9.1'
spec.add_development_dependency 'rspec', '~> 3.9'
spec.add_development_dependency 'rubocop', '~> 1.78.0'
spec.add_development_dependency 'rubocop-rake', '~> 0.7.1'
spec.add_development_dependency 'rubocop-rspec', '~> 3.6.0'
spec.add_development_dependency 'simplecov', '~> 0.21'
spec.add_development_dependency 'simplecov-console', '~> 0.9'
spec.add_development_dependency 'simplecov-rcov', '~> 0.2'

spec.metadata['rubygems_mfa_required'] = 'true'
Expand Down
4 changes: 2 additions & 2 deletions lib/berkeley_library/logging.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ def logger=(v)
@logger = (ensure_logger(v) unless v.nil?)
end

private

LOG_METHODS = %i[debug info warn error].freeze

private

def ensure_logger(v)
return v if (missing = LOG_METHODS.reject { |m| v.respond_to?(m) }).empty?

Expand Down
2 changes: 1 addition & 1 deletion lib/berkeley_library/logging/env.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def env
@env ||= begin
# NOTE: can't just self.env= b/c it returns the wrong value -- see
# https://stackoverflow.com/q/65226532/27358
env = (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || FALLBACK_ENV)
env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || FALLBACK_ENV
ensure_rails_env_like(env)
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/berkeley_library/logging/loggers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def default_log_file_for(config)

def ensure_log_directory
File.join(workdir, FALLBACK_LOG_DIR).tap do |log_dir|
FileUtils.mkdir(log_dir) unless File.exist?(log_dir)
FileUtils.mkdir_p(log_dir)
raise ArgumentError, "Not a directory: #{log_dir}" unless File.directory?(log_dir)
end
end
Expand Down
Loading
Loading