passify 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +14 -2
- data/lib/passify/cli.rb +63 -32
- data/lib/passify/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -15,7 +15,7 @@ This is necessary to ensure that Apache is set up correctly. If Passenger and th
|
|
15
15
|
|
16
16
|
The application name is optional, if none is provided `passify` creates the name from the current working directory. After creating an application it can be opened in the browser by running
|
17
17
|
|
18
|
-
passify open
|
18
|
+
passify open
|
19
19
|
|
20
20
|
To restart the application run
|
21
21
|
|
@@ -23,7 +23,15 @@ To restart the application run
|
|
23
23
|
|
24
24
|
To remove the application run
|
25
25
|
|
26
|
-
passify remove
|
26
|
+
passify remove
|
27
|
+
|
28
|
+
To change the rack environment to e.g. production run
|
29
|
+
|
30
|
+
passify env production
|
31
|
+
|
32
|
+
To show the current rack environment run
|
33
|
+
|
34
|
+
passify env
|
27
35
|
|
28
36
|
A list of all applications served with `passify` can be viewed by running
|
29
37
|
|
@@ -43,6 +51,10 @@ It makes sense to create a wrapper for `passify` if you are using multiple versi
|
|
43
51
|
rvm wrapper 1.8.7 --no-prefix passify
|
44
52
|
|
45
53
|
## Changelog
|
54
|
+
### 0.2.0
|
55
|
+
* create a `.passify` file to save the host
|
56
|
+
* added `-h` and `-v` shortcuts
|
57
|
+
|
46
58
|
### 0.1.2
|
47
59
|
* added env-command to change rack environment
|
48
60
|
|
data/lib/passify/cli.rb
CHANGED
@@ -6,58 +6,63 @@ module Passify
|
|
6
6
|
class CLI < Thor
|
7
7
|
include Thor::Actions
|
8
8
|
|
9
|
+
map '-h' => 'help'
|
10
|
+
map '-v' => 'version'
|
11
|
+
|
9
12
|
APACHE_CONF = '/etc/apache2/httpd.conf'
|
10
13
|
VHOSTS_DIR = '/private/etc/apache2/passenger_pane_vhosts'
|
11
14
|
|
12
15
|
desc "add", "Creates an application from the current working directory."
|
13
16
|
def add(name = nil)
|
14
|
-
|
17
|
+
check_for_passify
|
15
18
|
error("This directory can not be served with Passenger. Please create a `config.ru`-file.") unless is_valid_app?
|
16
19
|
name = File.basename(pwd) if name.nil? || name.empty?
|
17
20
|
name = urlify(name)
|
18
21
|
host = "#{name}.local"
|
19
22
|
if app_exists?(host)
|
20
23
|
if is_same_app?(host, pwd)
|
21
|
-
notice("This directory is already being served from http://#{host}. Run `passify open
|
24
|
+
notice("This directory is already being served from http://#{host}. Run `passify open` to view it.")
|
22
25
|
else
|
23
|
-
exit if no?("A different app already exists
|
24
|
-
|
26
|
+
exit if no?("A different app already exists under http://#{host}. Do you want to overwrite it?")
|
27
|
+
sudome
|
28
|
+
remove_app(host)
|
25
29
|
end
|
26
30
|
end
|
27
31
|
|
32
|
+
silent_create_file ".passify", host
|
28
33
|
sudome
|
29
34
|
create_vhost(host, pwd)
|
30
35
|
register_host(host)
|
31
36
|
restart_apache
|
32
|
-
say "The application was successfully set up and can be reached from http://#{host} . Run `passify open
|
37
|
+
say "The application was successfully set up and can be reached from http://#{host} . Run `passify open` to view it."
|
33
38
|
end
|
34
39
|
|
35
40
|
desc "remove", "Removes an existing link to the current working directory."
|
36
|
-
def remove
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
host = "#{name}.local"
|
41
|
-
notice("No application exists under http://#{host} .") unless app_exists?(host)
|
41
|
+
def remove
|
42
|
+
check_for_passify
|
43
|
+
host = find_host
|
44
|
+
|
42
45
|
sudome
|
43
|
-
|
44
|
-
|
46
|
+
remove_app(host)
|
47
|
+
say "The application was successfully removed."
|
45
48
|
end
|
46
49
|
|
47
50
|
desc "env", "Change the environment of the current app"
|
48
|
-
def env(
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
host = "#{name}.local"
|
53
|
-
notice("No application exists under http://#{host} .") unless app_exists?(host)
|
51
|
+
def env(env = nil)
|
52
|
+
check_for_passify
|
53
|
+
host = find_host
|
54
|
+
|
54
55
|
line_no, rack_env = `grep -n 'RackEnv' #{vhost_file(host)}`.split(":")
|
55
56
|
current_env = rack_env.strip.split(" ")[1]
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
if env.nil? || env.empty?
|
58
|
+
say "The application is running in '#{current_env}' environment."
|
59
|
+
else
|
60
|
+
notice("The application is already in '#{env}' environment.") if current_env == env
|
61
|
+
sudome
|
62
|
+
`sed -i '' '#{line_no}s!#{current_env}!#{env}!' #{vhost_file(host)}`
|
63
|
+
restart_apache
|
64
|
+
say "The application now runs in '#{env}' environment."
|
65
|
+
end
|
61
66
|
end
|
62
67
|
|
63
68
|
desc "install", "Installs passify into the local Apache installation."
|
@@ -100,7 +105,7 @@ module Passify
|
|
100
105
|
|
101
106
|
desc "list", "Lists all applications served with passify."
|
102
107
|
def list
|
103
|
-
|
108
|
+
check_for_passify
|
104
109
|
Dir.foreach(VHOSTS_DIR) do |entry|
|
105
110
|
if File.file?("#{VHOSTS_DIR}/#{entry}")
|
106
111
|
host = entry[0..-12]
|
@@ -110,11 +115,10 @@ module Passify
|
|
110
115
|
end
|
111
116
|
|
112
117
|
desc "open", "Opens the current working directory in browser."
|
113
|
-
def open
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
host = "#{name}.local"
|
118
|
+
def open
|
119
|
+
check_for_passify
|
120
|
+
host = find_host
|
121
|
+
|
118
122
|
system("open http://#{host}")
|
119
123
|
end
|
120
124
|
|
@@ -137,6 +141,10 @@ module Passify
|
|
137
141
|
system("which rvm > /dev/null 2>&1")
|
138
142
|
end
|
139
143
|
|
144
|
+
def check_for_passify
|
145
|
+
error("Passify is currently not installed. Please run `passify install` first.") unless passify_installed?
|
146
|
+
end
|
147
|
+
|
140
148
|
def passify_installed?
|
141
149
|
system("grep 'Include \\/private\\/etc\\/apache2\\/passenger_pane_vhosts\\/\\*\\.conf' #{APACHE_CONF} > /dev/null 2>&1")
|
142
150
|
end
|
@@ -145,6 +153,13 @@ module Passify
|
|
145
153
|
system("grep 'PassengerRuby' #{APACHE_CONF} > /dev/null 2>&1")
|
146
154
|
end
|
147
155
|
|
156
|
+
def remove_app(host)
|
157
|
+
app_dir = directory_for_host(host)
|
158
|
+
remove_file(vhost_file(host), :verbose => false)
|
159
|
+
unregister_host(host)
|
160
|
+
remove_file("#{app_dir}/.passify", :verbose => false) if File.exists?("#{app_dir}/.passify")
|
161
|
+
end
|
162
|
+
|
148
163
|
def is_valid_app?
|
149
164
|
if is_rack_app?
|
150
165
|
FileUtils.mkdir_p('public')
|
@@ -171,6 +186,18 @@ module Passify
|
|
171
186
|
File.exists?('index.html') || File.exists?('index.php')
|
172
187
|
end
|
173
188
|
|
189
|
+
def find_host
|
190
|
+
if File.exists?('.passify')
|
191
|
+
host = File.open('.passify') {|f| f.readline}.strip
|
192
|
+
else # support for passify 0.1.x
|
193
|
+
name = File.basename(pwd)
|
194
|
+
name = urlify(name)
|
195
|
+
host = "#{name}.local"
|
196
|
+
end
|
197
|
+
notice("The current directory is not served via passify. Please run `passify add` first.") unless app_exists?(host)
|
198
|
+
host
|
199
|
+
end
|
200
|
+
|
174
201
|
def app_exists?(host)
|
175
202
|
File.exists?(vhost_file(host))
|
176
203
|
end
|
@@ -214,7 +241,7 @@ module Passify
|
|
214
241
|
end
|
215
242
|
|
216
243
|
def create_passenger_vhost(host, path)
|
217
|
-
|
244
|
+
silent_create_file vhost_file(host), <<-eos
|
218
245
|
<VirtualHost *:80>
|
219
246
|
ServerName #{host}
|
220
247
|
DocumentRoot "#{path}/public"
|
@@ -228,7 +255,7 @@ module Passify
|
|
228
255
|
end
|
229
256
|
|
230
257
|
def create_legacy_vhost(host, path)
|
231
|
-
|
258
|
+
silent_create_file vhost_file(host), <<-eos
|
232
259
|
<VirtualHost *:80>
|
233
260
|
ServerName #{host}
|
234
261
|
DocumentRoot "#{path}"
|
@@ -259,5 +286,9 @@ module Passify
|
|
259
286
|
system("apachectl graceful > /dev/null 2>&1")
|
260
287
|
end
|
261
288
|
|
289
|
+
def silent_create_file(path, content)
|
290
|
+
create_file path, content, :verbose => false
|
291
|
+
end
|
292
|
+
|
262
293
|
end
|
263
294
|
end
|
data/lib/passify/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 1
|
9
8
|
- 2
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Fabian Schwahn
|