ruby-nginx 1.0.0.pre.beta.4 → 1.0.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: 9a6d88117211b772d96bf97915e9ab94227c23fc3b30d01e658eca6d47c9f1fc
4
- data.tar.gz: d64a2d5beb1392bfe892bc48f34a3cd36362a8e1022360e5081c37874bedf460
3
+ metadata.gz: b53325ca5fc64324eaf5204d8192e9366a9564279e615d2e3797ce700c87556e
4
+ data.tar.gz: 6f29b0ed5033f6e738cef7b6b66a514be2d6aa7d1eae9c965f86dc8526e60c4a
5
5
  SHA512:
6
- metadata.gz: 3eb09a3ffffa06c21b7e0432c63fd1d1a40ae4d5234003357087ca016091801bdb33e0cfbf22f16e461bde45ec38aa38465590224e8acb2cbfca13f632fc6dc3
7
- data.tar.gz: ec68fde1a5e5ebe27383bc6e596533b2ed968d37fab890fbfa3033684a875105ff762441c69ad68c2b1cd9d94ca0833825888c55065bb7014875c9641eaa61d2
6
+ metadata.gz: 4160c514cc0e5562dce1ec6c567dfaa234ecc555fc999eba2aa0739133c9df6a2af2332b688ae415f6593abe21e82c42f5c850fe54a2d00e692db31c78a95a31
7
+ data.tar.gz: 04d918dec2962326dbec3e20c02e5c62c4f8e9b5e9268d6416f69a1975895de5ff5c03c092e445b2aba14efdf420211e0d0b66e3e244f854cce9b339263f0304
@@ -11,19 +11,35 @@ module Ruby
11
11
  @ip = ip
12
12
  @sudo = sudo
13
13
  sudo_reason = "Allow sudo elevation to add \"#{host}\" to /etc/hosts?"
14
- cmd = "echo \"#{ip} #{host}\" | #{sudoify("tee -a /etc/hosts", sudo, sudo_reason)}"
15
14
 
16
- super(cmd:, raise: Ruby::Nginx::ConfigError)
15
+ super(
16
+ cmd: "echo \"#{host_config}\" | #{sudoify("tee -a /etc/hosts", sudo, sudo_reason)}",
17
+ raise: Ruby::Nginx::ConfigError
18
+ )
17
19
  end
18
20
 
19
21
  def run
20
- super
22
+ super unless added?
21
23
  rescue Ruby::Nginx::ConfigError
22
24
  raise if @sudo
23
25
 
24
26
  # Elevate to sudo and try again.
25
27
  self.class.new(@host, @ip, sudo: true).run
26
28
  end
29
+
30
+ private
31
+
32
+ def added?
33
+ hosts.include?(host_config)
34
+ end
35
+
36
+ def hosts
37
+ @hosts ||= Ruby::Nginx::System::SafeFile.read("/etc/hosts")
38
+ end
39
+
40
+ def host_config
41
+ "#{@ip} #{@host}"
42
+ end
27
43
  end
28
44
  end
29
45
  end
@@ -7,8 +7,9 @@ module Ruby
7
7
  module Nginx
8
8
  module Commands
9
9
  class RemoveHostMapping < TerminalCommand
10
- def initialize(host, sudo: false)
10
+ def initialize(host, ignore_ip: nil, sudo: false)
11
11
  @host = host
12
+ @ignore_ip = ignore_ip
12
13
  @sudo = sudo
13
14
  @sudo_reason = "Allow sudo elevation to remove \"#{host}\" from /etc/hosts?"
14
15
 
@@ -16,16 +17,26 @@ module Ruby
16
17
  end
17
18
 
18
19
  def run
19
- super
20
+ super unless removed?
20
21
  rescue Ruby::Nginx::ConfigError
21
22
  raise if @sudo
22
23
 
23
24
  # Elevate to sudo and try again.
24
- self.class.new(@host, sudo: true).run
25
+ self.class.new(@host, ignore_ip: @ignore_ip, sudo: true).run
25
26
  end
26
27
 
27
28
  private
28
29
 
30
+ def removed?
31
+ hosts.each_line.none? do |host_config|
32
+ host_config.include?(@host) && (@ignore_ip.nil? || !host_config.include?(@ignore_ip))
33
+ end
34
+ end
35
+
36
+ def hosts
37
+ @hosts ||= Ruby::Nginx::System::SafeFile.read("/etc/hosts")
38
+ end
39
+
29
40
  def darwin_command
30
41
  sudoify("sed -i '' '/#{@host}/d' /etc/hosts", @sudo, @sudo_reason)
31
42
  end
@@ -20,9 +20,11 @@ module Ruby
20
20
  def initialize(sudo: false)
21
21
  @sudo = sudo
22
22
  sudo_reason = "Allow sudo elevation to add \"#{INCLUDE_STATEMENT}\" to NGINX configuration file?"
23
- cmd = "echo \"#{new_config}\" | #{sudoify("tee #{config_file_path}", sudo, sudo_reason)}"
24
23
 
