pricehubble 0.4.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c029e790cdf1ec21949212567077f03271666ca6332a3b84a902a262ae6625e
4
- data.tar.gz: 3df77cae40f611c456283a23e215a840ce88936748aefb9c729a205c61ebd7d8
3
+ metadata.gz: 3f1ed8db96f0efa1edf1011116a4269e35a075b9b162b13d68a4e6c08d81d9cb
4
+ data.tar.gz: 00b1e03b3c0f76e577c2fdea0108c03d9743a6bfe73c00d71b4183e2f9b0aa05
5
5
  SHA512:
6
- metadata.gz: 6421682c63aa011271eca9931587badf8fbf7ad1c64aadbfa9bccef42dd170e68dd3dee5ed9f8e965ee47e2055e0fdca398ed355370bd91c8a28e045fbc26729
7
- data.tar.gz: ebe7f75db3e959c48074e0c74092ca6a9a94789645aba5051ab1a972fb8be66295092fe1a07f62a680f53c977152724e8aef31ae06e32afc316b47092e46c66f
6
+ metadata.gz: 8822ad28938b426cd42242cbeebacf6c4697eb17187343c3478e415a9ade67add42c13d0c01bd378efaab3f0252d6e7916e7ce9a48055b5bb9060553467bffb3
7
+ data.tar.gz: 0fcc8813a696d6c64e9dc8ba70676ee129621189bee80da841c3d02b96f6587fa99a4d72bf312dc300fa484798d801c46152543d7136c9a7880dfd34baeae6bc
@@ -9,16 +9,17 @@ concurrency:
9
9
  jobs:
10
10
  docs:
11
11
  name: Build gem documentation
12
- runs-on: ubuntu-20.04
12
+ runs-on: ubuntu-22.04
13
13
  timeout-minutes: 5
14
14
  steps:
15
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v3
16
16
 
17
17
  - name: Install the correct Ruby version
18
18
  uses: ruby/setup-ruby@v1
19
19
  with:
20
20
  ruby-version: 2.5
21
21
  bundler-cache: true
22
+ rubygems: '3.3.26'
22
23
 
23
24
  - name: Prepare the virtual environment
24
25
  uses: hausgold/actions/ci@master
@@ -13,23 +13,24 @@ concurrency:
13
13
  jobs:
14
14
  test:
15
15
  name: 'Test the gem (Ruby ${{ matrix.ruby }}, Rails ${{ matrix.rails }})'
16
- runs-on: ubuntu-20.04
16
+ runs-on: ubuntu-22.04
17
17
  timeout-minutes: 5
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby: [2.5, 2.6, 2.7]
22
- rails: [5.2, '6.0']
21
+ ruby: ['2.5', '2.7']
22
+ rails: ['5.2']
23
23
  env:
24
24
  BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
25
25
  steps:
26
- - uses: actions/checkout@v2
26
+ - uses: actions/checkout@v3
27
27
 
28
28
  - name: Install the correct Ruby version
29
29
  uses: ruby/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
32
  bundler-cache: true
33
+ rubygems: '3.3.26'
33
34
 
34
35
  - name: Prepare the virtual environment
35
36
  uses: hausgold/actions/ci@master
@@ -46,7 +47,7 @@ jobs:
46
47
 
47
48
  trigger-docs:
48
49
  name: Trigger the documentation upload
49
- runs-on: ubuntu-20.04
50
+ runs-on: ubuntu-22.04
50
51
  timeout-minutes: 2
51
52
  needs: test
52
53
  if: github.ref == 'refs/heads/master'
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
+ --backtrace
2
+ --force-color
1
3
  --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml CHANGED
@@ -1,19 +1,24 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-rails
2
4
 
3
5
  Rails:
4
6
  Enabled: true
5
7
 
6
- Documentation:
8
+ Style/Documentation:
7
9
  Enabled: true
8
10
 
9
11
  AllCops:
12
+ NewCops: enable
13
+ SuggestExtensions: false
10
14
  DisplayCopNames: true
11
15
  TargetRubyVersion: 2.5
16
+ TargetRailsVersion: 5.2
12
17
  Exclude:
13
18
  - bin/**/*
14
19
  - vendor/**/*
15
20
  - build/**/*
16
- - gemfiles/vendor/**/*
21
+ - gemfiles/**/*
17
22
 
18
23
  Metrics/BlockLength:
19
24
  Exclude:
@@ -27,6 +32,10 @@ Metrics/BlockLength:
27
32
  - lib/pricehubble/client/request/**/*.rb
28
33
  - lib/pricehubble/client/response/**/*.rb
29
34
 
35
+ # MFA is not yet enabled for our gems yet.
36
+ Gemspec/RequireMFA:
37
+ Enabled: false
38
+
30
39
  # Document all the things.
31
40
  Style/DocumentationMethod:
32
41
  Enabled: true
@@ -63,5 +72,20 @@ Lint/ShadowingOuterLocalVariable:
63
72
 
64
73
  # We stay at 80 characters per line.
65
74
  # See: https://rubystyle.guide/#max-line-length
66
- Metrics/LineLength:
75
+ Layout/LineLength:
67
76
  Max: 80
77
+
78
+ # We use memoized helpers all over the place to construct inputs and output
79
+ # which can be customized at nested contexts easily.
80
+ RSpec/MultipleMemoizedHelpers:
81
+ Enabled: false
82
+
83
+ # That are false-positives because we implement similar working
84
+ # helpers for associations like +.has_one+.
85
+ Rails/ReflectionClassName:
86
+ Enabled: false
87
+
88
+ # A very nice feature, but it does not work for non-method code parts atow.
89
+ # So just disabling it for now.
90
+ Style/DocumentDynamicEvalDefinition:
91
+ Enabled: false
data/.simplecov CHANGED
@@ -1,3 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov-html'
4
+ require 'simplecov_json_formatter'
5
+
6
+ SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(
7
+ [
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ SimpleCov::Formatter::JSONFormatter
10
+ ]
11
+ )
12
+
1
13
  SimpleCov.start 'test_frameworks' do
2
14
  add_filter '/vendor/bundle/'
3
15
  end
