immoscout 2.0.0 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e32ead7d9ecbf21a77e5d6fa74e2139732c2bc45c6d717dbe2e15fc4d83decc
4
- data.tar.gz: a09b9b72b25701703612f2ae1e6c0fff912713616e34a0e8fcee993c4324a41e
3
+ metadata.gz: e7df9feb0754bbf3962e1eaf15042858af96b068e7ea75001d043cffbb9fd16a
4
+ data.tar.gz: d67beb5020f876f3da93d84905dea17a72a3bc162a5d7d35a560025e0ee182dc
5
5
  SHA512:
6
- metadata.gz: 4dd40628d8b6f0e70840cb0020e527fe34b397c49fa1f4fca7a2f30dbbb173ba4d336ea73cebd83661959fbe481bfca4c8735b80e6386d335050c71335b15587
7
- data.tar.gz: 5dcaa0ce884b9338208bdd43b544350da6ee775ff2434a2bb203ef1cc7c8427bb109fc9858b590dabdbdfecc148146392039f62db711bc8a80c5f16dc298b725
6
+ metadata.gz: 27de4448b1ebfa37731a6285324c4458be5ed09e1f93df7c7418911043abb57d98c72680c8a6f5767f61d01b2ce4ac80291c044423a96c6d21eacda053b814af
7
+ data.tar.gz: db5bb3ddaae29f3462bf073585009f954040ee0e61af8a1a1642a932798cbfa88747e9312e57f1378f3c54c24f87b0bed2f336425c0baebc85701167d09112b1
@@ -16,7 +16,7 @@ jobs:
16
16
  docs:
17
17
  name: Release the gem
18
18
  runs-on: ubuntu-22.04
19
- timeout-minutes: 5
19
+ timeout-minutes: 10
20
20
  steps:
21
21
  - uses: actions/checkout@v4
22
22
 
@@ -19,7 +19,7 @@ jobs:
19
19
  fail-fast: false
20
20
  matrix:
21
21
  ruby: ['3.2', '3.3', '3.4']
22
- rails: ['7.1', '7.2', '8.0']
22
+ rails: ['7.1', '7.2', '8.0', '8.1']
23
23
  env:
24
24
  BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
25
25
  steps:
data/.rubocop.yml CHANGED
@@ -13,7 +13,7 @@ AllCops:
13
13
  SuggestExtensions: false
14
14
  DisplayCopNames: true
15
15
  TargetRubyVersion: 3.2
16
- TargetRailsVersion: 6.1
16
+ TargetRailsVersion: 7.1
17
17
  Exclude:
18
18
  - bin/**/*
19
19
  - vendor/**/*
data/Appraisals CHANGED
@@ -11,3 +11,7 @@ end
11
11
  appraise 'rails-8.0' do
12
12
  gem 'activesupport', '~> 8.0.0'
13
13
  end
14
+
15
+ appraise 'rails-8.1' do
16
+ gem 'activesupport', '~> 8.1.0'
17
+ end
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  * TODO: Replace this bullet point with an actual description of a change.
4
4
 
