funnel_http 0.1.0 → 0.2.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: 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: []