data/Appraisals CHANGED
@@ -1,13 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  appraise 'rails-5.2' do
4
- gem 'activemodel', '~> 5.2.2'
5
- gem 'activesupport', '~> 5.2.2'
6
- gem 'railties', '~> 5.2.2'
7
- end
8
-
9
- appraise 'rails-6.0' do
10
- gem 'activemodel', '~> 6.0.0'
11
- gem 'activesupport', '~> 6.0.0'
12
- gem 'railties', '~> 6.0.0'
4
+ gem 'activemodel', '~> 5.2.0'
5
+ gem 'activesupport', '~> 5.2.0'
13
6
  end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ### 1.0.0
2
+
3
+ * Bundler >= 2.3 is from now on required as minimal version (#5)
4
+ * Dropped support for Ruby < 2.5 (#5)
5
+ * Dropped support for Rails < 5.2 (#5)
6
+ * Updated all development/runtime gems to their latest
7
+ Ruby 2.5 compatible version (#5)
8
+ * [Breaking Change] The `sanitize` argument of the
9
+ `PriceHubble::BaseEntity#attributes(sanitize = false)` method has changed to
10
+ a keyword argument `PriceHubble::BaseEntity#attributes(sanitize: false)` (#5)
11
+
1
12
  ### 0.4.2
2
13
 
3
14
  * Migrated to Github Actions
data/Dockerfile CHANGED
@@ -2,7 +2,7 @@ FROM hausgold/ruby:2.5
2
2
  MAINTAINER Hermann Mayer <hermann.mayer@hausgold.de>
3
3
 
4
4
  # Update system gem
5
- RUN gem update --system
5
+ RUN gem update --system '3.3.26'
6
6
 
7
7
  # Install system packages and the latest bundler
8
8
  RUN apt-get update -yqqq && \
@@ -11,8 +11,7 @@ RUN apt-get update -yqqq && \
11
11
  ca-certificates \
12
12
  bash-completion inotify-tools && \
13
13
  echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && /usr/sbin/locale-gen && \
14
- gem install bundler -v '~> 2.0' --no-document --no-prerelease && \
15
- gem install bundler -v '~> 1.0' --no-document --no-prerelease
14
+ gem install bundler -v '~> 2.3.0' --no-document --no-prerelease
16
15
 
17
16
  # Add new web user
18
17
  RUN mkdir /app && \
data/Guardfile ADDED
@@ -0,0 +1,44 @@
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[lib spec]).select do |d|
8
+ if Dir.exist?(d)
9
+ d
10
+ else
11
+ UI.warning("Directory #{d} does not exist")
12
+ end
13
+ end
14
+
15
+ ## Note: if you are using the `directories` clause above and you are not
16
+ ## watching the project directory ('.'), then you will want to move
17
+ ## the Guardfile to a watched dir and symlink it back, e.g.
18
+ #
19
+ # $ mkdir config
20
+ # $ mv Guardfile config/
21
+ # $ ln -s config/Guardfile .
22
+ #
23
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
24
+
25
+ # NOTE: The cmd option is now required due to the increasing number of ways
26
+ # rspec may be run, below are examples of the most common uses.
27
+ # * bundler: 'bundle exec rspec'
28
+ # * bundler binstubs: 'bin/rspec'
29
+ # * spring: 'bin/rspec' (This will use spring if running and you have
30
+ # installed the spring binstubs per the docs)
31
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
32
+ # * 'just' rspec: 'rspec'
33
+
34
+ guard :rspec, cmd: 'bundle exec rspec' do
35
+ watch('spec/spec_helper.rb') { 'spec' }
36
+ watch(%r{^lib/pricehubble.rb}) { 'spec' }
37
+ watch(%r{^spec/.+_spec\.rb$})
38
+ watch(%r{^lib/pricehubble/([^\\]+)\.rb$}) do |m|
39
+ "spec/pricehubble/#{m[1]}_spec.rb"
40
+ end
41
+ watch(%r{^lib/pricehubble/([^\\]+)/(.*)\.rb$}) do |m|
42
+ "spec/#{m[1]}/#{m[2]}_spec.rb"
43
+ end
44
+ end
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 HAUSGOLD | talocasa GmbH
3
+ Copyright (c) 2023 HAUSGOLD | talocasa GmbH
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/Makefile CHANGED
@@ -9,6 +9,7 @@ SHELL := bash
9
9
  # Environment switches
10
10
  MAKE_ENV ?= docker
11
11
  COMPOSE_RUN_SHELL_FLAGS ?= --rm
12
+ BASH_RUN_SHELL_FLAGS ?=
12
13
 
13
14
  # Directories
14
15
  VENDOR_DIR ?= vendor/bundle
@@ -26,12 +27,14 @@ RM ?= rm
26
27
  XARGS ?= xargs
27
28
 
28
29
  # Container binaries
29
- BUNDLE ?= bundle
30
30
  APPRAISAL ?= appraisal
31
+ BUNDLE ?= bundle
31
32
  GEM ?= gem
33
+ GUARD ?= guard
32
34
  RAKE ?= rake
33
- YARD ?= yard
35
+ RSPEC ?= rspec
34
36
  RUBOCOP ?= rubocop
37
+ YARD ?= yard
35
38
 
36
39
  # Files
37
40
  GEMFILES ?= $(subst _,-,$(patsubst $(GEMFILES_DIR)/%.gemfile,%,\
@@ -45,7 +48,8 @@ define run-shell
45
48
  $(COMPOSE) run $(COMPOSE_RUN_SHELL_FLAGS) \
46
49
  -e LANG=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 \
47
50
  -e HOME=/home/web -e BUNDLE_APP_CONFIG=/app/.bundle \
48
- -u `$(ID) -u` test bash -c 'sleep 0.1; echo; $(1)'
51
+ -u `$(ID) -u` test \
52
+ bash $(BASH_RUN_SHELL_FLAGS) -c 'sleep 0.1; echo; $(1)'
49
53
  endef
50
54
  else ifeq ($(MAKE_ENV),baremetal)
51
55
  define run-shell
@@ -62,6 +66,7 @@ all:
62
66
  #
63
67
  # test Run the whole test suite
64
68
  # test-style Test the code styles
69
+ # watch Watch for code changes and rerun the test suite
65
70
  #
66
71
  # docs Generate the Ruby documentation of the library
67
72
  # stats Print the code statistics (library and test suite)
@@ -71,27 +76,37 @@ all:
71
76
  # shell Run an interactive shell on the container
72
77
  # shell-irb Run an interactive IRB shell on the container
73
78
 
79
+ .interactive:
80
+ @$(eval BASH_RUN_SHELL_FLAGS = --login)
81
+
74
82
  install:
75
83
  # Install the dependencies
76
84
  @$(MKDIR) -p $(VENDOR_DIR)
77
85
  @$(call run-shell,$(BUNDLE) check || $(BUNDLE) install --path $(VENDOR_DIR))
78
- @$(call run-shell,GEM_HOME=vendor/bundle/ruby/$${RUBY_MAJOR}.0 \
79
- $(GEM) install bundler -v "~> 1.0")
80
86
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) install)
81
87
 
82
88
  update:
83
89
  # Install the dependencies
84
90
  @$(MKDIR) -p $(VENDOR_DIR)
91
+ @$(call run-shell,$(BUNDLE) update)
85
92
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) update)
86
93
 
87
- test:
94
+ watch: install .interactive
95
+ # Watch for code changes and rerun the test suite
96
+ @$(call run-shell,$(BUNDLE) exec $(GUARD))
97
+
98
+ test: \
99
+ test-specs \
100
+ test-style
101
+
102
+ test-specs:
88
103
  # Run the whole test suite
89
104
  @$(call run-shell,$(BUNDLE) exec $(RAKE) stats spec)
90
105
 
91
106
  $(TEST_GEMFILES): GEMFILE=$(@:test-%=%)
92
107
  $(TEST_GEMFILES):
93
108
  # Run the whole test suite ($(GEMFILE))
94
- @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RAKE))
109
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RSPEC))
95
110
 
