diff --git a/lib/with_advisory_lock.rb b/lib/with_advisory_lock.rb index a3cf4b8..75381e2 100644 --- a/lib/with_advisory_lock.rb +++ b/lib/with_advisory_lock.rb @@ -1,16 +1,15 @@ require 'with_advisory_lock/version' require 'active_support' -require_relative 'with_advisory_lock/failed_to_acquire_lock' +require 'zeitwerk' -module WithAdvisoryLock - extend ActiveSupport::Autoload +loader = Zeitwerk::Loader.for_gem +loader.inflector.inflect( + 'mysql' => 'MySQL', + 'postgresql' => 'PostgreSQL', + ) +loader.setup - autoload :Concern - autoload :Base - autoload :DatabaseAdapterSupport - autoload :Flock - autoload :MySQL, 'with_advisory_lock/mysql' - autoload :PostgreSQL, 'with_advisory_lock/postgresql' +module WithAdvisoryLock end ActiveSupport.on_load :active_record do diff --git a/lib/with_advisory_lock/base.rb b/lib/with_advisory_lock/base.rb index 19f6791..197f4d4 100644 --- a/lib/with_advisory_lock/base.rb +++ b/lib/with_advisory_lock/base.rb @@ -79,7 +79,7 @@ def stable_hashcode(input) else # Ruby MRI's String#hash is randomly seeded as of Ruby 1.9 so # make sure we use a deterministic hash. - Zlib.crc32(input.to_s) + Zlib.crc32(input.to_s, 0) end end diff --git a/lib/with_advisory_lock/concern.rb b/lib/with_advisory_lock/concern.rb index 42d566d..66587ce 100644 --- a/lib/with_advisory_lock/concern.rb +++ b/lib/with_advisory_lock/concern.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'active_support/concern' - module WithAdvisoryLock module Concern extend ActiveSupport::Concern @@ -15,9 +13,7 @@ def with_advisory_lock(lock_name, options = {}, &block) def with_advisory_lock!(lock_name, options = {}, &block) result = with_advisory_lock_result(lock_name, options, &block) - unless result.lock_was_acquired? - raise WithAdvisoryLock::FailedToAcquireLock, lock_name - end + raise WithAdvisoryLock::FailedToAcquireLock, lock_name unless result.lock_was_acquired? result.result end diff --git a/lib/with_advisory_lock/failed_to_acquire_lock.rb b/lib/with_advisory_lock/failed_to_acquire_lock.rb index 19e8c01..83ccc5e 100644 --- a/lib/with_advisory_lock/failed_to_acquire_lock.rb +++ b/lib/with_advisory_lock/failed_to_acquire_lock.rb @@ -1,7 +1,9 @@ +# frozen_string_literal: true + module WithAdvisoryLock class FailedToAcquireLock < StandardError def initialize(lock_name) super("Failed to acquire lock #{lock_name}") end end -end \ No newline at end of file +end diff --git a/with_advisory_lock.gemspec b/with_advisory_lock.gemspec index 148298c..84bf423 100644 --- a/with_advisory_lock.gemspec +++ b/with_advisory_lock.gemspec @@ -25,6 +25,7 @@ Gem::Specification.new do |spec| spec.metadata['changelog_uri'] = 'https://github.com/ClosureTree/with_advisory_lock/blob/master/CHANGELOG.md' spec.add_runtime_dependency 'activerecord', '>= 6.1' + spec.add_runtime_dependency 'zeitwerk', '>= 2.6' spec.add_development_dependency 'appraisal' spec.add_development_dependency 'maxitest'