5
+ ### 2.1.0 (23 October 2025)
6
+
7
+ * Dropped Reek ([#23](https://github.com/hausgold/immoscout/pull/23))
8
+ * Added support for Rails 8.1 ([#24](https://github.com/hausgold/immoscout/pull/24))
9
+ * Switched from `ActiveSupport::Configurable` to a custom implementation based
10
+ on `ActiveSupport::OrderedOptions` ([#25](https://github.com/hausgold/immoscout/pull/25))
11
+
5
12
  ### 2.0.0 (28 June 2025)
6
13
 
7
14
  * Corrected some RuboCop glitches ([#21](https://github.com/hausgold/immoscout/pull/21))
data/Gemfile CHANGED
@@ -10,7 +10,7 @@ gemspec
10
10
  # Development dependencies
11
11
  gem 'appraisal', '~> 2.4'
12
12
  gem 'bundler', '~> 2.6'
13
- gem 'countless', '~> 2.0'
13
+ gem 'countless', '~> 2.2'
14
14
  gem 'factory_bot', '~> 6.2'
15
15
  gem 'guard-rspec', '~> 4.7'
16
16
  gem 'railties', '>= 7.1'
@@ -4,7 +4,7 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.4"
6
6
  gem "bundler", "~> 2.6"
7
- gem "countless", "~> 2.0"
7
+ gem "countless", "~> 2.2"
8
8
  gem "factory_bot", "~> 6.2"
9
9
  gem "guard-rspec", "~> 4.7"
10
10
  gem "railties", ">= 7.1"
@@ -4,7 +4,7 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.4"
6
6
  gem "bundler", "~> 2.6"
7
- gem "countless", "~> 2.0"
7
+ gem "countless", "~> 2.2"
8
8
  gem "factory_bot", "~> 6.2"
9
9
  gem "guard-rspec", "~> 4.7"
10
10
  gem "railties", ">= 7.1"
@@ -4,7 +4,7 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.4"
6
6
  gem "bundler", "~> 2.6"
7
- gem "countless", "~> 2.0"
7
+ gem "countless", "~> 2.2"
8
8
  gem "factory_bot", "~> 6.2"
9
9
  gem "guard-rspec", "~> 4.7"
10
10
  gem "railties", ">= 7.1"
@@ -0,0 +1,27 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "factory_bot", "~> 6.2"
9
+ gem "guard-rspec", "~> 4.7"
10
+ gem "railties", ">= 7.1"
11
+ gem "rake", "~> 13.0"
12
+ gem "redcarpet", "~> 3.5"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rspec-json_expectations", "~> 2.2"
15
+ gem "rubocop"
16
+ gem "rubocop-rails"
17
+ gem "rubocop-rspec"
18
+ gem "simplecov", ">= 0.22"
19
+ gem "terminal-table", "~> 3.0"
20
+ gem "timecop", ">= 0.9.6"
21
+ gem "vcr", "~> 6.0"
22
+ gem "webmock", "~> 3.18"
23
+ gem "yard", ">= 0.9.28"
24
+ gem "yard-activesupport-concern", ">= 0.0.1"
25
+ gem "activesupport", "~> 8.1.0"
26
+
27
+ gemspec path: "../"
@@ -2,8 +2,46 @@
2
2
 
3
3
  module Immoscout
4
4
  # The configuration object of the +immoscout+ gem.
5
- class Configuration
6
- include ActiveSupport::Configurable
5
+ class Configuration < ActiveSupport::OrderedOptions
6
+ # Track our configurations settings (+Symbol+ keys) and their defaults as
7
+ # lazy-loaded +Proc+'s values
8
+ class_attribute :defaults,
9
+ instance_reader: true,
10
+ instance_writer: false,
11
+ instance_predicate: false,
12
+ default: {}
13
+
14
+ # Create a new +Configuration+ instance with all settings populated with
15
+ # their respective defaults.
16
+ #
17
+ # @param args [Hash{Symbol => Mixed}] additional settings which
18
+ # overwrite the defaults
19
+ # @return [Configuration] the new configuration instance
20
+ def initialize(**args)
21
+ super()
22
+ defaults.each { |key, default| self[key] = instance_exec(&default) }
23
+ merge!(**args)
24
+ end
25
+
26
+ # A simple DSL method to define new configuration accessors/settings with
27
+ # their defaults. The defaults can be retrieved with
28
+ # +Configuration.defaults+ or +Configuration.new.defaults+.
29
+ #
30
+ # @param name [Symbol, String] the name of the configuration
31
+ # accessor/setting
32
+ # @param default [Mixed, nil] a non-lazy-loaded static value, serving as a
33
+ # default value for the setting
34
+ # @param block [Proc] when given, the default value will be lazy-loaded
35
+ # (result of the Proc)
36
+ def self.config_accessor(name, default = nil, &block)
37
+ # Save the given configuration accessor default value
38
+ defaults[name.to_sym] = block || -> { default }
39
+
40
+ # Compile reader/writer methods so we don't have to go through
41
+ # +ActiveSupport::OrderedOptions#method_missing+.
42
+ define_method(name) { self[name] }
43
+ define_method("#{name}=") { |value| self[name] = value }
44
+ end
7
45
 
8
46
  config_accessor(:consumer_key) { ENV.fetch('IMMOSCOUT_CONSUMER_KEY', nil) }
9
47
  config_accessor(:consumer_secret) do
@@ -13,8 +13,6 @@ module Immoscout
13
13
  {}
14
14
  end
15
15
 
16
- # :reek:ControlParameter - standard stuff, reek!
17
- # :reek:TooManyStatements
18
16
  def method_missing(method_name, *arguments, &)
19
17
  if method_name =~ /build_(\w+)/
20
18
  match = Regexp.last_match(1).intern
@@ -32,7 +30,6 @@ module Immoscout
32
30
  self.class.properties.keys.sort
33
31
  end
34
32
 
35
- # :reek:BooleanParameter - standard stuff, reek!
36
33
  def respond_to_missing?(method_name, include_private = false)
37
34
  method_name.to_s.start_with?('build_') || super
38
35
  end
@@ -3,7 +3,7 @@
3
3
  # The gem version details.
4
4
  module Immoscout
5
5
  # The version of the +immoscout+ gem
6
- VERSION = '2.0.0'
6
+ VERSION = '2.1.0'
7
7
 
8
8
  class << self
9
9
  # Returns the version of gem as a string.
data/lib/immoscout.rb CHANGED
@@ -2,8 +2,10 @@
2
2
 
3
3
  require 'zeitwerk'
4
4
  require 'logger'
5
+ require 'active_support'
5
6
  require 'active_support/concern'
6
- require 'active_support/configurable'
7
+ require 'active_support/ordered_options'
8
+ require 'active_support/core_ext/class/attribute'
7
9
  require 'active_support/core_ext/hash'
8
10
  require 'active_support/core_ext/module'
9
11
  require 'singleton'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immoscout
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcus Geissler
@@ -116,6 +116,7 @@ files:
116
116
  - gemfiles/rails_7.1.gemfile
117
117
  - gemfiles/rails_7.2.gemfile
118
118
  - gemfiles/rails_8.0.gemfile
119
+ - gemfiles/rails_8.1.gemfile
119
120
  - immoscout.gemspec
120
121
  - lib/immoscout.rb
121
122
  - lib/immoscout/api/client.rb