funnel_http 0.1.0 → 0.2.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: cc6d1f5ffef3ad3e41de07eb3b94342bd082724aa3d1daad338603fbedbabcdc
4
- data.tar.gz: f3208ba0c9154bd99fd2d373e91d3679690f0f711c74a3f11038c500c08fbd8a
3
+ metadata.gz: c83aef0664b9cea7f66a26b5ef09fd175a9c3ee84163d778b80dc57caab7ad60
4
+ data.tar.gz: 7086e25c3a318ae33b59e6524b05ea03ff32c742e242ddde32b449d5e9668dca
5
5
  SHA512:
6
- metadata.gz: 87f9ad18e8c0005f2a3520d06381f3e308bbf6372827b631d646546c48f929be5879da1296331d9bab4ec7667786ce353473930b6795b84d0a46c11f9e68ec12
7
- data.tar.gz: c92e03744f09aa670972e188bb0c94db2b2920f028994db5bb0f26d3804d470345b43087d57195666d1236bfc2adcc9c8ee8ccde4c0ca50ae94b54887a0c1dd6
6
+ metadata.gz: 81fd96f70a60b533d9dc41a41204544b8aa36e57e3464861a933dfc43632d55402543530f8f78e2ab7be9e600bd7f4d7ff6471816a2a01c6edb442eb1713d8b2
7
+ data.tar.gz: 97cfe3cd7a61a84772b1059b1100d4391439ea362bd27c090efb3264d4d63d0b21ea7e37b587a73db3a9363a3709e9d14f78edbb115ab95c814deb6eb3fa3343
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
- [full changelog](http://github.com/sue445/funnel_http/compare/v0.1.0...main)
2
+ [full changelog](http://github.com/sue445/funnel_http/compare/v0.2.0...main)
3
+
4
+ ## [0.2.0](https://github.com/sue445/funnel_http/releases/tag/v0.2.0) - 2025-01-07
5
+ [full changelog](http://github.com/sue445/funnel_http/compare/v0.1.0...v0.2.0)
6
+
7
+ * Support Ruby 3.4
8
+ * https://github.com/sue445/funnel_http/pull/48
3
9
 
4
10
  ## [0.1.0](https://github.com/sue445/funnel_http/releases/tag/v0.1.0) - 2024-12-18
5
11
 
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # FunnelHttp
2
2
  Perform HTTP requests in parallel
3
3
 
4
+ [![Gem Version](https://badge.fury.io/rb/funnel_http.svg)](https://badge.fury.io/rb/funnel_http)
4
5
  [![build](https://github.com/sue445/funnel_http/actions/workflows/build.yml/badge.svg)](https://github.com/sue445/funnel_http/actions/workflows/build.yml)
5
6
 
6
7
  ## Requirements
@@ -72,6 +73,16 @@ client.add_default_request_header("Authorization", "Bearer xxxxxx")
72
73
  ## API Reference
73
74
  https://sue445.github.io/funnel_http/
74
75
 
76
+ ## Performance
77
+ Depending on the case, `funnel_http` runs about 1.2x faster than pure-Ruby `Thread` :dash:
78
+
79
+ See [benchmark/](benchmark/)
80
+
81
+ ### Why?
82
+ `funnel_http` uses [Go's goroutine](https://go.dev/tour/concurrency) for asynchronous processing of HTTP requests.
83
+
84
+ So this is faster than Ruby in many cases.
85
+
75
86
  ## Development
76
87
 
77
88
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/Rakefile CHANGED
@@ -26,7 +26,9 @@ namespace :go do
26
26
  sh "which golangci-lint" do |ok, _|
27
27
  raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
28
28
  end
29
- sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
29
+
30
+ build_tag = GoGem::Util.ruby_minor_version_build_tag
31
+ sh GoGem::RakeTask.build_env_vars, "golangci-lint run --build-tags #{build_tag}"
30
32
  end
31
33
  end
32
34
 
@@ -5,11 +5,11 @@ require "etc"
5
5
 
6
6
  ROOT_DIR = File.expand_path("..", __dir__)
7
7
 
8
- TEST_SERVER_URL = "http://localhost:8080/"
8
+ TEST_SERVER_URL = ENV.fetch("TEST_SERVER_URL") { "http://localhost:8080/" }
9
9
 
10
10
  REQUEST_COUNT = 100
11
11
 
12
- BENCHMARK_CONCURRENCY = ENV.fetch("BENCHMARK_CONCURRENCY") { 4 }
12
+ BENCHMARK_CONCURRENCY = (ENV.fetch("BENCHMARK_CONCURRENCY") { 4 }).to_i
13
13
 
14
14
  # Build native extension before running benchmark
15
15
  Dir.chdir(ROOT_DIR) do
@@ -32,7 +32,7 @@ def fetch_server
32
32
  end
33
33
 
34
34
  Benchmark.ips do |x|
35
- x.config(warmup: 1, time: 2)
35
+ # x.config(warmup: 1, time: 2)
36
36
 
37
37
  x.report("FunnelHttp::Client#perform") do
38
38
  FunnelHttp::Client.new.perform(requests)
@@ -5,7 +5,7 @@ go 1.23
5
5
  require (
6
6
  github.com/cockroachdb/errors v1.11.3
7
7
  github.com/jarcoal/httpmock v1.3.1
8
- github.com/ruby-go-gem/go-gem-wrapper v0.5.1
8
+ github.com/ruby-go-gem/go-gem-wrapper v0.6.0
9
9
  github.com/stretchr/testify v1.10.0
10
10
  golang.org/x/sync v0.10.0
11
11
  )
@@ -36,6 +36,8 @@ github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZV
36
36
  github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
37
37
  github.com/ruby-go-gem/go-gem-wrapper v0.5.1 h1:TFGH/eOJl0uYzYMwrcLbZxXNQiQbQjCq/VLXyRk1HRM=
38
38
  github.com/ruby-go-gem/go-gem-wrapper v0.5.1/go.mod h1:k2k+LziSCMxNYP4J9/9v90xdU6zlU1DJpJDTU6oJhHE=
39
+ github.com/ruby-go-gem/go-gem-wrapper v0.6.0 h1:WFu2Cj/uzKAOemsrCo4P6vsdOgB5yesrrJtAqvLkAso=
40
+ github.com/ruby-go-gem/go-gem-wrapper v0.6.0/go.mod h1:k2k+LziSCMxNYP4J9/9v90xdU6zlU1DJpJDTU6oJhHE=
39
41
  github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
40
42
  github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
41
43
  github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FunnelHttp
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -14,7 +14,7 @@ gems:
14
14
  source:
15
15
  type: git
16
16
  name: ruby/gem_rbs_collection
17
- revision: 0a6ea105a0afc7eaee4494585a7775f47eea6145
17
+ revision: 7ff8cf6ab2759cb1d0fb2ca8d6c1f8ccab2c605c
18
18
  remote: https://github.com/ruby/gem_rbs_collection.git
19
19
  repo_dir: gems
20
20
  - name: fileutils
@@ -29,12 +29,20 @@ gems:
29
29
  version: '0'
30
30
  source:
31
31
  type: stdlib
32
+ - name: parallel
33
+ version: '1.20'
34
+ source:
35
+ type: git
36
+ name: ruby/gem_rbs_collection
37
+ revision: 7ff8cf6ab2759cb1d0fb2ca8d6c1f8ccab2c605c
38
+ remote: https://github.com/ruby/gem_rbs_collection.git
39
+ repo_dir: gems
32
40
  - name: rack
33
41
  version: '2.2'
34
42
  source:
35
43
  type: git
36
44
  name: ruby/gem_rbs_collection
37
- revision: 0a6ea105a0afc7eaee4494585a7775f47eea6145
45
+ revision: 7ff8cf6ab2759cb1d0fb2ca8d6c1f8ccab2c605c
38
46
  remote: https://github.com/ruby/gem_rbs_collection.git
39
47
  repo_dir: gems
40
48
  - name: rake
@@ -42,7 +50,7 @@ gems:
42
50
  source:
43
51
  type: git
44
52
  name: ruby/gem_rbs_collection
45
- revision: 0a6ea105a0afc7eaee4494585a7775f47eea6145
53
+ revision: 7ff8cf6ab2759cb1d0fb2ca8d6c1f8ccab2c605c
46
54
  remote: https://github.com/ruby/gem_rbs_collection.git
47
55
  repo_dir: gems
48
56
  - name: sinatra
@@ -50,7 +58,7 @@ gems:
50
58
  source:
51
59
  type: git
52
60
  name: ruby/gem_rbs_collection
53
- revision: 0a6ea105a0afc7eaee4494585a7775f47eea6145
61
+ revision: 7ff8cf6ab2759cb1d0fb2ca8d6c1f8ccab2c605c
54
62
  remote: https://github.com/ruby/gem_rbs_collection.git
55
63
  repo_dir: gems
56
64
  - name: stringio
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: funnel_http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-12-17 00:00:00.000000000 Z
10
+ date: 2025-01-07 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: go_gem
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '0.5'
18
+ version: '0.6'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '0.5'
25
+ version: '0.6'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: puma
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -239,7 +238,6 @@ metadata:
239
238
  changelog_uri: https://github.com/sue445/funnel_http/blob/main/CHANGELOG.md
240
239
  documentation_uri: https://sue445.github.io/funnel_http/
241
240
  rubygems_mfa_required: 'true'
242
- post_install_message:
243
241
  rdoc_options: []
244
242
  require_paths:
245
243
  - lib
@@ -254,8 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
252
  - !ruby/object:Gem::Version
255
253
  version: '0'
256
254
  requirements: []
257
- rubygems_version: 3.5.22
258
- signing_key:
255
+ rubygems_version: 3.6.2
259
256
  specification_version: 4
260
257
  summary: Perform HTTP requests in parallel
261
258
  test_files: []