96
111
  test-style: \
97
112
  test-style-ruby
@@ -106,8 +121,8 @@ clean:
106
121
  @$(RM) -rf $(VENDOR_DIR)/Gemfile.lock
107
122
  @$(RM) -rf $(GEMFILES_DIR)/vendor
108
123
  @$(RM) -rf $(GEMFILES_DIR)/*.lock
109
- @$(RM) -rf pkg
110
- @$(RM) -rf coverage
124
+ @$(RM) -rf .bundle .yardoc coverage pkg Gemfile.lock doc/api \
125
+ .rspec_status
111
126
 
112
127
  clean-containers:
113
128
  # Clean running containers
@@ -118,7 +133,7 @@ endif
118
133
  clean-images:
119
134
  # Clean build images
120
135
  ifeq ($(MAKE_ENV),docker)
121
- @-$(DOCKER) images | $(GREP) pricehubble \
136
+ @-$(DOCKER) images | $(GREP) $(shell basename "`pwd`") \
122
137
  | $(AWK) '{ print $$3 }' \
123
138
  | $(XARGS) -rn1 $(DOCKER) rmi -f
124
139
  endif
data/Rakefile CHANGED
@@ -2,84 +2,30 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
- require 'rails/code_statistics'
6
- require 'pp'
5
+ require 'countless/rake_tasks'
7
6
 
8
7
  RSpec::Core::RakeTask.new(:spec)
9
8
 
10
9
  task default: :spec
11
10
 
12
- # Load some railties tasks
13
- load 'rails/tasks/statistics.rake'
14
- load 'rails/tasks/annotations.rake'
15
-
16
- # Clear the default statistics directory constant
17
- #
18
- # rubocop:disable Style/MutableConstant because we define it
19
- Object.send(:remove_const, :STATS_DIRECTORIES)
20
- ::STATS_DIRECTORIES = []
21
- # rubocop:enable Style/MutableConstant
22
-
23
- # Monkey patch the Rails +CodeStatistics+ class to support configurable
24
- # patterns per path. This is reuqired to support top-level only file matches.
25
- class CodeStatistics
26
- DEFAULT_PATTERN = /^(?!\.).*?\.(rb|js|coffee|rake)$/.freeze
27
-
28
- # Pass the possible +pattern+ argument down to the
29
- # +calculate_directory_statistics+ method call.
30
- def calculate_statistics
31
- Hash[@pairs.map do |pair|
32
- [pair.first, calculate_directory_statistics(*pair[1..-1])]
33
- end]
34
- end
35
-
36
- # Match the pattern against the individual file name and the relative file
37
- # path. This allows top-level only matches.
38
- def calculate_directory_statistics(directory, pattern = DEFAULT_PATTERN)
39
- stats = CodeStatisticsCalculator.new
40
-
41
- Dir.foreach(directory) do |file_name|
42
- path = "#{directory}/#{file_name}"
43
-
44
- if File.directory?(path) && (/^\./ !~ file_name)
45
- stats.add(calculate_directory_statistics(path, pattern))
46
- elsif file_name =~ pattern || path =~ pattern
47
- stats.add_by_file_path(path)
48
- end
49
- end
50
-
51
- stats
52
- end
53
- end
54
-
55
11
  # Configure all code statistics directories
56
- vendors = [
57
- [:unshift, 'Top-levels', 'lib', %r{lib(/pricehubble)?/[^/]+\.rb$}],
58
- [:unshift, 'Top-levels specs', 'spec',
59
- %r{spec/pricehubble(_spec\.rb|/[^/]+\.rb$)}],
60
-
61
- [:unshift, 'Clients', 'lib/pricehubble/client'],
62
- [:unshift, 'Clients specs', 'spec/client'],
63
-
64
- [:unshift, 'Entities', 'lib/pricehubble/entity'],
65
- [:unshift, 'Entities specs', 'spec/entity'],
66
-
67
- [:unshift, 'Utilities', 'lib/pricehubble/utils'],
68
- [:unshift, 'Utilities specs', 'spec/utils'],
69
-
70
- [:unshift, 'Instrumentation', 'lib/pricehubble/instrumentation'],
71
- [:unshift, 'Core Extensions', 'lib/pricehubble/core_ext']
72
- ].reverse
73
-
74
- vendors.each do |method, type, dir, pattern|
75
- ::STATS_DIRECTORIES.send(method, [type, dir, pattern].compact)
76
- ::CodeStatistics::TEST_TYPES << type if type.include? 'specs'
77
- end
78
-
79
- # Setup annotations
80
- ENV['SOURCE_ANNOTATION_DIRECTORIES'] = 'spec,doc'
81
-
82
- desc 'Enumerate all annotations'
83
- task :notes do
84
- SourceAnnotationExtractor.enumerate '@?OPTIMIZE|@?FIXME|@?TODO', tag: true
12
+ Countless.configure do |config|
13
+ config.stats_base_directories = [
14
+ { name: 'Top-levels', dir: 'lib',
15
+ pattern: %r{/lib(/pricehubble)?/[^/]+\.rb$} },
16
+ { name: 'Top-levels specs', test: true, dir: 'spec',
17
+ pattern: %r{/spec(/pricehubble)?/[^/]+_spec\.rb$} },
18
+ { name: 'Clients', pattern: 'lib/pricehubble/client/**/*.rb' },
19
+ { name: 'Clients specs', test: true,
20
+ pattern: 'spec/client/**/*_spec.rb' },
21
+ { name: 'Entities', pattern: 'lib/pricehubble/entity/**/*.rb' },
22
+ { name: 'Entities specs', test: true,
23
+ pattern: 'spec/entity/**/*_spec.rb' },
24
+ { name: 'Utilities', pattern: 'lib/pricehubble/utils/**/*.rb' },
25
+ { name: 'Utilities specs', test: true,
26
+ pattern: 'spec/utils/**/*_spec.rb' },
27
+ { name: 'Instrumentation',
28
+ pattern: 'lib/pricehubble/instrumentation/**/*.rb' },
29
+ { name: 'Core Extensions', pattern: 'lib/pricehubble/core_ext/**/*.rb' }
30
+ ]
85
31
  end
