nginx-server 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 98107dc1a5a370fcc90168e74eb0408fcf9ac84c06161dd04ccbb7e665fc049d
4
+ data.tar.gz: cb2ac11c851173ef82d2368f4d49d64b6318bb05b904a8eb07e193d253551e86
5
+ SHA512:
6
+ metadata.gz: 7e4cd3edb4f0044508d37b9029b47ef6f8c5daf4c74f68decab57209e54568bcdf0af312de91ae424ca541990582671fe7d5d25e853dd11c9ec2e7e74c6413cf
7
+ data.tar.gz: 73460b49c80da4fc4cd7949102c575add1e7e5f21aba46c68a9556e860b18c49a1bd15dceae487a653a87c3458b180ba96a9d8d0f46b33c13b8f7ca7e7b9c956
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,19 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ nginx-server (0.0.0)
5
+ suppress_output
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ suppress_output (0.0.1)
11
+
12
+ PLATFORMS
13
+ ruby
14
+
15
+ DEPENDENCIES
16
+ nginx-server!
17
+
18
+ BUNDLED WITH
19
+ 1.16.1
data/examples/0.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'nginx/server'
2
+
3
+ class Proxy < Nginx::Server
4
+ def first_upstream
5
+ "#{@dir}/first.sock"
6
+ end
7
+ end
8
+
9
+ server = Proxy.new 'examples/nginx.conf.erb'
10
+ server.start
11
+ sleep
@@ -0,0 +1,22 @@
1
+ events {
2
+ worker_connections 1024;
3
+ }
4
+
5
+ error_log <%= error_log %>;
6
+ pid <%= pid %>;
7
+
8
+ http {
9
+ access_log <%= access_log %>;
10
+
11
+ upstream first_upstream {
12
+ server unix:<%= first_upstream %>;
13
+ }
14
+
15
+ server {
16
+ listen 127.0.0.1:8080;
17
+
18
+ location /first/ {
19
+ proxy_pass http://first_upstream/;
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,43 @@
1
+ require 'securerandom'
2
+ require 'pathname'
3
+ require 'erb'
4
+ require 'suppress_output'
5
+
6
+ module Nginx
7
+ class Server
8
+ def initialize template,
9
+ dir: "/tmp/nginx.#{Process.pid}.#{SecureRandom.uuid}"
10
+ @dir = Pathname dir; @dir.mkpath
11
+ create_config template
12
+ end
13
+
14
+ def start
15
+ @nginx_pid = suppress_output do
16
+ spawn "nginx -c nginx.conf -p #{@dir} -g 'daemon off;'"
17
+ end; at_exit { stop }
18
+ @nginx_pid
19
+ end
20
+
21
+ def stop
22
+ `kill #{@nginx_pid}`
23
+ end
24
+
25
+ def error_log
26
+ 'error.log'
27
+ end
28
+
29
+ def access_log
30
+ 'access.log'
31
+ end
32
+
33
+ def pid
34
+ 'nginx.pid'
35
+ end
36
+
37
+ private
38
+ def create_config template
39
+ string = ERB.new(IO.read template).result(binding)
40
+ IO.write "#{@dir}/nginx.conf", string
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,9 @@
1
+ Gem::Specification.new do |g|
2
+ g.name = 'nginx-server'
3
+ g.files = `git ls-files`.split($/)
4
+ g.version = '0.0.0'
5
+ g.summary = 'Manage Nginx servers from Ruby.'
6
+ g.authors = ['Anatoly Chernow']
7
+
8
+ g.add_dependency 'suppress_output'
9
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nginx-server
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Anatoly Chernow
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-06-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: suppress_output
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'
27
+ description:
28
+ email:
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - Gemfile
34
+ - Gemfile.lock
35
+ - examples/0.rb
36
+ - examples/nginx.conf.erb
37
+ - lib/nginx/server.rb
38
+ - nginx-server.gemspec
39
+ homepage:
40
+ licenses: []
41
+ metadata: {}
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project:
58
+ rubygems_version: 2.7.6
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: Manage Nginx servers from Ruby.
62
+ test_files: []