guard-combustion 0.1.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 +7 -0
- data/LICENSE +20 -0
- data/Readme.md +33 -0
- data/lib/guard/combustion/combustion_helper.rb +144 -0
- data/lib/guard/combustion/templates/Guardfile +6 -0
- data/lib/guard/combustion/version.rb +5 -0
- data/lib/guard/combustion.rb +29 -0
- metadata +65 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 13d535c12e2065b16c6dd2c39d63912cd62b94e0
|
4
|
+
data.tar.gz: 9db93c30fd2be56cfff66abaf2a8a0fe188138af
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cbf395173ea18af253b85c2ef38100b0ab47477ba5ba83c909384dcbc706cdc90d8c7328bc60fed0e6202b9d53510dc5871f039ffb26b4673320ebc06fd602bf
|
7
|
+
data.tar.gz: 36810e84b4ab5c3a2063248bb8025ec01b0cceabf3c0e21e98c011b3f58ea194af8355389a2852ec8d718735c252e420ea614e7f1936d49f8d9adf2c43760dbe
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Ruben Caliandro
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Readme.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# Guard::Combustion
|
2
|
+
|
3
|
+
This guard allows you to easily develop Rails engines with [Combustion](https://github.com/pat/combustion) with no need to restart the dummy application after every change.
|
4
|
+
|
5
|
+
|
6
|
+
## Install
|
7
|
+
|
8
|
+
Make sure you have [guard](http://github.com/guard/guard) installed and Combustion fully configured on your Rails engine.
|
9
|
+
|
10
|
+
Install the gem with:
|
11
|
+
|
12
|
+
gem install guard-combustion
|
13
|
+
|
14
|
+
Or add it to your Gemfile:
|
15
|
+
|
16
|
+
gem 'guard-combustion'
|
17
|
+
|
18
|
+
And then add a basic setup to your Guardfile:
|
19
|
+
|
20
|
+
guard init combustion
|
21
|
+
|
22
|
+
|
23
|
+
## Integration with guard-rspec
|
24
|
+
|
25
|
+
If you are using guard-rspec, maybe you want to stop Combustion while running tests,
|
26
|
+
just to avoid conflicts with the instance of Combustion created by Rspec.
|
27
|
+
|
28
|
+
For doing that, you have to add theese lines into the `guard :rspec` block
|
29
|
+
|
30
|
+
callback(:run_all_begin) { CombustionHelper.stop_combustion }
|
31
|
+
callback(:run_on_modifications_begin) { CombustionHelper.stop_combustion }
|
32
|
+
callback(:run_all_end) { CombustionHelper.start_combustion }
|
33
|
+
callback(:run_on_modifications_end) { CombustionHelper.start_combustion }
|
@@ -0,0 +1,144 @@
|
|
1
|
+
#
|
2
|
+
# Questa classe contiene funzioni utili per la gestione automatica di combustion con guard
|
3
|
+
#
|
4
|
+
# Per configurare la porta utilizzata da combustion, inserire in un file ".guard_combustion_port" la porta desiderata (solo il numero).
|
5
|
+
# Se questo file non esiste, viene creato automaticamente al primo utilizzo di guard, utilizzando la porta di default.
|
6
|
+
#
|
7
|
+
# NB: .guard_combustion_port è gitignored.
|
8
|
+
#
|
9
|
+
class CombustionHelper
|
10
|
+
|
11
|
+
#
|
12
|
+
# La porta di default utilizzata da combustion.
|
13
|
+
# Questa porta viene utilizzata solo se non è già stata configurata in .guard_combustion_port
|
14
|
+
#
|
15
|
+
# NB: per modificare la porta che si vuole far utilizzare a combustion non modificare direttamente questa variabile.
|
16
|
+
# Leggere invece le istruzioni in cima alla classe
|
17
|
+
#
|
18
|
+
@@default_port = 9292
|
19
|
+
@@last_start = Time.now - 5
|
20
|
+
@@combustion_pid_file = "./tmp/.combustion_pid"
|
21
|
+
@@guard_combustion_port = ".guard_combustion_port"
|
22
|
+
|
23
|
+
#
|
24
|
+
# Definisce tutti i metodi come statici
|
25
|
+
#
|
26
|
+
class << self
|
27
|
+
#
|
28
|
+
# Avvia combustion
|
29
|
+
#
|
30
|
+
def start_combustion
|
31
|
+
if get_combustion_pid.nil?
|
32
|
+
puts "starting combustion..."
|
33
|
+
combustion_port = get_guard_combustion_port
|
34
|
+
`#{combustion_cmd(combustion_port)}`
|
35
|
+
sleep(1)
|
36
|
+
@@last_start = Time.now
|
37
|
+
pid = get_combustion_pid
|
38
|
+
if pid.nil?
|
39
|
+
puts "something went wrong, likely combustion were not started"
|
40
|
+
else
|
41
|
+
puts "\033[22;32mcombustion started and listening at port #{combustion_port} with pid #{pid}\x1b[0m"
|
42
|
+
end
|
43
|
+
else
|
44
|
+
puts "another instance of combustion is already running with pid #{pid}"
|
45
|
+
restart_combustion
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
# Uccide combustion
|
51
|
+
#
|
52
|
+
def stop_combustion
|
53
|
+
puts "stopping combustion..."
|
54
|
+
pid = get_combustion_pid
|
55
|
+
if pid.nil?
|
56
|
+
puts "no instances of combustion were found"
|
57
|
+
else
|
58
|
+
`kill -9 #{pid}`
|
59
|
+
puts "\033[22;31mcombustion stopped\x1b[0m"
|
60
|
+
delete_combustion_pid
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
#
|
65
|
+
# Riavvia combustion
|
66
|
+
#
|
67
|
+
def restart_combustion
|
68
|
+
if Time.now > @@last_start + 1 # Controlla che il server non sia stato già avviato meno di 1 secondo fa
|
69
|
+
puts "\033[01;33mrestarting combustion...\x1b[0m"
|
70
|
+
stop_combustion
|
71
|
+
start_combustion
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
#
|
78
|
+
# Scrive la porta di default che verrà utilizzata per combustion in un file .guard_combustion_port
|
79
|
+
#
|
80
|
+
def set_guard_combustion_port
|
81
|
+
file = File.open(@@guard_combustion_port, "w")
|
82
|
+
file.write(@@default_port.to_s)
|
83
|
+
file.close
|
84
|
+
@@default_port
|
85
|
+
end
|
86
|
+
|
87
|
+
#
|
88
|
+
# Legge la porta di default che viene utilizzata per combustion dal file .guard_combustion_port
|
89
|
+
# Se il file non esiste, lo crea e gli assegna la porta di default
|
90
|
+
#
|
91
|
+
def get_guard_combustion_port
|
92
|
+
begin
|
93
|
+
if File.exists? @@guard_combustion_port
|
94
|
+
file = File.open(@@guard_combustion_port, "r")
|
95
|
+
contents = file.read
|
96
|
+
combustion_port = Integer(contents.split("\n")[0])
|
97
|
+
file.close
|
98
|
+
combustion_port
|
99
|
+
else
|
100
|
+
set_guard_combustion_port
|
101
|
+
end
|
102
|
+
rescue ArgumentError => e
|
103
|
+
file.close
|
104
|
+
set_guard_combustion_port
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# Legge il pid di combustion dal file .combustion_pid
|
110
|
+
#
|
111
|
+
def get_combustion_pid
|
112
|
+
begin
|
113
|
+
if File.exists? @@combustion_pid_file
|
114
|
+
file = File.open(@@combustion_pid_file, "r")
|
115
|
+
contents = file.read
|
116
|
+
combustion_pid = Integer(contents.split("\n")[0])
|
117
|
+
file.close
|
118
|
+
combustion_pid
|
119
|
+
else
|
120
|
+
nil
|
121
|
+
end
|
122
|
+
rescue ArgumentError => e
|
123
|
+
file.close
|
124
|
+
nil
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
#
|
129
|
+
# Elimina il file .combustion_pid
|
130
|
+
#
|
131
|
+
def delete_combustion_pid
|
132
|
+
if File.exists? @@combustion_pid_file
|
133
|
+
File.delete(@@combustion_pid_file)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
#
|
138
|
+
# Restituisce su una stringa il comando shell utilizzato per avviare combustion
|
139
|
+
#
|
140
|
+
def combustion_cmd combustion_port
|
141
|
+
"rackup -p #{combustion_port} -D -P #{@@combustion_pid_file}"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'guard'
|
2
|
+
require 'guard/guard'
|
3
|
+
require 'guard/combustion/version'
|
4
|
+
require 'guard/combustion/combustion_helper'
|
5
|
+
|
6
|
+
module Guard
|
7
|
+
class Combustion < Guard
|
8
|
+
|
9
|
+
def start
|
10
|
+
CombustionHelper.start_combustion
|
11
|
+
end
|
12
|
+
|
13
|
+
def stop
|
14
|
+
CombustionHelper.stop_combustion
|
15
|
+
end
|
16
|
+
|
17
|
+
def reload
|
18
|
+
CombustionHelper.restart_combustion
|
19
|
+
end
|
20
|
+
|
21
|
+
def run_all
|
22
|
+
reload
|
23
|
+
end
|
24
|
+
|
25
|
+
def run_on_change(paths)
|
26
|
+
reload
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: guard-combustion
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ruben Caliandro
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: guard
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.1.0
|
27
|
+
description: |2
|
28
|
+
Guard::Combustion automatically restarts Combustion when watched files are
|
29
|
+
modified.
|
30
|
+
email: ruben.caliandro@gmail.com
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- LICENSE
|
36
|
+
- Readme.md
|
37
|
+
- lib/guard/combustion.rb
|
38
|
+
- lib/guard/combustion/combustion_helper.rb
|
39
|
+
- lib/guard/combustion/templates/Guardfile
|
40
|
+
- lib/guard/combustion/version.rb
|
41
|
+
homepage: http://github.com/Chosko/guard-combustion
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 2.2.0
|
62
|
+
signing_key:
|
63
|
+
specification_version: 4
|
64
|
+
summary: Guard gem for running Combustion
|
65
|
+
test_files: []
|