@@ -1,11 +1,8 @@
1
- # frozen_string_literal: true
2
-
3
1
  # This file was generated by Appraisal
4
2
 
5
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
6
4
 
7
- gem 'activemodel', '~> 5.2.2'
8
- gem 'activesupport', '~> 5.2.2'
9
- gem 'railties', '~> 5.2.2'
5
+ gem "activemodel", "~> 5.2.0"
6
+ gem "activesupport", "~> 5.2.0"
10
7
 
11
- gemspec path: '../'
8
+ gemspec path: "../"
@@ -65,8 +65,7 @@ module PriceHubble
65
65
  # @param entity [PriceHubble::Dossier] the entity to delete
66
66
  # @param args [Hash{Symbol => Mixed}] additional arguments
67
67
  #
68
- # rubocop:disable Metrics/MethodLength because thats the bare minimum
69
- # rubocop:disable Metrics/AbcSize because the decission
68
+ # rubocop:disable Metrics/MethodLength because thats the bare minimumbecause the decission
70
69
  # handling is quite complex
71
70
  def delete_dossier(entity, **args)
72
71
  res = connection.delete do |req|
@@ -82,9 +81,8 @@ module PriceHubble
82
81
  successful?(res)
83
82
  end
84
83
  end
85
- # rubocop:enable Metrics/MethodLength
86
- # rubocop:enable Metrics/AbcSize
87
84
 
85
+ # rubocop:enable Metrics/MethodLength
88
86
  # Update a dossier entity.
89
87
  #
90
88
  # TODO: Implement this.
@@ -18,7 +18,7 @@ module PriceHubble
18
18
  # Perform the data compaction and the hash key transformation,
19
19
  # when the body is available and a hash
20
20
  env[:body] = body.deep_compact.deep_camelize_keys \
21
- if body&.is_a?(Hash)
21
+ if body.is_a?(Hash)
22
22
 
23
23
  @app.call(env)
24
24
  end
@@ -8,15 +8,15 @@ module PriceHubble
8
8
  module Request
9
9
  extend ActiveSupport::Concern
10
10
 
11
- included do
12
- # A common HTTP content type to symbol
13
- # mapping for correct header settings.
14
- CONTENT_TYPE = {
15
- json: 'application/json',
16
- multipart: 'multipart/form-data',
17
- url_encoded: 'application/x-www-form-urlencoded'
18
- }.freeze
11
+ # A common HTTP content type to symbol
12
+ # mapping for correct header settings.
13
+ CONTENT_TYPE = {
14
+ json: 'application/json',
15
+ multipart: 'multipart/form-data',
16
+ url_encoded: 'application/x-www-form-urlencoded'
17
+ }.freeze
19
18
 
19
+ included do
20
20
  # Use the configured identity to authenticate the given request.
21
21
  #
22
22
  # @param req [Faraday::Request] the request to manipulate
@@ -12,8 +12,9 @@ module PriceHubble
12
12
  # or +nil+ on error
13
13
  #
14
14
  # rubocop:disable Metrics/MethodLength because of the request handling
15
+ # rubocop:disable Metrics/AbcSize dito
15
16
  def property_value(request, **args)
16
- data = request.attributes(true)
17
+ data = request.attributes(sanitize: true)
17
18
  res = connection.post do |req|
18
19
  req.path = '/api/v1/valuation/property_value'
19
20
  req.body = data
@@ -27,6 +28,7 @@ module PriceHubble
27
28
  end
28
29
  end
29
30
  # rubocop:enable Metrics/MethodLength
31
+ # rubocop:enable Metrics/AbcSize
30
32
 
31
33
  # Map and assign the valuation response to our local
32
34
  # +PriceHubble::Valuation+ representation. While taking care of the
@@ -42,6 +44,7 @@ module PriceHubble
42
44
  #
43
45
  # rubocop:disable Metrics/MethodLength because of the request
44
46
  # to response mapping
47
+ # rubocop:disable Metrics/AbcSize dito
45
48
  def assign_valuations(data, request)
46
49
  lambda do
47
50
  # valuations[i][j] contains the valuation for property i on date j
@@ -60,6 +63,7 @@ module PriceHubble
60
63
  end
61
64
  end
62
65
  # rubocop:enable Metrics/MethodLength
66
+ # rubocop:enable Metrics/AbcSize
63
67
 
64
68
  # Generate bang method variants
