rails_caddy_dev 0.4.0 → 0.5.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: 78fee0b9bac1b77765d0ce99ea59a6e406856070c7c74f18ffa90a19234a5f8c
4
- data.tar.gz: 66e4f4f7dca2848f43a86fe8ae1a912193be6956dfb9ba140220556ce29f6c8f
3
+ metadata.gz: a8fe9678c7487626f988b63e3b205916e386179605835d7eed6699ee9be9aff4
4
+ data.tar.gz: ace04b2d24135e1b3d121a5af921ce68eb1186888b77857d9fecc8c733fbf9df
5
5
  SHA512:
6
- metadata.gz: 971f467379b6a55f60118dae60a88742ee5f69fc2736f962c89b74d11086d208ab92f2472de97eedcef5c0b5b1e00241f964f35b96a317ac7a522ed17da1c823
7
- data.tar.gz: e6195465d7f69f27d410e367a35b6afd8f283fe48ca2bb2f55873229dba40ccebdc71021af9738bced2e3e724e725f27e87aaac2a8b689947ea9234e908e0775
6
+ metadata.gz: e7b56f5687870f5e41ff56523508ed1a968068f75b8b6baebd4b75c2c0513feac58e2ea8106893ca67de61f20cc69263d8393b7ceb070e49bf3fec26e472aa85
7
+ data.tar.gz: cf9046f2aa1d912fb3a37c48ee7a04cc173f164a22088931caf99f7721311fee3b228ff75a66559512212aa664a95617b2692fea84c423f6ddf1501f6f728555
data/README.md CHANGED
@@ -75,6 +75,16 @@ export PORT=$(bundle exec rails_caddy_dev port)
75
75
 
76
76
  Subdomains are also supported due to a wildcard Caddy route that will be configured. For example, if the resolved domain is `myapp`, then `api.myapp.localhost` will also proxy to your Rails server.
77
77
 
78
+ ### Removing a Route
79
+
80
+ To remove the Caddy route for the current project, run:
81
+
82
+ ```bash
83
+ bundle exec rails_caddy_dev delete
84
+ ```
85
+
86
+ This deletes the route registered for `RAILS_CADDY_DEV_DOMAIN` (or the current directory's basename if unset).
87
+
78
88
  ## Development
79
89
 
80
90
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/bin/rails_caddy_dev CHANGED
@@ -1,11 +1,55 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- if ARGV[0] == 'port'
5
- require 'socket'
4
+ require 'net/http'
5
+ require 'socket'
6
+
7
+ def resolve_domain
8
+ domain = ENV.fetch('RAILS_CADDY_DEV_DOMAIN') { File.basename(Dir.pwd) }
9
+ domain = File.basename(Dir.pwd) if domain.strip.empty?
10
+ domain.downcase
11
+ end
12
+
13
+ case ARGV[0]
14
+ when 'port'
6
15
  puts(Addrinfo.tcp('', 0).bind { |s| s.local_address.ip_port })
7
16
  exit 0
17
+ when 'delete'
18
+ domain = resolve_domain
19
+ caddy_host = ENV.fetch('CADDY_HOST', 'localhost')
20
+ caddy_port = ENV.fetch('CADDY_PORT', '2019').to_i
21
+
22
+ if !ARGV[1..].intersect?(%w[-y --yes])
23
+ print "Delete Caddy route for '#{domain}'? [y/N] "
24
+ answer = $stdin.gets&.strip&.downcase
25
+ if !%w[y yes].include?(answer)
26
+ puts 'Aborted.'
27
+ exit 1
28
+ end
29
+ end
30
+
31
+ uri = URI("http://#{caddy_host}:#{caddy_port}/id/#{domain}")
32
+ begin
33
+ response = Net::HTTP.start(uri.host, uri.port) do |http|
34
+ http.request(Net::HTTP::Delete.new(uri.path))
35
+ end
36
+ rescue Errno::ECONNREFUSED
37
+ puts "⚠️ Caddy admin API not available at #{caddy_host}:#{caddy_port}. Is caddy running?"
38
+ exit 1
39
+ end
40
+
41
+ case response
42
+ when Net::HTTPSuccess
43
+ puts "=> Caddy config for '#{domain}' deleted"
44
+ when Net::HTTPNotFound
45
+ puts "=> No Caddy config found for '#{domain}'"
46
+ else
47
+ puts "=! Failed to delete Caddy config: #{response.body}"
48
+ exit 1
49
+ end
8
50
  else
9
- puts 'Usage: `rails_caddy_dev port` to get an available port number.'
51
+ puts 'Usage:'
52
+ puts ' rails_caddy_dev port # print an available TCP port'
53
+ puts ' rails_caddy_dev delete [-y|--yes] # remove the Caddy route'
10
54
  exit 1
11
55
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsCaddyDev
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_caddy_dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Moss