25
- super(cmd:, raise: Ruby::Nginx::SetupError)
24
+ super(
25
+ cmd: "echo \"#{new_config}\" | #{sudoify("tee #{config_file_path}", sudo, sudo_reason)}",
26
+ raise: Ruby::Nginx::SetupError
27
+ )
26
28
  end
27
29
 
28
30
  def run
@@ -9,9 +9,8 @@ module Ruby
9
9
  def initialize(sudo: false)
10
10
  @sudo = sudo
11
11
  sudo_reason = "Allow sudo elevation to start NGINX?"
12
- cmd = sudoify("nginx", sudo, sudo_reason)
13
12
 
14
- super(cmd:, raise: Ruby::Nginx::StartError)
13
+ super(cmd: sudoify("nginx", sudo, sudo_reason), raise: Ruby::Nginx::StartError)
15
14
  end
16
15
 
17
16
  def run
@@ -9,9 +9,8 @@ module Ruby
9
9
  def initialize(sudo: false)
10
10
  @sudo = sudo
11
11
  sudo_reason = "Allow sudo elevation to stop NGINX?"
12
- cmd = sudoify("nginx -s stop", sudo, sudo_reason)
13
12
 
14
- super(cmd:, raise: Ruby::Nginx::StopError)
13
+ super(cmd: sudoify("nginx -s stop", sudo, sudo_reason), raise: Ruby::Nginx::StopError)
15
14
  end
16
15
 
17
16
  def run
@@ -9,9 +9,8 @@ module Ruby
9
9
  def initialize(sudo: false)
10
10
  @sudo = sudo
11
11
  sudo_reason = "Allow sudo elevation to validate NGINX config?"
12
- cmd = sudoify("nginx -t", sudo, sudo_reason)
13
12
 
14
- super(cmd:, raise: Ruby::Nginx::ConfigError)
13
+ super(cmd: sudoify("nginx -t", sudo, sudo_reason), raise: Ruby::Nginx::ConfigError)
15
14
  end
16
15
 
17
16
  def run
@@ -33,6 +33,7 @@ module Ruby
33
33
  validate!
34
34
  apply_dynamic_defaults!
35
35
 
36
+ create_temp_path!
36
37
  create_ssl_certs! if options[:ssl]
37
38
  create_log_files! if options[:log]
38
39
 
@@ -51,6 +52,7 @@ module Ruby
51
52
 
52
53
  def default_paths
53
54
  {
55
+ temp_path: default_path("tmp"),
54
56
  ssl_certificate_path: default_path("certs/_#{options[:domain]}.pem"),
55
57
  ssl_certificate_key_path: default_path("certs/_#{options[:domain]}-key.pem"),
56
58
  access_log_path: default_path("logs/#{options[:domain]}.access.log"),
@@ -92,6 +94,10 @@ module Ruby
92
94
  raise Ruby::Nginx::AbortError, "Failed to read template.", cause: e
93
95
  end
94
96
 
97
+ def create_temp_path!
98
+ options[:temp_path] = System::SafeFile.mkdir(options[:temp_path])
99
+ end
100
+
95
101
  def create_ssl_certs!
96
102
  System::Mkcert.create!(
97
103
  options[:domain],
@@ -9,12 +9,12 @@ module Ruby
9
9
  class Hosts
10
10
  class << self
11
11
  def add(host, ip)
12
- remove(host)
13
- Commands::AddHostMapping.new(host, ip).run.success?
12
+ remove(host, ignore_ip: ip)
13
+ Commands::AddHostMapping.new(host, ip).run&.success?
14
14
  end
15
15
 
16
- def remove(host)
17
- Commands::RemoveHostMapping.new(host).run.success?
16
+ def remove(host, ignore_ip: nil)
17
+ Commands::RemoveHostMapping.new(host, ignore_ip:).run&.success?
18
18
  end
19
19
  end
20
20
  end
@@ -7,6 +7,14 @@ module Ruby
7
7
  module System
8
8
  class SafeFile
9
9
  class << self
10
+ def mkdir(dir_path)
11
+ safe_path = File.expand_path(dir_path)
12
+
13
+ FileUtils.mkdir_p(dir_path)
14
+
15
+ safe_path
16
+ end
17
+
10
18
  def touch(file_path)
11
19
  safe_path = File.expand_path(file_path)
12
20
 
@@ -54,6 +54,9 @@ server {
54
54
  error_log <%= options[:error_log_path] %> warn;
55
55
  <% end %>
56
56
 
57
+ # Do not use the default proxy_temp_path, this is to avoid directory permissions issues.
58
+ proxy_temp_path <%= options[:temp_path] %> 1 2;
59
+
57
60
  # reverse proxy
58
61
  location @<%= name %> {
59
62
  proxy_pass http://<%= name %>;
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Ruby
4
4
  module Nginx
5
- VERSION = "1.0.0-beta.4"
5
+ VERSION = "1.0.1"
6
6
 
7
7
  Version = Gem::Version
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-nginx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta.4
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bert McCutchen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-15 00:00:00.000000000 Z
11
+ date: 2025-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: erb