65
69
  bangers :property_value
@@ -38,8 +38,8 @@ class Hash
38
38
  def deep_compact_in_object(object)
39
39
  case object
40
40
  when Hash
41
- object = object.compact.each_with_object({}) do |(key, value), result|
42
- result[key] = deep_compact_in_object(value)
41
+ object = object.compact.transform_values do |value|
42
+ deep_compact_in_object(value)
43
43
  end
44
44
  object.empty? ? nil : object.compact
45
45
  when Array
@@ -55,6 +55,7 @@ module PriceHubble
55
55
  #
56
56
  # @param child_class [Class] the child class which inherits us
57
57
  def inherited(child_class)
58
+ super
58
59
  match = ->(sym) { sym.to_s.start_with? 'inherited_setup_' }
59
60
  trigger = ->(sym) { send(sym, child_class) }
60
61
  methods.select(&match).each(&trigger)
@@ -45,8 +45,8 @@ module PriceHubble
45
45
  key = opts[:from]
46
46
 
47
47
  # Initialize an object on the association, even without data
48
- if opts[:initialize] && send(attribute).nil?
49
- hash[key] = {} unless hash.key? key
48
+ if opts[:initialize] && send(attribute).nil? && !(hash.key? key)
49
+ hash[key] = {}
50
50
  end
51
51
 
52
52
  return [struct, hash] unless hash.key? key
@@ -92,8 +92,8 @@ module PriceHubble
92
92
  key = opts[:fallback_from] if opts[:fallback_from] && !hash.key?(key)
93
93
 
94
94
  # Initialize an empty array on the association
95
- if opts[:initialize] && send(attribute).nil?
96
- hash[key] = [] unless hash.key? key
95
+ if opts[:initialize] && send(attribute).nil? && !(hash.key? key)
96
+ hash[key] = []
97
97
  end
98
98
 
99
99
  return [struct, hash] unless hash.key? key
@@ -156,6 +156,7 @@ module PriceHubble
156
156
  associations[entity] = opts
157
157
  # Generate getters and setters
158
158
  attr_accessor entity
159
+
159
160
  # Add the entity to the tracked attributes if it should be persisted
160
161
  tracked_attr entity if opts[:persist]
161
162
  end
@@ -187,6 +188,7 @@ module PriceHubble
187
188
  associations[entity] = opts
188
189
  # Generate getters and setters
189
190
  attr_accessor entity
191
+
190
192
  # Add the entity to the tracked attributes if it should be persisted
191
193
  tracked_attr entity if opts[:persist]
192
194
  end
@@ -27,7 +27,7 @@ module PriceHubble
27
27
  #
28
28
  # rubocop:disable Metrics/MethodLength because of the
29
29
  # key/value sanitization handling
30
- def attributes(sanitize = false)
30
+ def attributes(sanitize: false)
31
31
  attribute_names.each_with_object({}) do |key, memo|
32
32
  reader = key
33
33
 
@@ -43,8 +43,8 @@ module PriceHubble
43
43
  memo[key.to_s] = result
44
44
  end
45
45
  end
46
- # rubocop:enable Metrics/MethodLength
47
46
 
47
+ # rubocop:enable Metrics/MethodLength
48
48
  # A wrapper for the +ActiveModel#assign_attributes+ method with support
49
49
  # for unmapped attributes. These attributes are put into the
50
50
  # +_unmapped+ struct and all the known attributes are assigned like
@@ -73,20 +73,26 @@ module PriceHubble
73
73
  # @param obj [Mixed] the object to resolve its attributes
74
74
  # @param sanitize [Boolean] whenever to sanitize the data for transport
75
75
  # @return [Mixed] the attribute(s) data
76
- def resolve_attributes(obj, sanitize = false)
76
+ #
77
+ # rubocop:disable Metrics/MethodLength because thats the pure minimum
78
+ def resolve_attributes(obj, sanitize: false)
77
79
  if obj.respond_to? :attributes
78
80
  obj = if obj.method(:attributes).arity == 1
79
- obj.attributes(sanitize)
81
+ obj.attributes(sanitize: sanitize)
80
82
  else
81
83
  obj.attributes
82
84
  end
83
85
  end
84
86
 
85
- obj = obj.map { |elem| resolve_attributes(elem, sanitize) } \
86
- if obj.is_a? Array
87
+ if obj.is_a? Array
88
+ obj = obj.map do |elem|
89
+ resolve_attributes(elem, sanitize: sanitize)
90
+ end
91
+ end
87
92
 
88
93
  obj
89
94
  end
95
+ # rubocop:enable Metrics/MethodLength
90
96
 
91
97
  # Explicitly convert the given struct to an +RecursiveOpenStruct+ and a
92
98
  # deep symbolized key copy for further usage.
@@ -144,6 +150,7 @@ module PriceHubble
144
150
  self.attribute_names += args
145
151
  # Define getters/setters
146
152
  attr_reader(*args)
153
+
147
154
  args.each do |arg|
148
155
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
149
156
  def #{arg}=(value)
@@ -43,7 +43,7 @@ module PriceHubble
43
43
  #
44
44
  # @return [Array<Hash{String => Mixed}>] the sanitized properties
45
45
  def sanitize_attr_properties
46
- properties.map { |prop| { property: prop.attributes(true) } }
46
+ properties.map { |prop| { property: prop.attributes(sanitize: true) } }
47
47
  end
48
48
 
49
49
  # Perform the property valuation request.
@@ -6,6 +6,7 @@ module PriceHubble
6
6
  # rubocop:disable Style/ClassVars because we split module code
7
7
  module Identity
8
8
  extend ActiveSupport::Concern
9
+
9
10
  class_methods do
10
11
  # Reset the current identity.
11
12
  def reset_identity!
@@ -49,7 +49,7 @@ module PriceHubble
49
49
  def initialize(on_error: :fail)
50
50
  @on_error = on_error
51
51
  @bang_proc = -> { StandardError.new }
52
- @fail_proc = @good_proc = -> { nil }
52
+ @fail_proc = @good_proc = -> {}
53
53
  end
54
54
 
55
55
  # Register a new error (bang) way. Requires a block.
@@ -1,6 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # The gem version details.
3
4
  module PriceHubble
