wayfarer 0.4.7 → 0.4.8

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.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/.env +17 -0
  3. data/.github/workflows/lint.yaml +8 -6
  4. data/.github/workflows/release.yaml +4 -3
  5. data/.github/workflows/tests.yaml +5 -14
  6. data/.gitignore +2 -2
  7. data/.rubocop.yml +31 -0
  8. data/.vale.ini +6 -3
  9. data/Dockerfile +3 -2
  10. data/Gemfile +21 -0
  11. data/Gemfile.lock +233 -128
  12. data/Rakefile +7 -0
  13. data/docker-compose.yml +13 -14
  14. data/docs/guides/callbacks.md +3 -1
  15. data/docs/guides/configuration.md +10 -35
  16. data/docs/guides/development.md +67 -0
  17. data/docs/guides/handlers.md +7 -7
  18. data/docs/guides/jobs.md +54 -11
  19. data/docs/guides/networking/custom_adapters.md +31 -10
  20. data/docs/guides/pages.md +24 -22
  21. data/docs/guides/routing.md +116 -34
  22. data/docs/guides/tasks.md +30 -10
  23. data/docs/guides/tutorial.md +23 -17
  24. data/docs/guides/user_agents.md +11 -9
  25. data/lib/wayfarer/base.rb +9 -8
  26. data/lib/wayfarer/batch_completion.rb +18 -14
  27. data/lib/wayfarer/callbacks.rb +14 -14
  28. data/lib/wayfarer/cli/route_printer.rb +78 -96
  29. data/lib/wayfarer/cli.rb +12 -30
  30. data/lib/wayfarer/gc.rb +6 -1
  31. data/lib/wayfarer/kv.rb +28 -0
  32. data/lib/wayfarer/middleware/chain.rb +7 -1
  33. data/lib/wayfarer/middleware/content_type.rb +20 -15
  34. data/lib/wayfarer/middleware/dedup.rb +9 -3
  35. data/lib/wayfarer/middleware/dispatch.rb +7 -2
  36. data/lib/wayfarer/middleware/normalize.rb +4 -12
  37. data/lib/wayfarer/middleware/router.rb +1 -1
  38. data/lib/wayfarer/middleware/uri_parser.rb +4 -3
  39. data/lib/wayfarer/networking/context.rb +12 -1
  40. data/lib/wayfarer/networking/ferrum.rb +1 -4
  41. data/lib/wayfarer/networking/follow.rb +2 -1
  42. data/lib/wayfarer/networking/pool.rb +12 -7
  43. data/lib/wayfarer/networking/selenium.rb +15 -7
  44. data/lib/wayfarer/page.rb +0 -2
  45. data/lib/wayfarer/parsing/xml.rb +1 -1
  46. data/lib/wayfarer/parsing.rb +2 -5
  47. data/lib/wayfarer/redis/barrier.rb +15 -2
  48. data/lib/wayfarer/redis/counter.rb +1 -2
  49. data/lib/wayfarer/routing/dsl.rb +166 -31
  50. data/lib/wayfarer/routing/hash_stack.rb +33 -0
  51. data/lib/wayfarer/routing/matchers/custom.rb +8 -5
  52. data/lib/wayfarer/routing/matchers/{suffix.rb → empty_params.rb} +2 -6
  53. data/lib/wayfarer/routing/matchers/host.rb +15 -9
  54. data/lib/wayfarer/routing/matchers/path.rb +11 -33
  55. data/lib/wayfarer/routing/matchers/query.rb +41 -17
  56. data/lib/wayfarer/routing/matchers/result.rb +12 -0
  57. data/lib/wayfarer/routing/matchers/scheme.rb +13 -5
  58. data/lib/wayfarer/routing/matchers/url.rb +13 -5
  59. data/lib/wayfarer/routing/path_consumer.rb +130 -0
  60. data/lib/wayfarer/routing/path_finder.rb +151 -23
  61. data/lib/wayfarer/routing/result.rb +1 -1
  62. data/lib/wayfarer/routing/root_route.rb +14 -2
  63. data/lib/wayfarer/routing/route.rb +71 -14
  64. data/lib/wayfarer/routing/serializable.rb +28 -0
  65. data/lib/wayfarer/routing/sub_route.rb +53 -0
  66. data/lib/wayfarer/routing/target_route.rb +17 -1
  67. data/lib/wayfarer/stringify.rb +1 -2
  68. data/lib/wayfarer/task.rb +3 -5
  69. data/lib/wayfarer/uri/normalization.rb +120 -0
  70. data/lib/wayfarer.rb +50 -10
  71. data/mise.toml +2 -0
  72. data/mkdocs.yml +8 -17
  73. data/rake/lint.rake +0 -96
  74. data/rake/release.rake +5 -11
  75. data/rake/tests.rake +8 -4
  76. data/requirements.txt +1 -1
  77. data/spec/factories/job.rb +8 -0
  78. data/spec/factories/middleware.rb +2 -2
  79. data/spec/factories/path_finder.rb +11 -0
  80. data/spec/factories/redis.rb +19 -0
  81. data/spec/factories/task.rb +39 -1
  82. data/spec/spec_helpers.rb +50 -57
  83. data/spec/support/active_job_helpers.rb +8 -0
  84. data/spec/support/integration_helpers.rb +21 -0
  85. data/spec/support/redis_helpers.rb +9 -0
  86. data/spec/support/test_app.rb +64 -43
  87. data/spec/{base_spec.rb → wayfarer/base_spec.rb} +32 -36
  88. data/spec/wayfarer/batch_completion_spec.rb +142 -0
  89. data/spec/wayfarer/cli/job_spec.rb +88 -0
  90. data/spec/wayfarer/cli/routing_spec.rb +322 -0
  91. data/spec/{cli → wayfarer/cli}/version_spec.rb +1 -1
  92. data/spec/wayfarer/gc_spec.rb +29 -0
  93. data/spec/{handler_spec.rb → wayfarer/handler_spec.rb} +1 -3
  94. data/spec/{integration → wayfarer/integration}/callbacks_spec.rb +9 -6
  95. data/spec/wayfarer/integration/content_type_spec.rb +37 -0
  96. data/spec/wayfarer/integration/custom_routing_spec.rb +51 -0
  97. data/spec/{integration → wayfarer/integration}/gc_spec.rb +9 -13
  98. data/spec/{integration → wayfarer/integration}/handler_spec.rb +9 -10
  99. data/spec/{integration → wayfarer/integration}/page_spec.rb +8 -6
  100. data/spec/{integration → wayfarer/integration}/params_spec.rb +4 -4
  101. data/spec/{integration → wayfarer/integration}/parsing_spec.rb +7 -33
  102. data/spec/wayfarer/integration/retry_spec.rb +112 -0
  103. data/spec/{integration → wayfarer/integration}/stage_spec.rb +5 -5
  104. data/spec/{middleware → wayfarer/middleware}/batch_completion_spec.rb +4 -5
  105. data/spec/{middleware → wayfarer/middleware}/chain_spec.rb +20 -15
  106. data/spec/{middleware → wayfarer/middleware}/content_type_spec.rb +18 -21
  107. data/spec/{middleware → wayfarer/middleware}/controller_spec.rb +22 -20
  108. data/spec/wayfarer/middleware/dedup_spec.rb +66 -0
  109. data/spec/wayfarer/middleware/normalize_spec.rb +32 -0
  110. data/spec/{middleware → wayfarer/middleware}/router_spec.rb +18 -20
  111. data/spec/{middleware → wayfarer/middleware}/stage_spec.rb +11 -10
  112. data/spec/wayfarer/middleware/uri_parser_spec.rb +63 -0
  113. data/spec/{middleware → wayfarer/middleware}/user_agent_spec.rb +34 -32
  114. data/spec/wayfarer/networking/capybara_spec.rb +13 -0
  115. data/spec/{networking → wayfarer/networking}/context_spec.rb +46 -38
  116. data/spec/wayfarer/networking/ferrum_spec.rb +13 -0
  117. data/spec/{networking → wayfarer/networking}/follow_spec.rb +9 -4
  118. data/spec/wayfarer/networking/http_spec.rb +12 -0
  119. data/spec/{networking → wayfarer/networking}/pool_spec.rb +11 -9
  120. data/spec/wayfarer/networking/selenium_spec.rb +12 -0
  121. data/spec/{networking → wayfarer/networking}/strategy.rb +33 -54
  122. data/spec/{page_spec.rb → wayfarer/page_spec.rb} +3 -3
  123. data/spec/{parsing → wayfarer/parsing}/json_spec.rb +1 -1
  124. data/spec/{parsing/xml_spec.rb → wayfarer/parsing/xml_parse_spec.rb} +4 -3
  125. data/spec/{redis → wayfarer/redis}/barrier_spec.rb +5 -4
  126. data/spec/wayfarer/redis/counter_spec.rb +34 -0
  127. data/spec/{redis → wayfarer/redis}/pool_spec.rb +3 -2
  128. data/spec/{routing → wayfarer/routing}/dsl_spec.rb +12 -22
  129. data/spec/wayfarer/routing/hash_stack_spec.rb +63 -0
  130. data/spec/wayfarer/routing/integration_spec.rb +101 -0
  131. data/spec/wayfarer/routing/matchers/custom_spec.rb +39 -0
  132. data/spec/wayfarer/routing/matchers/host_spec.rb +56 -0
  133. data/spec/wayfarer/routing/matchers/matcher.rb +17 -0
  134. data/spec/wayfarer/routing/matchers/path_spec.rb +43 -0
  135. data/spec/wayfarer/routing/matchers/query_spec.rb +123 -0
  136. data/spec/wayfarer/routing/matchers/scheme_spec.rb +45 -0
  137. data/spec/wayfarer/routing/matchers/url_spec.rb +33 -0
  138. data/spec/wayfarer/routing/path_consumer_spec.rb +123 -0
  139. data/spec/wayfarer/routing/path_finder_spec.rb +409 -0
  140. data/spec/wayfarer/routing/root_route_spec.rb +51 -0
  141. data/spec/wayfarer/routing/route_spec.rb +74 -0
  142. data/spec/wayfarer/routing/sub_route_spec.rb +103 -0
  143. data/spec/wayfarer/uri/normalization_spec.rb +98 -0
  144. data/spec/wayfarer_spec.rb +2 -2
  145. data/wayfarer.gemspec +17 -28
  146. metadata +768 -246
  147. data/.rbenv-gemsets +0 -1
  148. data/.ruby-version +0 -1
  149. data/RELEASING.md +0 -17
  150. data/docs/cookbook/user_agent.md +0 -7
  151. data/docs/design.md +0 -36
  152. data/docs/guides/jobs/error_handling.md +0 -40
  153. data/docs/reference/configuration.md +0 -36
  154. data/spec/batch_completion_spec.rb +0 -104
  155. data/spec/cli/job_spec.rb +0 -74
  156. data/spec/cli/routing_spec.rb +0 -101
  157. data/spec/fixtures/dummy_job.rb +0 -9
  158. data/spec/gc_spec.rb +0 -17
  159. data/spec/integration/content_type_spec.rb +0 -145
  160. data/spec/integration/routing_spec.rb +0 -18
  161. data/spec/middleware/dedup_spec.rb +0 -71
  162. data/spec/middleware/dispatch_spec.rb +0 -59
  163. data/spec/middleware/normalize_spec.rb +0 -60
  164. data/spec/middleware/uri_parser_spec.rb +0 -53
  165. data/spec/networking/capybara_spec.rb +0 -12
  166. data/spec/networking/ferrum_spec.rb +0 -12
  167. data/spec/networking/http_spec.rb +0 -12
  168. data/spec/networking/selenium_spec.rb +0 -12
  169. data/spec/redis/counter_spec.rb +0 -44
  170. data/spec/routing/integration_spec.rb +0 -110
  171. data/spec/routing/matchers/custom_spec.rb +0 -31
  172. data/spec/routing/matchers/host_spec.rb +0 -49
  173. data/spec/routing/matchers/path_spec.rb +0 -43
  174. data/spec/routing/matchers/query_spec.rb +0 -137
  175. data/spec/routing/matchers/scheme_spec.rb +0 -25
  176. data/spec/routing/matchers/suffix_spec.rb +0 -41
  177. data/spec/routing/matchers/uri_spec.rb +0 -27
  178. data/spec/routing/path_finder_spec.rb +0 -33
  179. data/spec/routing/root_route_spec.rb +0 -29
  180. data/spec/routing/route_spec.rb +0 -43
  181. data/docs/{reference → guides}/cli.md +0 -0
  182. data/spec/{stringify_spec.rb → wayfarer/stringify_spec.rb} +2 -2
  183. /data/spec/{task_spec.rb → wayfarer/task_spec.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98db45c7ede4e4949b4a18c5560477a64982e78f6640e388de2809b5cab02a27
4
- data.tar.gz: dc69bf066254600c4b9021234bf4623edd039c87d5cb79166bb7ef174ebe644b
3
+ metadata.gz: 677b57fadbc7e01a8adfbc5c2280dfe81aa0de2fce3b778281acc33d42a9a8f3
4
+ data.tar.gz: 22c93784493e7a551c19c1f070defa7de8a99d14e8ee740cf866d62dbb9542b9
5
5
  SHA512:
6
- metadata.gz: cc001901a22a9d9a84aa16b3946cbc7e0954db1b20a16d3c105411039273138c15ffa60bec57503aa4b73c39b39fde78ad7600697a3f461620316ed05583e91d
7
- data.tar.gz: 0be5255180603e2e9d7171aec9f54008b21e1e4ebf6c3e7069535a9d01d59e620aef4c171a84b5d46a754e45043f1ec95c2672847fc03231cff880a3796e48cf
6
+ metadata.gz: 2c232c7760c3914f56b742ddbcdd7f9719e98a02f0019ffc14ec9f883499f63aaa9a92afb95c241b4d79a8369f8fb53727c9d7d5d694b79786a6d90753a9bc3b
7
+ data.tar.gz: 680a7e146e41d3eaf9c8bc48362a9ae8d59dd94baf26b436ee14e47329cfd924c83299aef5f59f10c2e1227f8e08170984885341e79222345ab9bbb460da0f1c
data/.env ADDED
@@ -0,0 +1,17 @@
1
+ CI=true
2
+ WAYFARER_PORT=9876
3
+
4
+ REDIS_IMAGE=redis
5
+ REDIS_VERSION=latest
6
+
7
+ CHROME_IMAGE=browserless/chrome
8
+ CHROME_VERSION=latest
9
+ CHROME_PORT=3000
10
+
11
+ FIREFOX_IMAGE=selenium/standalone-firefox
12
+ FIREFOX_VERSION=latest
13
+ FIREFOX_PORT=4444
14
+
15
+ DOCS_IMAGE=squidfunk/mkdocs-material
16
+ DOCS_VERSION=latest
17
+ DOCS_PORT=8000
@@ -4,8 +4,6 @@ on:
4
4
  push:
5
5
  branches:
6
6
  - '*'
7
- env:
8
- CI: true
9
7
 
10
8
  jobs:
11
9
  lint:
@@ -14,12 +12,16 @@ jobs:
14
12
  - uses: actions/checkout@v2
15
13
 
16
14
  - name: Start services
17
- run: docker-compose up -d wayfarer
15
+ run: docker compose up -d wayfarer
18
16
 
19
17
  - name: RuboCop
20
- if: success() || failure()
21
- run: docker-compose run --rm --name test wayfarer bundle exec rake lint:rubocop
18
+ run: docker compose run --rm --name test wayfarer bundle exec rake lint:rubocop
22
19
 
23
20
  - name: Vale
24
21
  if: success() || failure()
25
- run: docker-compose run --rm --name test wayfarer bundle exec rake lint:vale
22
+ env:
23
+ VALE_STYLES_PATH: /tmp/value
24
+ run: |
25
+ sudo snap install vale
26
+ vale sync
27
+ vale --glob="*.md" $(git diff --name-only origin/${{ github.base_ref }}...HEAD)
@@ -1,11 +1,10 @@
1
1
  name: release
2
2
 
3
- on:
4
- push:
5
- branches: [master]
3
+ on: workflow_dispatch
6
4
 
7
5
  jobs:
8
6
  release:
7
+ if: github.ref_name == 'master' || github.ref_name == 'develop'
9
8
  runs-on: ubuntu-latest
10
9
  steps:
11
10
  - uses: actions/checkout@v2
@@ -14,6 +13,8 @@ jobs:
14
13
 
15
14
  - run: docker compose exec -T wayfarer git config --global --add safe.directory /opt/app
16
15
 
16
+ - run: git status
17
+
17
18
  - name: Release gem
18
19
  env:
19
20
  GIT_AUTHOR_NAME: Dominic Bauer
@@ -4,9 +4,6 @@ on:
4
4
  push:
5
5
  branches: ["*"]
6
6
 
7
- env:
8
- CI: true
9
-
10
7
  jobs:
11
8
  tests:
12
9
  runs-on: ubuntu-latest
@@ -15,16 +12,10 @@ jobs:
15
12
  - uses: actions/checkout@v2
16
13
 
17
14
  - name: Set up Docker Compose
18
- run: docker-compose up -d
19
-
20
- - name: Isolated tests
21
- run: docker-compose exec -T wayfarer bundle exec rake test:isolated
22
-
23
- - name: Ferrum tests
24
- run: docker-compose exec -T wayfarer bundle exec rake test:ferrum
15
+ run: docker compose up -d
25
16
 
26
- - name: Selenium tests
27
- run: docker-compose exec -T wayfarer bundle exec rake test:selenium
17
+ - name: Run tests
18
+ run: docker compose exec -T -e CI=$CI wayfarer bundle exec rake test
28
19
 
29
- - name: CLI tests
30
- run: docker-compose exec -T wayfarer bundle exec rake test:cli
20
+ - name: Verify gem version
21
+ run: docker compose exec -T -e CI=true wayfarer bundle exec rake release:guard_versions
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ \#*#
1
2
  .DS_Store
2
3
  .bundle
3
4
  .yardoc
@@ -5,7 +6,6 @@
5
6
  dump.rdb
6
7
  build
7
8
  yard
8
- vale
9
- \#*#
10
9
  .tool-versions
11
10
  *.tar.gz
11
+ styles
data/.rubocop.yml CHANGED
@@ -1,3 +1,6 @@
1
+ plugins:
2
+ - rubocop-rspec
3
+
1
4
  AllCops:
2
5
  NewCops: enable
3
6
  Exclude:
@@ -12,6 +15,9 @@ Layout/LineLength:
12
15
  Style/StringLiterals:
13
16
  EnforcedStyle: double_quotes
14
17
 
18
+ Style/DoubleNegation:
19
+ Enabled: false
20
+
15
21
  Style/BlockDelimiters:
16
22
  EnforcedStyle: braces_for_chaining
17
23
  FunctionalMethods:
@@ -50,3 +56,28 @@ Lint/ConstantDefinitionInBlock:
50
56
  Exclude:
51
57
  - "spec/**/*"
52
58
 
59
+ Naming/MethodParameterName:
60
+ MinNameLength: 2
61
+
62
+ Naming/PredicateMethod:
63
+ Enabled: false
64
+
65
+ RSpec/NestedGroups:
66
+ Max: 5
67
+
68
+ RSpec/MultipleExpectations:
69
+ Max: 5
70
+
71
+ RSpec/MultipleMemoizedHelpers:
72
+ Max: 10
73
+
74
+ RSpec/ExampleLength:
75
+ Max: 120
76
+
77
+ RSpec/DescribeClass:
78
+ Exclude:
79
+ - "spec/wayfarer/integration/**/*"
80
+
81
+ RSpec/ExpectInHook:
82
+ Exclude:
83
+ - "spec/wayfarer/integration/**/*"
data/.vale.ini CHANGED
@@ -1,5 +1,8 @@
1
- StylesPath = .github/share/vale
1
+ StylesPath = styles
2
+
2
3
  MinAlertLevel = suggestion
3
4
 
4
- [*.md]
5
- BasedOnStyles = Google
5
+ Packages = Google
6
+
7
+ [*.{md}]
8
+ BasedOnStyles = Vale, Google
data/Dockerfile CHANGED
@@ -1,5 +1,6 @@
1
- FROM ruby:2.7.7-alpine
2
- RUN apk add --no-cache git build-base
1
+ FROM ruby:3.4.4-alpine
2
+ RUN apk add --no-cache build-base git yaml-dev zlib-dev
3
+ RUN git config --global --add safe.directory /opt/app
3
4
  WORKDIR /opt/app
4
5
  COPY Gemfile Gemfile.lock *.gemspec ./
5
6
  RUN bundle install
data/Gemfile CHANGED
@@ -6,3 +6,24 @@ gemspec name: "wayfarer"
6
6
 
7
7
  gem "rerun"
8
8
  gem "yard"
9
+
10
+ gem "cuprite", "~> 0.17"
11
+ gem "factory_bot", "~> 6.5"
12
+ gem "faker", "~> 3.5"
13
+ gem "ostruct", "~> 0.6"
14
+ gem "pry", "~> 0.15"
15
+ gem "puma", "~> 6.6"
16
+ gem "rackup", "~> 2.2"
17
+ gem "rake", "~> 13.3"
18
+ gem "rspec", "~> 3.13"
19
+ gem "rubocop", "~> 1.80"
20
+ gem "sinatra", "~> 4.1"
21
+
22
+ group :test do
23
+ gem "irb"
24
+ gem "rspec-parameterized", "~> 2.0"
25
+ gem "rubocop-factory_bot", require: false
26
+ gem "rubocop-rake", require: false
27
+ gem "rubocop-rspec", require: false
28
+ gem "webrick"
29
+ end
data/Gemfile.lock CHANGED
@@ -1,226 +1,331 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wayfarer (0.4.7)
4
+ wayfarer (0.4.8)
5
5
  activejob (>= 7.1)
6
6
  addressable (~> 2.8)
7
- capybara (~> 3.0)
8
- connection_pool (~> 2.2)
9
- docile (~> 1.1)
10
- ferrum (~> 0.9)
11
- metainspector (~> 5.0)
12
- mime-types (~> 3.0)
13
- mock_redis (~> 0.29)
14
- mustermann (~> 1.1)
15
- net-http-persistent (~> 3.0)
16
- nokogiri (~> 1.11)
17
- normalize_url (~> 0.0.6)
18
- redis (~> 4.4, < 4.5)
19
- selenium-webdriver (~> 3.4)
7
+ capybara (~> 3.4)
8
+ connection_pool (~> 2.5)
9
+ ferrum (~> 0.17)
10
+ metainspector (~> 5.16)
11
+ mime-types (~> 3.7)
12
+ mock_redis (~> 0.52)
13
+ mustermann (~> 3.0)
14
+ net-http-persistent (~> 4.0)
15
+ nokogiri (~> 1.18)
16
+ redis (~> 5.4)
17
+ selenium-webdriver (~> 4.35)
18
+ sorted_set (~> 1.0)
20
19
  thor (~> 1.0)
21
- zeitwerk (~> 2.4)
20
+ zeitwerk (~> 2.7)
22
21
 
23
22
  GEM
24
23
  remote: https://rubygems.org/
25
24
  specs:
26
- activejob (7.1.3.1)
27
- activesupport (= 7.1.3.1)
25
+ activejob (8.0.2.1)
26
+ activesupport (= 8.0.2.1)
28
27
  globalid (>= 0.3.6)
29
- activesupport (7.1.3.1)
28
+ activesupport (8.0.2.1)
30
29
  base64
30
+ benchmark (>= 0.3)
31
31
  bigdecimal
32
- concurrent-ruby (~> 1.0, >= 1.0.2)
32
+ concurrent-ruby (~> 1.0, >= 1.3.1)
33
33
  connection_pool (>= 2.2.5)
34
34
  drb
35
35
  i18n (>= 1.6, < 2)
36
+ logger (>= 1.4.2)
36
37
  minitest (>= 5.1)
37
- mutex_m
38
- tzinfo (~> 2.0)
39
- addressable (2.8.6)
40
- public_suffix (>= 2.0.2, < 6.0)
41
- ast (2.4.2)
42
- base64 (0.2.0)
43
- bigdecimal (3.1.6)
44
- capybara (3.39.2)
38
+ securerandom (>= 0.3)
39
+ tzinfo (~> 2.0, >= 2.0.5)
40
+ uri (>= 0.13.1)
41
+ addressable (2.8.7)
42
+ public_suffix (>= 2.0.2, < 7.0)
43
+ ast (2.4.3)
44
+ base64 (0.3.0)
45
+ benchmark (0.4.1)
46
+ bigdecimal (3.2.2)
47
+ binding_of_caller (1.0.1)
48
+ debug_inspector (>= 1.2.0)
49
+ capybara (3.40.0)
45
50
  addressable
46
51
  matrix
47
52
  mini_mime (>= 0.1.3)
48
- nokogiri (~> 1.8)
53
+ nokogiri (~> 1.11)
49
54
  rack (>= 1.6.0)
50
55
  rack-test (>= 0.6.3)
51
56
  regexp_parser (>= 1.5, < 3.0)
52
57
  xpath (~> 3.2)
53
- childprocess (3.0.0)
54
58
  coderay (1.1.3)
55
- concurrent-ruby (1.2.3)
56
- connection_pool (2.4.1)
57
- cuprite (0.15)
59
+ concurrent-ruby (1.3.5)
60
+ connection_pool (2.5.3)
61
+ cuprite (0.17)
58
62
  capybara (~> 3.0)
59
- ferrum (~> 0.14.0)
60
- diff-lcs (1.5.1)
61
- docile (1.4.0)
63
+ ferrum (~> 0.17.0)
64
+ date (3.4.1)
65
+ debug_inspector (1.2.0)
66
+ diff-lcs (1.6.2)
62
67
  domain_name (0.6.20240107)
63
- drb (2.2.0)
64
- ruby2_keywords
65
- factory_bot (6.4.5)
66
- activesupport (>= 5.0.0)
67
- faker (1.9.6)
68
- i18n (>= 0.7)
69
- faraday (2.8.1)
70
- base64
71
- faraday-net_http (>= 2.0, < 3.1)
72
- ruby2_keywords (>= 0.0.4)
68
+ drb (2.2.3)
69
+ erb (5.0.2)
70
+ factory_bot (6.5.5)
71
+ activesupport (>= 6.1.0)
72
+ faker (3.5.2)
73
+ i18n (>= 1.8.11, < 2)
74
+ faraday (2.13.4)
75
+ faraday-net_http (>= 2.0, < 3.5)
76
+ json
77
+ logger
73
78
  faraday-cookie_jar (0.0.7)
74
79
  faraday (>= 0.8.0)
75
80
  http-cookie (~> 1.0.0)
76
- faraday-encoding (0.0.5)
81
+ faraday-encoding (0.0.6)
77
82
  faraday
78
83
  faraday-follow_redirects (0.3.0)
79
84
  faraday (>= 1, < 3)
80
- faraday-gzip (1.0.0)
85
+ faraday-gzip (2.0.1)
81
86
  faraday (>= 1.0)
82
- zlib (~> 2.1)
87
+ zlib (~> 3.0)
83
88
  faraday-http-cache (2.5.1)
84
89
  faraday (>= 0.8)
85
- faraday-net_http (3.0.2)
86
- faraday-retry (2.2.1)
90
+ faraday-net_http (3.4.1)
91
+ net-http (>= 0.5.0)
92
+ faraday-retry (2.3.2)
87
93
  faraday (~> 2.0)
88
- fastimage (2.3.1)
89
- ferrum (0.14)
94
+ fastimage (2.4.0)
95
+ ferrum (0.17.1)
90
96
  addressable (~> 2.5)
97
+ base64 (~> 0.2)
91
98
  concurrent-ruby (~> 1.1)
92
99
  webrick (~> 1.7)
93
- websocket-driver (>= 0.6, < 0.8)
94
- ffi (1.16.3)
100
+ websocket-driver (~> 0.7)
101
+ ffi (1.17.2-x86_64-darwin)
102
+ ffi (1.17.2-x86_64-linux-musl)
95
103
  globalid (1.2.1)
96
104
  activesupport (>= 6.1)
97
- http-cookie (1.0.6)
105
+ http-cookie (1.0.8)
98
106
  domain_name (~> 0.5)
99
- i18n (1.14.1)
107
+ i18n (1.14.7)
100
108
  concurrent-ruby (~> 1.0)
109
+ io-console (0.8.1)
110
+ irb (1.15.2)
111
+ pp (>= 0.6.0)
112
+ rdoc (>= 4.0.0)
113
+ reline (>= 0.4.2)
114
+ json (2.13.2)
115
+ language_server-protocol (3.17.0.5)
116
+ lint_roller (1.1.0)
101
117
  listen (3.9.0)
102
118
  rb-fsevent (~> 0.10, >= 0.10.3)
103
119
  rb-inotify (~> 0.9, >= 0.9.10)
104
- matrix (0.4.2)
105
- metainspector (5.15.0)
120
+ logger (1.7.0)
121
+ matrix (0.4.3)
122
+ metainspector (5.16.0)
106
123
  addressable (~> 2.8.4)
107
124
  faraday (~> 2.5)
108
125
  faraday-cookie_jar (~> 0.0)
109
126
  faraday-encoding (~> 0.0)
110
127
  faraday-follow_redirects (~> 0.3)
111
- faraday-gzip (>= 0.1, < 2.0)
128
+ faraday-gzip (>= 0.1, < 3.0)
112
129
  faraday-http-cache (~> 2.5)
113
130
  faraday-retry (~> 2.0)
114
131
  fastimage (~> 2.2)
115
132
  nesty (~> 1.0)
116
- nokogiri (~> 1.13)
117
- method_source (1.0.0)
118
- mime-types (3.5.2)
119
- mime-types-data (~> 3.2015)
120
- mime-types-data (3.2024.0507)
133
+ nokogiri (~> 1.18.8)
134
+ method_source (1.1.0)
135
+ mime-types (3.7.0)
136
+ logger
137
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
138
+ mime-types-data (3.2025.0819)
121
139
  mini_mime (1.1.5)
122
- mini_portile2 (2.8.5)
123
- minitest (5.22.2)
124
- mock_redis (0.41.0)
125
- mustermann (1.1.2)
140
+ minitest (5.25.5)
141
+ mock_redis (0.52.0)
142
+ redis (~> 5)
143
+ mustermann (3.0.4)
126
144
  ruby2_keywords (~> 0.0.1)
127
- mutex_m (0.2.0)
128
145
  nesty (1.0.2)
129
- net-http-persistent (3.1.0)
130
- connection_pool (~> 2.2)
131
- nokogiri (1.15.5)
132
- mini_portile2 (~> 2.8.2)
146
+ net-http (0.6.0)
147
+ uri
148
+ net-http-persistent (4.0.6)
149
+ connection_pool (~> 2.2, >= 2.2.4)
150
+ nio4r (2.7.4)
151
+ nokogiri (1.18.9-x86_64-darwin)
152
+ racc (~> 1.4)
153
+ nokogiri (1.18.9-x86_64-linux-musl)
133
154
  racc (~> 1.4)
134
- normalize_url (0.0.6)
135
- addressable (~> 2.3)
136
- parallel (1.24.0)
137
- parser (3.3.0.5)
155
+ ostruct (0.6.3)
156
+ parallel (1.27.0)
157
+ parser (3.3.9.0)
138
158
  ast (~> 2.4.1)
139
159
  racc
140
- pry (0.14.2)
160
+ pp (0.6.2)
161
+ prettyprint
162
+ prettyprint (0.2.0)
163
+ prism (1.4.0)
164
+ proc_to_ast (0.2.0)
165
+ parser
166
+ rouge
167
+ unparser
168
+ pry (0.15.2)
141
169
  coderay (~> 1.1)
142
170
  method_source (~> 1.0)
143
- public_suffix (5.0.4)
144
- racc (1.7.3)
145
- rack (1.6.13)
146
- rack-protection (1.5.5)
147
- rack
148
- rack-test (2.1.0)
171
+ psych (5.2.6)
172
+ date
173
+ stringio
174
+ public_suffix (6.0.2)
175
+ puma (6.6.1)
176
+ nio4r (~> 2.0)
177
+ racc (1.8.1)
178
+ rack (3.2.0)
179
+ rack-protection (4.1.1)
180
+ base64 (>= 0.1.0)
181
+ logger (>= 1.6.0)
182
+ rack (>= 3.0.0, < 4)
183
+ rack-session (2.1.1)
184
+ base64 (>= 0.1.0)
185
+ rack (>= 3.0.0)
186
+ rack-test (2.2.0)
149
187
  rack (>= 1.3)
188
+ rackup (2.2.1)
189
+ rack (>= 3)
150
190
  rainbow (3.1.1)
151
- rake (10.5.0)
191
+ rake (13.3.0)
152
192
  rb-fsevent (0.11.2)
153
- rb-inotify (0.10.1)
193
+ rb-inotify (0.11.1)
154
194
  ffi (~> 1.0)
155
- redis (4.4.0)
156
- regexp_parser (2.9.0)
195
+ rbtree (0.4.6)
196
+ rdoc (6.14.2)
197
+ erb
198
+ psych (>= 4.0.0)
199
+ redis (5.4.1)
200
+ redis-client (>= 0.22.0)
201
+ redis-client (0.25.2)
202
+ connection_pool
203
+ regexp_parser (2.11.2)
204
+ reline (0.6.2)
205
+ io-console (~> 0.5)
157
206
  rerun (0.14.0)
158
207
  listen (~> 3.0)
159
- rexml (3.2.6)
160
- rspec (3.13.0)
208
+ rexml (3.4.1)
209
+ rouge (4.6.0)
210
+ rspec (3.13.1)
161
211
  rspec-core (~> 3.13.0)
162
212
  rspec-expectations (~> 3.13.0)
163
213
  rspec-mocks (~> 3.13.0)
164
- rspec-core (3.13.0)
214
+ rspec-core (3.13.5)
165
215
  rspec-support (~> 3.13.0)
166
- rspec-expectations (3.13.0)
216
+ rspec-expectations (3.13.5)
167
217
  diff-lcs (>= 1.2.0, < 2.0)
168
218
  rspec-support (~> 3.13.0)
169
- rspec-mocks (3.13.0)
219
+ rspec-mocks (3.13.5)
170
220
  diff-lcs (>= 1.2.0, < 2.0)
171
221
  rspec-support (~> 3.13.0)
172
- rspec-support (3.13.1)
173
- rubocop (0.93.1)
222
+ rspec-parameterized (2.0.0)
223
+ rspec-parameterized-core (>= 2, < 3)
224
+ rspec-parameterized-table_syntax (>= 2, < 3)
225
+ rspec-parameterized-core (2.0.0)
226
+ parser
227
+ prism
228
+ proc_to_ast (>= 0.2.0)
229
+ rspec (>= 2.13, < 4)
230
+ unparser
231
+ rspec-parameterized-table_syntax (2.0.0)
232
+ binding_of_caller
233
+ rspec-parameterized-core (>= 2, < 3)
234
+ rspec-support (3.13.5)
235
+ rubocop (1.80.0)
236
+ json (~> 2.3)
237
+ language_server-protocol (~> 3.17.0.2)
238
+ lint_roller (~> 1.1.0)
174
239
  parallel (~> 1.10)
175
- parser (>= 2.7.1.5)
240
+ parser (>= 3.3.0.2)
176
241
  rainbow (>= 2.2.2, < 4.0)
177
- regexp_parser (>= 1.8)
178
- rexml
179
- rubocop-ast (>= 0.6.0)
242
+ regexp_parser (>= 2.9.3, < 3.0)
243
+ rubocop-ast (>= 1.46.0, < 2.0)
180
244
  ruby-progressbar (~> 1.7)
181
- unicode-display_width (>= 1.4.0, < 2.0)
182
- rubocop-ast (1.30.0)
183
- parser (>= 3.2.1.0)
245
+ unicode-display_width (>= 2.4.0, < 4.0)
246
+ rubocop-ast (1.46.0)
247
+ parser (>= 3.3.7.2)
248
+ prism (~> 1.4)
249
+ rubocop-factory_bot (2.27.1)
250
+ lint_roller (~> 1.1)
251
+ rubocop (~> 1.72, >= 1.72.1)
252
+ rubocop-rake (0.7.1)
253
+ lint_roller (~> 1.1)
254
+ rubocop (>= 1.72.1)
255
+ rubocop-rspec (3.6.0)
256
+ lint_roller (~> 1.1)
257
+ rubocop (~> 1.72, >= 1.72.1)
184
258
  ruby-progressbar (1.13.0)
185
259
  ruby2_keywords (0.0.5)
186
- rubyzip (2.3.2)
187
- selenium-webdriver (3.142.7)
188
- childprocess (>= 0.5, < 4.0)
189
- rubyzip (>= 1.2.2)
190
- sinatra (1.4.8)
191
- rack (~> 1.5)
192
- rack-protection (~> 1.4)
193
- tilt (>= 1.3, < 3)
194
- thor (1.3.1)
195
- tilt (2.3.0)
260
+ rubyzip (3.0.2)
261
+ securerandom (0.4.1)
262
+ selenium-webdriver (4.35.0)
263
+ base64 (~> 0.2)
264
+ logger (~> 1.4)
265
+ rexml (~> 3.2, >= 3.2.5)
266
+ rubyzip (>= 1.2.2, < 4.0)
267
+ websocket (~> 1.0)
268
+ set (1.1.2)
269
+ sinatra (4.1.1)
270
+ logger (>= 1.6.0)
271
+ mustermann (~> 3.0)
272
+ rack (>= 3.0.0, < 4)
273
+ rack-protection (= 4.1.1)
274
+ rack-session (>= 2.0.0, < 3)
275
+ tilt (~> 2.0)
276
+ sorted_set (1.0.3)
277
+ rbtree
278
+ set (~> 1.0)
279
+ stringio (3.1.7)
280
+ thor (1.4.0)
281
+ tilt (2.6.1)
196
282
  tzinfo (2.0.6)
197
283
  concurrent-ruby (~> 1.0)
198
- unicode-display_width (1.8.0)
199
- webrick (1.8.1)
200
- websocket-driver (0.7.6)
284
+ unicode-display_width (3.1.5)
285
+ unicode-emoji (~> 4.0, >= 4.0.4)
286
+ unicode-emoji (4.0.4)
287
+ unparser (0.8.0)
288
+ diff-lcs (~> 1.6)
289
+ parser (>= 3.3.0)
290
+ prism (>= 1.4)
291
+ uri (1.0.3)
292
+ webrick (1.9.1)
293
+ websocket (1.2.11)
294
+ websocket-driver (0.8.0)
295
+ base64
201
296
  websocket-extensions (>= 0.1.0)
202
297
  websocket-extensions (0.1.5)
203
298
  xpath (3.2.0)
204
299
  nokogiri (~> 1.8)
205
- yard (0.9.34)
206
- zeitwerk (2.6.15)
207
- zlib (2.1.1)
300
+ yard (0.9.37)
301
+ zeitwerk (2.7.3)
302
+ zlib (3.2.1)
208
303
 
209
304
  PLATFORMS
210
- ruby
305
+ x86_64-darwin-24
306
+ x86_64-linux-musl
211
307
 
212
308
  DEPENDENCIES
213
- cuprite (~> 0.13)
214
- factory_bot (~> 6.0)
215
- faker (~> 1.7)
216
- pry (~> 0.10)
217
- rake (~> 10.4)
309
+ cuprite (~> 0.17)
310
+ factory_bot (~> 6.5)
311
+ faker (~> 3.5)
312
+ irb
313
+ ostruct (~> 0.6)
314
+ pry (~> 0.15)
315
+ puma (~> 6.6)
316
+ rackup (~> 2.2)
317
+ rake (~> 13.3)
218
318
  rerun
219
- rspec (~> 3.4)
220
- rubocop (~> 0.49)
221
- sinatra (~> 1.4)
319
+ rspec (~> 3.13)
320
+ rspec-parameterized (~> 2.0)
321
+ rubocop (~> 1.80)
322
+ rubocop-factory_bot
323
+ rubocop-rake
324
+ rubocop-rspec
325
+ sinatra (~> 4.1)
222
326
  wayfarer!
327
+ webrick
223
328
  yard
224
329
 
225
330
  BUNDLED WITH
226
- 2.1.4
331
+ 2.7.1