capybara-thruster 0.0.1 → 0.1.1

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: bc03687a30687dca088cab2424fe1a465846f32fc4fb8fefea3c4de456d198a4
4
- data.tar.gz: 68e08163670060ae649dbdb197eb29828de70569cf87873ce1b32d5996042969
3
+ metadata.gz: eb193e41ea232704ba2ae902a1dcb1ce3986503d1cbe4a0032bc0749af052ca0
4
+ data.tar.gz: d42cad741af90cc72b10c2cad6e715b1494edb52ea533ae2f6b66bbbc1f9b99e
5
5
  SHA512:
6
- metadata.gz: c46e4326e4ade9956935184e2cdc68af4a1dcd8680d44a3eff6309ac0ecb1cb8dada1fdc5d62a599b689dfe0914478b065ffd5cdbc0d51329ef584e5c6868a73
7
- data.tar.gz: 50afac1e54db88918b2297fe0796e60d5b97cac087d8b1e37e608abb5cadb1a23687d25ba1f82b0fa8f17b8b33256c70d396c740b7b4688711a2684ac71893c5
6
+ metadata.gz: 931611098086ebf60db3ac10085e2b0af922af17b8513c5a0a2c431f176e585588f94a76b32830b523940b6f9fa707aa2a7f7a89f3871db3625e1825328cf28e
7
+ data.tar.gz: 3d6edd5a360dbfcbc3652b4deb18f79cb90b3e1f9c4fbd7f71ccc0a80eec6da274921296ddf4e459a2abf1e95e03959b53e9225c3c8d43b2117239536af46bfd
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
1
  # Change log
2
2
 
3
3
  ## master
4
+
5
+ ## 0.1.1
6
+
7
+ - Show a warning if no Thruster gem installed. ([@prog-supdex][])
8
+
9
+ ## 0.1.0
10
+
11
+ - Initial release ([@palkan][])
12
+
13
+ [@palkan]: https://github.com/palkan
14
+ [@prog-supdex]: https://github.com/prog-supdex
data/README.md CHANGED
@@ -5,11 +5,23 @@
5
5
 
6
6
  This gem makes it possible to use [Thruster][] as a Capybara server. Run your browser test with HTTP/2 enabled and static assets served via Thruster for faster load times!
7
7
 
8
- > [TIP!]
8
+ > [!TIP]
9
9
  > Using AnyCable? This gem works with [AnyCable-d Thruster][anycable-thruster], so you can run your system tests against a real AnyCable server with all its features!
10
10
 
11
11
  ## Getting started
12
12
 
13
+ ### Prerequisites
14
+
15
+ Before adding the gem to your project, ensure you have either `thruster` or `anycable-thruster` installed. You can add one of these gems to your `Gemfile`:
16
+
17
+ ```ruby
18
+ # For thruster
19
+ gem "thruster"
20
+
21
+ # or for anycable-thruster
22
+ gem "anycable-thruster"
23
+ ```
24
+
13
25
  Adding the gem to your project:
14
26
 
15
27
  ```ruby
@@ -25,12 +37,15 @@ Capybara.server = :thruster
25
37
  # You can also specify some options.
26
38
 
27
39
  # For example, if you want to see the server output,
28
- # pass the `debug: true` option
40
+ # pass the `debug: true` option:
29
41
  Capybara.server = :thruster, {debug: true}
30
42
 
31
43
  # To customize the server settings, you can pass arbitrary environment
32
- # variables via the `env` option
44
+ # variables via the `env` option:
33
45
  Capybara.server = :thruster, {env: {"DEBUG" => "true"}}
46
+
47
+ # To specify Puma server options, use the `puma_options` option:
48
+ Capybara.server = :thruster, {puma_options: {Silent: false}}
34
49
  ```
35
50
 
36
51
  ## Contributing
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Capybara
4
+ module Thruster
5
+ class DependencyChecker
6
+ def self.call
7
+ new.call
8
+ end
9
+
10
+ def call
11
+ unless thruster_installed?
12
+ warn "*********************************************************"
13
+ warn "Warning: capybara-thruster requires either 'thruster' or 'anycable-thruster' gem."
14
+ warn "Please install one of them to ensure proper functionality."
15
+ warn "*********************************************************"
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def thruster_installed?
22
+ gem_installed?("thruster") || gem_installed?("anycable-thruster")
23
+ end
24
+
25
+ def gem_installed?(name)
26
+ Gem::Specification.find_all_by_name(name).any?
27
+ end
28
+ end
29
+ end
30
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Capybara
4
4
  module Thruster # :nodoc:
5
- VERSION = "0.0.1"
5
+ VERSION = "0.1.1"
6
6
  end
7
7
  end
@@ -2,13 +2,16 @@
2
2
 
3
3
  require "childprocess"
4
4
  require "capybara"
5
+ require "capybara/dependency_checker"
6
+ require "rack/handler"
7
+
8
+ Capybara::Thruster::DependencyChecker.call
5
9
 
6
10
  # Replaces the default Puma server on CAPYBARA_SERVER_PORT port with Thruster server.
7
11
  # Requests are proxied to the Puma server running on the internal port (CAPYBARA_SERVER_PORT + 1).
8
12
  Capybara.register_server :thruster do |app, port, host, **options|
9
13
  puma_port = port + 1
10
14
 
11
- # TODO: Figure out how to avoid sleep here
12
15
  process = ChildProcess.build("bundle", "exec", "thrust", "ruby", "-e", "sleep")
13
16
  process.environment["TARGET_PORT"] = puma_port.to_s
14
17
  process.environment["HTTP_PORT"] = port.to_s
@@ -21,5 +24,6 @@ Capybara.register_server :thruster do |app, port, host, **options|
21
24
 
22
25
  at_exit { process.stop }
23
26
 
24
- Capybara.servers[:puma].call(app, puma_port, host)
27
+ puma_options = options.fetch(:puma_options, {Silent: true})
28
+ Capybara.servers[:puma].call(app, puma_port, host, **puma_options)
25
29
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-thruster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Dementyev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-28 00:00:00.000000000 Z
11
+ date: 2024-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: childprocess
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '1.15'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rackup
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +108,20 @@ dependencies:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
110
  version: '5.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: thruster
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  description: Example description
84
126
  email:
85
127
  - Vladimir Dementyev
@@ -91,6 +133,7 @@ files:
91
133
  - LICENSE.txt
92
134
  - README.md
93
135
  - lib/capybara-thruster.rb
136
+ - lib/capybara/dependency_checker.rb
94
137
  - lib/capybara/thruster.rb
95
138
  - lib/capybara/thruster/version.rb
96
139
  homepage: https://github.com/evilmartians/capybara-thruster
@@ -102,7 +145,7 @@ metadata:
102
145
  documentation_uri: https://github.com/evilmartians/capybara-thruster
103
146
  homepage_uri: https://github.com/evilmartians/capybara-thruster
104
147
  source_code_uri: https://github.com/evilmartians/capybara-thruster
105
- post_install_message:
148
+ post_install_message:
106
149
  rdoc_options: []
107
150
  require_paths:
108
151
  - lib
@@ -117,8 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
160
  - !ruby/object:Gem::Version
118
161
  version: '0'
119
162
  requirements: []
120
- rubygems_version: 3.4.20
121
- signing_key:
163
+ rubygems_version: 3.4.19
164
+ signing_key:
122
165
  specification_version: 4
123
166
  summary: Example description
124
167
  test_files: []