4
5
  # The version of the +price-hubble+ gem
5
- VERSION = '0.4.2'
6
+ VERSION = '1.0.0'
7
+
8
+ class << self
9
+ # Returns the version of gem as a string.
10
+ #
11
+ # @return [String] the gem version as string
12
+ def version
13
+ VERSION
14
+ end
15
+
16
+ # Returns the version of the gem as a +Gem::Version+.
17
+ #
18
+ # @return [Gem::Version] the gem version as object
19
+ def gem_version
20
+ Gem::Version.new VERSION
21
+ end
22
+ end
6
23
  end
data/lib/pricehubble.rb CHANGED
@@ -13,7 +13,6 @@ require 'active_model'
13
13
  require 'recursive-open-struct'
14
14
  require 'faraday'
15
15
  require 'faraday_middleware'
16
- require 'pp'
17
16
 
18
17
  # Load polyfills if needed
19
18
  require 'pricehubble/core_ext/hash'
data/pricehubble.gemspec CHANGED
@@ -5,45 +5,56 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'pricehubble/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'pricehubble'
9
- spec.version = PriceHubble::VERSION
10
- spec.authors = ['Hermann Mayer']
11
- spec.email = ['hermann.mayer92@gmail.com']
8
+ spec.name = 'pricehubble'
9
+ spec.version = PriceHubble::VERSION
10
+ spec.authors = ['Hermann Mayer']
11
+ spec.email = ['hermann.mayer92@gmail.com']
12
12
 
13
- spec.summary = 'Ruby client for the PriceHubble REST API'
14
- spec.description = 'Ruby client for the PriceHubble REST API'
15
- spec.homepage = 'https://github.com/hausgold/pricehubble'
13
+ spec.license = 'MIT'
14
+ spec.summary = 'Ruby client for the PriceHubble REST API'
15
+ spec.description = 'Ruby client for the PriceHubble REST API'
16
16
 
17
- spec.required_ruby_version = '~> 2.5'
17
+ base_uri = "https://github.com/hausgold/#{spec.name}"
18
+ spec.metadata = {
19
+ 'homepage_uri' => base_uri,
20
+ 'source_code_uri' => base_uri,
21
+ 'changelog_uri' => "#{base_uri}/blob/master/CHANGELOG.md",
22
+ 'bug_tracker_uri' => "#{base_uri}/issues",
23
+ 'documentation_uri' => "https://www.rubydoc.info/gems/#{spec.name}"
24
+ }
18
25
 
19
26
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
27
  f.match(%r{^(test|spec|features)/})
21
28
  end
22
- spec.bindir = 'exe'
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+
30
+ spec.bindir = 'exe'
31
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
32
  spec.require_paths = ['lib']
25
33
 
26
- spec.add_runtime_dependency 'activemodel', '>= 5.2.0'
27
- spec.add_runtime_dependency 'activesupport', '>= 5.2.0'
34
+ spec.required_ruby_version = '>= 2.5'
35
+
36
+ spec.add_runtime_dependency 'activemodel', '>= 5.2'
37
+ spec.add_runtime_dependency 'activesupport', '>= 5.2'
28
38
  spec.add_runtime_dependency 'faraday', '~> 1.0'
29
39
  spec.add_runtime_dependency 'faraday_middleware', '~> 1.0'
30
40
  spec.add_runtime_dependency 'recursive-open-struct', '~> 1.1'
31
41
 
32
- spec.add_development_dependency 'appraisal'
33
- spec.add_development_dependency 'bundler', '>= 1.16', '< 3'
34
- spec.add_development_dependency 'factory_bot', '~> 4.11'
35
- spec.add_development_dependency 'railties', '>= 4.2.0', '< 6.1'
36
- spec.add_development_dependency 'rake', '~> 10.0'
37
- spec.add_development_dependency 'rdoc', '~> 6.1'
38
- spec.add_development_dependency 'redcarpet', '~> 3.4'
39
- spec.add_development_dependency 'rspec', '~> 3.0'
40
- spec.add_development_dependency 'rubocop', '~> 0.63.1'
41
- spec.add_development_dependency 'rubocop-rspec', '~> 1.31'
42
- spec.add_development_dependency 'simplecov', '< 0.18'
43
- spec.add_development_dependency 'terminal-table', '~> 1.8'
44
- spec.add_development_dependency 'timecop', '~> 0.9.1'
45
- spec.add_development_dependency 'vcr', '~> 3.0'
46
- spec.add_development_dependency 'webmock', '~> 3.5'
47
- spec.add_development_dependency 'yard', '~> 0.9.18'
48
- spec.add_development_dependency 'yard-activesupport-concern', '~> 0.0.1'
42
+ spec.add_development_dependency 'appraisal', '~> 2.4'
43
+ spec.add_development_dependency 'bundler', '~> 2.3'
44
+ spec.add_development_dependency 'countless', '~> 1.1'
45
+ spec.add_development_dependency 'factory_bot', '~> 6.2'
46
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
47
+ spec.add_development_dependency 'rake', '~> 13.0'
48
+ spec.add_development_dependency 'redcarpet', '~> 3.5'
49
+ spec.add_development_dependency 'rspec', '~> 3.12'
50
+ spec.add_development_dependency 'rubocop', '~> 1.28'
51
+ spec.add_development_dependency 'rubocop-rails', '~> 2.14'
52
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.10'
53
+ spec.add_development_dependency 'simplecov', '>= 0.22'
54
+ spec.add_development_dependency 'terminal-table', '~> 3.0'
55
+ spec.add_development_dependency 'timecop', '>= 0.9.6'
56
+ spec.add_development_dependency 'vcr', '~> 6.0'
57
+ spec.add_development_dependency 'webmock', '~> 3.18'
58
+ spec.add_development_dependency 'yard', '>= 0.9.28'
59
+ spec.add_development_dependency 'yard-activesupport-concern', '>= 0.0.1'
49
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pricehubble
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Mayer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-15 00:00:00.000000000 Z
11
+ date: 2023-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.0
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 5.2.0
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 5.2.0
33
+ version: '5.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 5.2.0
40
+ version: '5.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -84,250 +84,252 @@ dependencies:
84
84
  name: appraisal
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '2.4'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '2.4'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '1.16'
104
- - - "<"
101
+ - - "~>"
105
102
  - !ruby/object:Gem::Version
