puma-ngrok-tunnel 0.1.0 → 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: 3227a5d893088f72be76945ce1e5c421026e521fc46e5ff97cde4306a090eef2
4
- data.tar.gz: 2326bb0ae39d5b07ce731ee326068c440dc739782a7fbd43a3996ac8429d32a1
3
+ metadata.gz: d029d8c4cf8dc072229ec171cc0efb786336832b35244c077706aab670297f5b
4
+ data.tar.gz: 2be2b3c9fb277c079d0f74183805703505fff780fc60b27fba90d0ac189f8f1c
5
5
  SHA512:
6
- metadata.gz: dc740df330bb4896132983e8766888d274c0294873989c1f489e96c63892a5d2258d4dbc8d826b2c4ed4fdec7134a9e58b8da646ad2e043b0be8a948c6768fc1
7
- data.tar.gz: d68ee5cf93fb39e49505d34772dd01af5f8cb86e89a868d36f5914eb537f36cf53a95d9b6939104337828243525423eb243d7d3fc5bac560af7927221b63c945
6
+ metadata.gz: ac0f89bbd524854feae311cac699a33d74e6e2459c88b9886afc786c069b0fe58efe322f86480efba2082bf5e6e0d6263ae6c04a6c1bf4372535d29b67f57d98
7
+ data.tar.gz: dad8c33285f788cf5d7745c25bce721b62665efadb704b1fb9bfa4d03064870776df087cb7ce23c94cc3d76c69a0e08d17ee208b6d6f9feaef62aa657bdab4dd
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ # Changelog
2
+
3
+ ## 0.1.1
4
+
5
+ * Improving mechanism for the tunnel being closed when rails is restarted, namely when `touch tmp/restart.txt` is used. This is based on https://github.com/harmjanblok/puma-metrics/blob/master/lib/puma/plugin/metrics.rb
6
+ * Adding more examples to docs.
7
+
8
+ ## 0.1.0
9
+
10
+ * Initial Release
data/README.md CHANGED
@@ -1,7 +1,17 @@
1
1
  # puma-ngrok-tunnel
2
2
 
