ngrok-wrapper 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 +4 -4
- data/CHANGELOG.md +18 -0
- data/README.md +1 -0
- data/lib/ngrok/wrapper/version.rb +1 -1
- data/lib/ngrok/wrapper.rb +9 -3
- data/spec/ngrok/wrapper_spec.rb +5 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73d4023376c99fae6a7c7c0e5461e1fb2fe91d83531bc77e35252e42e87a9795
|
4
|
+
data.tar.gz: 61eecae9040ebbe584b02cacea0c0a41a84d928dd6ebe7964c20f4b391e155e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e20e1589b5b0e375acbbd59b0c6e7b472906a1f54534e6695492926fdad36b1aeec2a25fef568fb7527d9416c7a4cae78296473733ccb4166b8c6bbaec95ead4
|
7
|
+
data.tar.gz: 237102d6642b6f58f5be5e9b35dfe9782863f93662df84c6a9864728df9103c67e4bf12badc87fa481e80b7156b636caab7ecd7058dfb44467e4420968dc191d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v0.2.0](https://github.com/texpert/ngrok-wrapper/tree/v0.2.0) (2022-02-19)
|
4
|
+
|
5
|
+
### Making Ngrok process survive server stop on Linux
|
6
|
+
|
7
|
+
It was working OK on Mac OS on the 0.1.0 release, but not on Linux.
|
8
|
+
|
9
|
+
It came out that `Process.setsid` should be applied to the spawned process to establish this process as a new session
|
10
|
+
and process group leader. This is completely detaching it from the parent process, so it won't be killed when the
|
11
|
+
parent will go down.
|
12
|
+
|
13
|
+
[Full Changelog](https://github.com/texpert/ngrok-wrapper/compare/v0.1.0...v0.2.0)
|
14
|
+
|
15
|
+
**Merged pull requests:**
|
16
|
+
|
17
|
+
- Add config.hosts example for Rails \>= 6.0.0 [\#18](https://github.com/texpert/ngrok-wrapper/pull/18) ([texpert](https://github.com/texpert))
|
18
|
+
- Ngrok.start should try to return first @ngrok\_url\_https or then @ngrok\_url [\#17](https://github.com/texpert/ngrok-wrapper/pull/17) ([texpert](https://github.com/texpert))
|
19
|
+
- Use fork, Process.setsid and spawn instead of just spawn, to change the owner of ngrok process [\#16](https://github.com/texpert/ngrok-wrapper/pull/16) ([texpert](https://github.com/texpert))
|
20
|
+
|
3
21
|
## [v0.1.0](https://github.com/texpert/ngrok-wrapper/tree/v0.1.0) (2022-01-09)
|
4
22
|
|
5
23
|
[Full Changelog](https://github.com/texpert/ngrok-wrapper/compare/3e032fa019c91ee7338a7ad3a3335e6c5597b394...v0.1.0)
|
data/README.md
CHANGED
@@ -140,6 +140,7 @@ end
|
|
140
140
|
|
141
141
|
```ruby
|
142
142
|
config.force_ssl = true if NGROK_ENABLED
|
143
|
+
config.hosts << '.ngrok.io' if NGROK_ENABLED # for Rails >= 6.0.0
|
143
144
|
|
144
145
|
config.action_mailer.default_url_options = {
|
145
146
|
host: NGROK_ENABLED ? NGROK_URL.delete_prefix('https://') : 'myapp.local',
|
data/lib/ngrok/wrapper.rb
CHANGED
@@ -38,7 +38,7 @@ module Ngrok
|
|
38
38
|
File.write(@persistence_file, { pid: @pid, ngrok_url: @ngrok_url, ngrok_url_https: @ngrok_url_https }.to_json)
|
39
39
|
end
|
40
40
|
|
41
|
-
@ngrok_url
|
41
|
+
@ngrok_url_https || @ngrok_url
|
42
42
|
end
|
43
43
|
|
44
44
|
def stop
|
@@ -104,7 +104,7 @@ module Ngrok
|
|
104
104
|
def ngrok_process_status_lines(refetch: false)
|
105
105
|
return @ngrok_process_status_lines if defined?(@ngrok_process_status_lines) && !refetch
|
106
106
|
|
107
|
-
@ngrok_process_status_lines = (`ps ax | grep "ngrok http"`).split("\n")
|
107
|
+
@ngrok_process_status_lines = (`ps ax | grep "ngrok http"`).split("\n").map(&:strip)
|
108
108
|
end
|
109
109
|
|
110
110
|
def try_params_from_running_ngrok
|
@@ -134,7 +134,13 @@ module Ngrok
|
|
134
134
|
# Prepare the log file into which ngrok output will be redirected in `ngrok_exec_params`
|
135
135
|
@params[:log] = @params[:log] ? File.open(@params[:log], 'w+') : Tempfile.new('ngrok')
|
136
136
|
if persistent_ngrok
|
137
|
-
|
137
|
+
fork do
|
138
|
+
Process.setsid
|
139
|
+
system("exec nohup ngrok http #{ngrok_exec_params} &")
|
140
|
+
end
|
141
|
+
|
142
|
+
sleep 0.5
|
143
|
+
|
138
144
|
@pid = ngrok_process_status_lines(refetch: true)
|
139
145
|
.find { |line| line.include?('ngrok http -log') && line.end_with?(addr.to_s) }.split[0]
|
140
146
|
else
|
data/spec/ngrok/wrapper_spec.rb
CHANGED
@@ -260,12 +260,13 @@ RSpec.describe 'Ngrok::Wrapper' do
|
|
260
260
|
it 'set Ngrok::Wrapper pid and status attributes' do
|
261
261
|
expect(Ngrok::Wrapper).not_to receive(:spawn_new_ngrok)
|
262
262
|
|
263
|
-
Ngrok::Wrapper.start(persistence: true)
|
263
|
+
result = Ngrok::Wrapper.start(persistence: true)
|
264
264
|
|
265
265
|
expect(Ngrok::Wrapper.pid).to eql('795')
|
266
266
|
expect(Ngrok::Wrapper.status).to eql(:running)
|
267
267
|
expect(Ngrok::Wrapper.ngrok_url).to eql('http://b1cd-109-185-141-9.ngrok.io')
|
268
268
|
expect(Ngrok::Wrapper.ngrok_url_https).to eql('https://b1cd-109-185-141-9.ngrok.io')
|
269
|
+
expect(result).to eql('https://b1cd-109-185-141-9.ngrok.io')
|
269
270
|
end
|
270
271
|
end
|
271
272
|
|
@@ -306,13 +307,14 @@ RSpec.describe 'Ngrok::Wrapper' do
|
|
306
307
|
|
307
308
|
it 'sets Ngrok::Wrapper pid and status attributes' do
|
308
309
|
allow(Ngrok::Wrapper).to receive(:spawn_new_ngrok).with(persistent_ngrok: true).and_call_original
|
310
|
+
allow(Ngrok::Wrapper).to receive(:fork).and_call_original
|
309
311
|
allow(Ngrok::Wrapper)
|
310
312
|
.to receive(:ngrok_process_status_lines).with(refetch: true).and_return(new_ngrok_ps_lines)
|
311
313
|
allow(Ngrok::Wrapper).to receive(:fetch_urls)
|
312
314
|
|
313
315
|
expect(Ngrok::Wrapper).to receive(:spawn_new_ngrok).with(persistent_ngrok: true)
|
314
|
-
expect(Ngrok::Wrapper)
|
315
|
-
|
316
|
+
expect(Ngrok::Wrapper).to receive(:fork)
|
317
|
+
expect(Ngrok::Wrapper).to receive(:ngrok_process_status_lines).with(refetch: true)
|
316
318
|
allow(Ngrok::Wrapper).to receive(:fetch_urls)
|
317
319
|
|
318
320
|
Ngrok::Wrapper.start(persistence: true)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ngrok-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Bogdanovich
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-02-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: github_changelog_generator
|