106
- version: '3'
103
+ version: '2.3'
107
104
  type: :development
108
105
  prerelease: false
109
106
  version_requirements: !ruby/object:Gem::Requirement
110
107
  requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: '1.16'
114
- - - "<"
108
+ - - "~>"
115
109
  - !ruby/object:Gem::Version
116
- version: '3'
110
+ version: '2.3'
117
111
  - !ruby/object:Gem::Dependency
118
- name: factory_bot
112
+ name: countless
119
113
  requirement: !ruby/object:Gem::Requirement
120
114
  requirements:
121
115
  - - "~>"
122
116
  - !ruby/object:Gem::Version
123
- version: '4.11'
117
+ version: '1.1'
124
118
  type: :development
125
119
  prerelease: false
126
120
  version_requirements: !ruby/object:Gem::Requirement
127
121
  requirements:
128
122
  - - "~>"
129
123
  - !ruby/object:Gem::Version
130
- version: '4.11'
124
+ version: '1.1'
131
125
  - !ruby/object:Gem::Dependency
132
- name: railties
126
+ name: factory_bot
133
127
  requirement: !ruby/object:Gem::Requirement
134
128
  requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: 4.2.0
138
- - - "<"
129
+ - - "~>"
139
130
  - !ruby/object:Gem::Version
140
- version: '6.1'
131
+ version: '6.2'
141
132
  type: :development
142
133
  prerelease: false
143
134
  version_requirements: !ruby/object:Gem::Requirement
144
135
  requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- version: 4.2.0
148
- - - "<"
136
+ - - "~>"
149
137
  - !ruby/object:Gem::Version
150
- version: '6.1'
138
+ version: '6.2'
151
139
  - !ruby/object:Gem::Dependency
152
- name: rake
140
+ name: guard-rspec
153
141
  requirement: !ruby/object:Gem::Requirement
154
142
  requirements:
155
143
  - - "~>"
156
144
  - !ruby/object:Gem::Version
157
- version: '10.0'
145
+ version: '4.7'
158
146
  type: :development
159
147
  prerelease: false
160
148
  version_requirements: !ruby/object:Gem::Requirement
161
149
  requirements:
162
150
  - - "~>"
163
151
  - !ruby/object:Gem::Version
164
- version: '10.0'
152
+ version: '4.7'
165
153
  - !ruby/object:Gem::Dependency
166
- name: rdoc
154
+ name: rake
167
155
  requirement: !ruby/object:Gem::Requirement
168
156
  requirements:
169
157
  - - "~>"
170
158
  - !ruby/object:Gem::Version
171
- version: '6.1'
159
+ version: '13.0'
172
160
  type: :development
173
161
  prerelease: false
174
162
  version_requirements: !ruby/object:Gem::Requirement
175
163
  requirements:
176
164
  - - "~>"
177
165
  - !ruby/object:Gem::Version
178
- version: '6.1'
166
+ version: '13.0'
179
167
  - !ruby/object:Gem::Dependency
180
168
  name: redcarpet
181
169
  requirement: !ruby/object:Gem::Requirement
182
170
  requirements:
183
171
  - - "~>"
184
172
  - !ruby/object:Gem::Version
185
- version: '3.4'
173
+ version: '3.5'
186
174
  type: :development
187
175
  prerelease: false
188
176
  version_requirements: !ruby/object:Gem::Requirement
189
177
  requirements:
190
178
  - - "~>"
191
179
  - !ruby/object:Gem::Version
192
- version: '3.4'
180
+ version: '3.5'
193
181
  - !ruby/object:Gem::Dependency
194
182
  name: rspec
195
183
  requirement: !ruby/object:Gem::Requirement
196
184
  requirements:
197
185
  - - "~>"
198
186
  - !ruby/object:Gem::Version
199
- version: '3.0'
187
+ version: '3.12'
200
188
  type: :development
201
189
  prerelease: false
202
190
  version_requirements: !ruby/object:Gem::Requirement
203
191
  requirements:
204
192
  - - "~>"
205
193
  - !ruby/object:Gem::Version
206
- version: '3.0'
194
+ version: '3.12'
207
195
  - !ruby/object:Gem::Dependency
208
196
  name: rubocop
209
197
  requirement: !ruby/object:Gem::Requirement
210
198
  requirements:
211
199
  - - "~>"
212
200
  - !ruby/object:Gem::Version
213
- version: 0.63.1
201
+ version: '1.28'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.28'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rubocop-rails
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '2.14'
214
216
  type: :development
215
217
  prerelease: false
216
218
  version_requirements: !ruby/object:Gem::Requirement
217
219
  requirements:
218
220
  - - "~>"
219
221
  - !ruby/object:Gem::Version
220
- version: 0.63.1
222
+ version: '2.14'
221
223
  - !ruby/object:Gem::Dependency
222
224
  name: rubocop-rspec
223
225
  requirement: !ruby/object:Gem::Requirement
224
226
  requirements:
225
227
  - - "~>"
226
228
  - !ruby/object:Gem::Version
227
- version: '1.31'
229
+ version: '2.10'
228
230
  type: :development
229
231
  prerelease: false
230
232
  version_requirements: !ruby/object:Gem::Requirement
231
233
  requirements:
232
234
  - - "~>"
233
235
  - !ruby/object:Gem::Version
234
- version: '1.31'
236
+ version: '2.10'
235
237
  - !ruby/object:Gem::Dependency
236
238
  name: simplecov
237
239
  requirement: !ruby/object:Gem::Requirement
238
240
  requirements:
239
- - - "<"
241
+ - - ">="
240
242
  - !ruby/object:Gem::Version
241
- version: '0.18'
243
+ version: '0.22'
242
244
  type: :development
243
245
  prerelease: false
244
246
  version_requirements: !ruby/object:Gem::Requirement
245
247
  requirements:
246
- - - "<"
248
+ - - ">="
247
249
  - !ruby/object:Gem::Version
248
- version: '0.18'
250
+ version: '0.22'
249
251
  - !ruby/object:Gem::Dependency
