cuba-bin 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 +4 -4
- data/cuba-bin.gemspec +2 -1
- data/lib/cuba/bin.rb +23 -21
- data/lib/cuba/bin/daemon.rb +92 -94
- metadata +15 -2
- data/lib/cuba/bin/version.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1626abc9ea3d27fadf54ac21bb2b94043bd9d18
|
4
|
+
data.tar.gz: d68bc5330a8670fcaa788117eee8d4e85fa13909
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 634b934289fcc14feba6b8045530298dab0b16cc0d91687e3cdb2b5e1672a803dd1190a00b35568bdd34868c805962941e34da163006bf6cc9445ad09974fa6e
|
7
|
+
data.tar.gz: c7c2f14d49e3f5e3abc38e63676826cbef5f6a80404e53fb6471c2898f2229b419a5180cf121cc36b472f5e0f29f1230eca8aa5de97b08b3146e6f4d5b2105e9
|
data/cuba-bin.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'cuba/bin
|
4
|
+
require 'cuba/bin'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "cuba-bin"
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "cuba"
|
21
22
|
spec.add_dependency "clap"
|
22
23
|
spec.add_dependency "puma"
|
23
24
|
spec.add_dependency "listen"
|
data/lib/cuba/bin.rb
CHANGED
@@ -1,31 +1,33 @@
|
|
1
|
-
require "cuba
|
1
|
+
require "cuba"
|
2
2
|
require "cuba/bin/daemon"
|
3
3
|
|
4
|
-
module Cuba
|
5
|
-
|
6
|
-
|
4
|
+
module Cuba::Bin
|
5
|
+
unless defined? VERSION
|
6
|
+
VERSION = '0.1.1'
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
Daemon.new(argv).run
|
10
|
-
end
|
9
|
+
extend self
|
11
10
|
|
12
|
-
|
11
|
+
def server
|
12
|
+
Daemon.new(argv).run
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
@args ||= begin
|
16
|
-
ARGV.shift
|
17
|
-
ARGV
|
18
|
-
end
|
15
|
+
private
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
17
|
+
def argv
|
18
|
+
@args ||= begin
|
19
|
+
ARGV.shift
|
20
|
+
ARGV
|
21
|
+
end
|
27
22
|
|
28
|
-
|
23
|
+
@args.each_with_index do |arg, i|
|
24
|
+
if arg[/\s/]
|
25
|
+
@args[i] = "\"#{arg}\""
|
26
|
+
else
|
27
|
+
@args[i] = arg
|
28
|
+
end
|
29
29
|
end
|
30
|
+
|
31
|
+
@args
|
30
32
|
end
|
31
33
|
end
|
data/lib/cuba/bin/daemon.rb
CHANGED
@@ -1,118 +1,116 @@
|
|
1
1
|
require 'listen'
|
2
2
|
|
3
|
-
module Cuba
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
3
|
+
module Cuba::Bin
|
4
|
+
class Daemon
|
5
|
+
extensions = %w(
|
6
|
+
builder coffee creole css slim erb erubis jbuilder
|
7
|
+
slim mote haml html js styl dom
|
8
|
+
less liquid mab markdown md mdown mediawiki mkd mw
|
9
|
+
nokogiri radius rb rdoc rhtml ru
|
10
|
+
sass scss str textile txt wiki yajl yml
|
11
|
+
env.*
|
12
|
+
).sort
|
13
|
+
|
14
|
+
DEFAULT_RELOAD_PATTERN = %r(\.(?:builder #{extensions.join('|')})$)
|
15
|
+
|
16
|
+
DEFAULT_FULL_RELOAD_PATTERN = /^Gemfile(?:\.lock)?$/
|
17
|
+
|
18
|
+
# todo> make configurable
|
19
|
+
IGNORE_PATTERNS = [/\.direnv/, /\.sass-cache/, /^tmp/]
|
20
|
+
|
21
|
+
attr_accessor :options, :puma_args
|
22
|
+
attr_accessor :puma_pid
|
23
|
+
|
24
|
+
def initialize(puma_args)
|
25
|
+
puma_args.concat ['-w', '1'] unless puma_args.include? '-w'
|
26
|
+
|
27
|
+
@puma_args = puma_args
|
28
|
+
# @options, @puma_args = options, puma_args
|
29
|
+
@options = {}
|
30
|
+
options[:pattern] ||= DEFAULT_RELOAD_PATTERN
|
31
|
+
options[:full] ||= DEFAULT_FULL_RELOAD_PATTERN
|
32
|
+
options[:force_polling] ||= false
|
33
|
+
self
|
34
|
+
end
|
36
35
|
|
37
36
|
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
def log(msg)
|
38
|
+
$stderr.puts msg
|
39
|
+
end
|
41
40
|
|
42
|
-
|
43
|
-
|
41
|
+
def start_puma
|
42
|
+
ENV['RACK_ENV'] ||= 'development'
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
envs = {}
|
45
|
+
env = '.env'
|
46
|
+
rack_env = "#{env}.#{ENV['RACK_ENV']}"
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
if File.file? rack_env
|
49
|
+
env = rack_env
|
50
|
+
elsif !File.file? env
|
51
|
+
env = false
|
52
|
+
end
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
54
|
+
if env
|
55
|
+
File.foreach env do |line|
|
56
|
+
key, value = line.split "="
|
57
|
+
envs[key] = value.gsub('\n', '').strip
|
60
58
|
end
|
61
|
-
|
62
|
-
@puma_pid = Kernel.spawn(envs, 'puma', *puma_args)
|
63
59
|
end
|
64
60
|
|
65
|
-
|
66
|
-
|
67
|
-
Process.kill(:QUIT, puma_pid)
|
68
|
-
Process.wait(puma_pid)
|
69
|
-
start_puma
|
70
|
-
end
|
61
|
+
@puma_pid = Kernel.spawn(envs, 'puma', *puma_args)
|
62
|
+
end
|
71
63
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
64
|
+
# TODO maybe consider doing like: http://puma.bogomips.org/SIGNALS.html
|
65
|
+
def reload_everything
|
66
|
+
Process.kill(:QUIT, puma_pid)
|
67
|
+
Process.wait(puma_pid)
|
68
|
+
start_puma
|
69
|
+
end
|
78
70
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
71
|
+
def shutdown
|
72
|
+
listener.stop
|
73
|
+
Process.kill(:TERM, puma_pid)
|
74
|
+
Process.wait(puma_pid)
|
75
|
+
exit
|
76
|
+
end
|
83
77
|
|
84
|
-
|
85
|
-
|
78
|
+
# tell puma to gracefully shut down workers
|
79
|
+
def graceful_restart
|
80
|
+
Process.kill(:SIGUSR1, puma_pid)
|
81
|
+
end
|
86
82
|
|
87
|
-
|
88
|
-
|
89
|
-
else
|
90
|
-
graceful_restart
|
91
|
-
end
|
92
|
-
end
|
83
|
+
def handle_change(modified, added, removed)
|
84
|
+
log "File change event detected: #{{modified: modified, added: added, removed: removed}.inspect}"
|
93
85
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
86
|
+
if (modified + added + removed).index {|f| f =~ options[:full]}
|
87
|
+
reload_everything
|
88
|
+
else
|
89
|
+
graceful_restart
|
90
|
+
end
|
91
|
+
end
|
99
92
|
|
100
|
-
|
101
|
-
|
102
|
-
|
93
|
+
def listener
|
94
|
+
@listener ||= begin
|
95
|
+
x = Listen.to(Dir.pwd, :relative_paths=>true, :force_polling=> options[:force_polling]) do |modified, added, removed|
|
96
|
+
handle_change(modified, added, removed)
|
103
97
|
end
|
98
|
+
|
99
|
+
x.only([ options[:pattern], options[:full] ])
|
100
|
+
IGNORE_PATTERNS.map{|ptrn| x.ignore(ptrn) }
|
101
|
+
x
|
104
102
|
end
|
103
|
+
end
|
105
104
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
105
|
+
def run
|
106
|
+
that = self
|
107
|
+
Signal.trap("INT") { |signo| that.shutdown }
|
108
|
+
Signal.trap("EXIT") { |signo| that.shutdown }
|
109
|
+
listener.start
|
110
|
+
start_puma
|
112
111
|
|
113
|
-
|
114
|
-
|
115
|
-
end
|
112
|
+
# And now we just want to keep the thread alive--we're just waiting around to get interrupted at this point.
|
113
|
+
sleep(99999) while true
|
116
114
|
end
|
117
115
|
end
|
118
116
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuba-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
@@ -10,6 +10,20 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2014-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cuba
|
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'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: clap
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,7 +111,6 @@ files:
|
|
97
111
|
- cuba-bin.gemspec
|
98
112
|
- lib/cuba/bin.rb
|
99
113
|
- lib/cuba/bin/daemon.rb
|
100
|
-
- lib/cuba/bin/version.rb
|
101
114
|
homepage: ''
|
102
115
|
licenses:
|
103
116
|
- MIT
|