3
- A plugin for puma that'll start a ngrok tunnel to your rails server. Built to make it easier to build apps that require webhooks to work as expected.
3
+ [![Gem Version](https://badge.fury.io/rb/puma-ngrok-tunnel.svg)](https://badge.fury.io/rb/puma-ngrok-tunnel)
4
4
 
5
+ ![image](https://user-images.githubusercontent.com/325384/57193363-1d2c4800-6f32-11e9-82a4-1efc54fac0ad.png)
6
+
7
+ A plugin for puma that'll start a [ngrok tunnel](https://ngrok.com/) to your rails server when puma starts. Primary I built this to make the following a little easier:
8
+
9
+ * Working with apps that require Webhooks to be received by the app to work correctly
10
+ * Demoing your local rails app to someone else without have to share IPs
11
+ * Working with [Puma-dev](https://github.com/puma/puma-dev/) so your apps feels as production-like as possible.
12
+ * Testing on mobile.
13
+
14
+ I've setup a [sample Rails 6 app](https://github.com/MikeRogers0/puma-ngrok-tunnel-SampleRails6App) that demos an implementation of this gem.
5
15
 
6
16
  ## Installation
7
17
 
@@ -25,15 +35,7 @@ Lastly in your `config/puma.rb` file, append the line:
25
35
 
26
36
 
27
37
  ```ruby
28
- plugin :ngrok_tunnel if ENV['NGROK_TUNNEL_ENABLED']
29
- ```
30
-
31
- ## Installation with puma-dev
32
-
33
- Add the environmental variable (in a .env file for example):
34
-
35
- ```
36
- CONFIG=config/puma.rb
38
+ plugin :ngrok_tunnel if ENV.fetch('RAILS_ENV') { 'development' } == 'development'
37
39
  ```
38
40
 
39
41
  ## Usage
@@ -42,16 +44,26 @@ Read about how to configure puma to use this plugin here: https://github.com/pum
42
44
 
43
45
  There are a few variables this plugin reads from the environment which control its behavior. These are based on the arguments you'd pass to the [ngrok terminal command](https://ngrok.com/docs#http-subdomain).
44
46
 
45
- * `PORT` - defaults to 3000
46
- * `NGROK_ADDR`
47
- * `NGROK_AUTHTOKEN`
48
- * `NGROK_HOST_HEADER`
49
- * `NGROK_CONFIG`
50
- * `NGROK_SUBDOMAIN`
51
- * `NGROK_REGION`
52
- * `NGROK_HOSTNAME` - Full ngrok hostname, shouldn't be set if `NGROK_SUBDOMAIN` is set.
47
+ * `PORT` - Optional, your rails port, defaults to `3000`. If `NGROK_ADDR` is set, this is ignored.
48
+ * `NGROK_ADDR` - Optional, if you're using Puma-dev set this to be your hostname & port, e.g. `my-app-name.test:443`.
49
+ * `NGROK_AUTHTOKEN` - Optional, your ngrok authtoken. If you have ngrok configured on your local machine you don't need this.
50
+ * `NGROK_HOST_HEADER` - Optional, if you're using Puma-dev you should set this to your virtual host e.g. `my-app-name.test`.
51
+ * `NGROK_CONFIG` - Optional, your ngrok configuration file location, defaults to `~/.ngrok2/ngrok.yml`.
52
+ * `NGROK_SUBDOMAIN` - Optional, ngrok will assign you a random subdomain unless this is set.
53
+ * `NGROK_REGION` - Optional, the region of your ngrok tunnel. defaults to `us`.
54
+ * `NGROK_HOSTNAME` - Optional, full ngrok hostname, shouldn't be set if `NGROK_SUBDOMAIN` is set.
55
+
56
+ ### Sample .env for use with `rails s`
57
+
58
+ ```
59
+ # puma-ngrok-tunnel setup
60
+ # You need https://github.com/bkeepers/dotenv setup to make sure Puma can use these.
61
+ export NGROK_TUNNEL_ENABLED=true
62
+ export NGROK_SUBDOMAIN=my-app-name
63
+ export NGROK_REGION=eu
64
+ ```
53
65
 
54
- ### Sample .env
66
+ ### Sample .env for use with Puma-dev
55
67
 
56
68
  ```
57
69
  # Puma-dev: You need to define this otherwise it uses it's own puma.rb file.
@@ -59,7 +71,6 @@ CONFIG=config/puma.rb
59
71
 
60
72
  # puma-ngrok-tunnel setup
61
73
  # These should start with 'export' otherwise puma-dev won't use them.
62
- export NGROK_TUNNEL_ENABLED=true
63
74
  export NGROK_SUBDOMAIN=my-app-name
64
75
  export NGROK_REGION=eu
65
76
  # The URL (and HTTPS Port) you might use to access this under Puma-dev
@@ -67,6 +78,37 @@ export NGROK_ADDR=my-app-name.test:443
67
78
  export NGROK_HOST_HEADER=my-app-name.test
68
79
  ```
69
80
 
81
+ ## Pitfalls & solutions
82
+
83
+ ### ngrok tunnel not always stopping when puma-dev stops
84
+
85
+ If you see an error saying `http: proxy error: dial unix`, it means ngrok was able to stop when puma was stopped. Right now the solution is to run:
86
+
87
+ $ pkill ngrok
88
+
89
+ in your terminal.
90
+
91
+ ### Rails 6 "Blocked host" error
92
+
93
+ If you seeing an error like:
94
+
95
+ ```
96
+ Blocked host: a620ba29.ngrok.io
97
+ To allow requests to a620ba29.ngrok.io, add the following to your environment configuration:
98
+ config.hosts << "a620ba29.ngrok.io"
99
+ ```
100
+
101
+ Open your `config/environments/development.rb` file add add:
102
+
103
+ ```ruby
104
+ # Whitelist ngrok connections to development enviroment.
105
+ config.hosts << /[a-z0-9]+\.ngrok\.io/
106
+ # Whitelist Puma-Dev hostname.
107
+ config.hosts << 'samplerailsapp.test'
108
+ config.hosts << /[a-z0-9]+\.samplerailsapp.test/
109
+ ```
110
+
111
+ This will whitelist the ngrok subdomain to access your rails host.
70
112
 
71
113
  ## License
72
114
 
@@ -1,3 +1,3 @@
1
1
  module PumaNgrokTunnel
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -1,11 +1,20 @@
1
- require 'ngrok/tunnel'
2
1
 
3
2
  Puma::Plugin.create do
4
- def start(_dsl)
5
- in_background do
6
- puts '[puma-ngrok-tunnel] Starting'
7
- puts '[puma-ngrok-tunnel] Tunneling at: ' + Ngrok::Tunnel.start(options)
3
+ def start(launcher)
4
+ puts '[puma-ngrok-tunnel] Starting'
5
+
6
+ require 'ngrok/tunnel'
7
+
8
+ launcher.events.register(:state) do |state|
9
+ if %i[halt restart stop].include?(state)
10
+ if Ngrok::Tunnel.running?
11
+ puts '[puma-ngrok-tunnel] Stopping'
12
+ Ngrok::Tunnel.stop
13
+ end
14
+ end
8
15
  end
16
+
17
+ puts '[puma-ngrok-tunnel] Tunneling at: ' + Ngrok::Tunnel.start(options)
9
18
  end
10
19
 
11
20
  def options
@@ -20,8 +29,3 @@ Puma::Plugin.create do
20
29
  }.reject { |_, value| value.nil? }
21
30
  end
22
31
  end
23
-
24
- at_exit do
25
- puts '[puma-ngrok-tunnel] Stopping'
26
- Ngrok::Tunnel.stop
27
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puma-ngrok-tunnel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Rogers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-04 00:00:00.000000000 Z
11
+ date: 2019-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ngrok-tunnel
@@ -81,6 +81,7 @@ extra_rdoc_files: []
81
81
  files:
82
82
  - ".gitignore"
83
83
  - ".travis.yml"
84
+ - CHANGELOG.md
84
85
  - Gemfile
85
86
  - LICENSE.txt
86
87
  - README.md