250
252
  name: terminal-table
251
253
  requirement: !ruby/object:Gem::Requirement
252
254
  requirements:
253
255
  - - "~>"
254
256
  - !ruby/object:Gem::Version
255
- version: '1.8'
257
+ version: '3.0'
256
258
  type: :development
257
259
  prerelease: false
258
260
  version_requirements: !ruby/object:Gem::Requirement
259
261
  requirements:
260
262
  - - "~>"
261
263
  - !ruby/object:Gem::Version
262
- version: '1.8'
264
+ version: '3.0'
263
265
  - !ruby/object:Gem::Dependency
264
266
  name: timecop
265
267
  requirement: !ruby/object:Gem::Requirement
266
268
  requirements:
267
- - - "~>"
269
+ - - ">="
268
270
  - !ruby/object:Gem::Version
269
- version: 0.9.1
271
+ version: 0.9.6
270
272
  type: :development
271
273
  prerelease: false
272
274
  version_requirements: !ruby/object:Gem::Requirement
273
275
  requirements:
274
- - - "~>"
276
+ - - ">="
275
277
  - !ruby/object:Gem::Version
276
- version: 0.9.1
278
+ version: 0.9.6
277
279
  - !ruby/object:Gem::Dependency
278
280
  name: vcr
279
281
  requirement: !ruby/object:Gem::Requirement
280
282
  requirements:
281
283
  - - "~>"
282
284
  - !ruby/object:Gem::Version
283
- version: '3.0'
285
+ version: '6.0'
284
286
  type: :development
285
287
  prerelease: false
286
288
  version_requirements: !ruby/object:Gem::Requirement
287
289
  requirements:
288
290
  - - "~>"
289
291
  - !ruby/object:Gem::Version
290
- version: '3.0'
292
+ version: '6.0'
291
293
  - !ruby/object:Gem::Dependency
292
294
  name: webmock
293
295
  requirement: !ruby/object:Gem::Requirement
294
296
  requirements:
295
297
  - - "~>"
296
298
  - !ruby/object:Gem::Version
297
- version: '3.5'
299
+ version: '3.18'
298
300
  type: :development
299
301
  prerelease: false
300
302
  version_requirements: !ruby/object:Gem::Requirement
301
303
  requirements:
302
304
  - - "~>"
303
305
  - !ruby/object:Gem::Version
304
- version: '3.5'
306
+ version: '3.18'
305
307
  - !ruby/object:Gem::Dependency
306
308
  name: yard
307
309
  requirement: !ruby/object:Gem::Requirement
308
310
  requirements:
309
- - - "~>"
311
+ - - ">="
310
312
  - !ruby/object:Gem::Version
311
- version: 0.9.18
313
+ version: 0.9.28
312
314
  type: :development
313
315
  prerelease: false
314
316
  version_requirements: !ruby/object:Gem::Requirement
315
317
  requirements:
316
- - - "~>"
318
+ - - ">="
317
319
  - !ruby/object:Gem::Version
318
- version: 0.9.18
320
+ version: 0.9.28
319
321
  - !ruby/object:Gem::Dependency
320
322
  name: yard-activesupport-concern
321
323
  requirement: !ruby/object:Gem::Requirement
322
324
  requirements:
323
- - - "~>"
325
+ - - ">="
324
326
  - !ruby/object:Gem::Version
325
327
  version: 0.0.1
326
328
  type: :development
327
329
  prerelease: false
328
330
  version_requirements: !ruby/object:Gem::Requirement
329
331
  requirements:
330
- - - "~>"
332
+ - - ">="
331
333
  - !ruby/object:Gem::Version
332
334
  version: 0.0.1
333
335
  description: Ruby client for the PriceHubble REST API
@@ -350,6 +352,7 @@ files:
350
352
  - Dockerfile
351
353
  - Envfile
352
354
  - Gemfile
355
+ - Guardfile
353
356
  - LICENSE
354
357
  - Makefile
355
358
  - README.md
@@ -369,7 +372,6 @@ files:
369
372
  - doc/examples/simple_property_valuations.rb
370
373
  - docker-compose.yml
371
374
  - gemfiles/rails_5.2.gemfile
372
- - gemfiles/rails_6.0.gemfile
373
375
  - lib/price_hubble.rb
374
376
  - lib/pricehubble.rb
375
377
  - lib/pricehubble/client.rb
@@ -418,16 +420,22 @@ files:
418
420
  - lib/pricehubble/utils/decision.rb
419
421
  - lib/pricehubble/version.rb
420
422
  - pricehubble.gemspec
421
- homepage: https://github.com/hausgold/pricehubble
422
- licenses: []
423
- metadata: {}
423
+ homepage:
424
+ licenses:
425
+ - MIT
426
+ metadata:
427
+ homepage_uri: https://github.com/hausgold/pricehubble
428
+ source_code_uri: https://github.com/hausgold/pricehubble
429
+ changelog_uri: https://github.com/hausgold/pricehubble/blob/master/CHANGELOG.md
430
+ bug_tracker_uri: https://github.com/hausgold/pricehubble/issues
431
+ documentation_uri: https://www.rubydoc.info/gems/pricehubble
424
432
  post_install_message:
425
433
  rdoc_options: []
426
434
  require_paths:
427
435
  - lib
428
436
  required_ruby_version: !ruby/object:Gem::Requirement
429
437
  requirements:
430
- - - "~>"
438
+ - - ">="
431
439
  - !ruby/object:Gem::Version
432
440
  version: '2.5'
433
441
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -436,7 +444,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
436
444
  - !ruby/object:Gem::Version
437
445
  version: '0'
438
446
  requirements: []
439
- rubygems_version: 3.2.16
447
+ rubygems_version: 3.3.8
440
448
  signing_key:
441
449
  specification_version: 4
442
450
  summary: Ruby client for the PriceHubble REST API
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This file was generated by Appraisal
4
-
5
- source 'https://rubygems.org'
6
-
7
- gem 'activemodel', '~> 6.0.0'
8
- gem 'activesupport', '~> 6.0.0'
9
- gem 'railties', '~> 6.0.0'
10
-
11
- gemspec path: '../'