gitpusshuten 0.0.2 → 0.0.3
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.
- data/gitpusshuten.gemspec +5 -1
- data/lib/gitpusshuten.rb +1 -2
- data/lib/gitpusshuten/commands/user.rb +10 -1
- data/lib/gitpusshuten/git.rb +4 -2
- data/lib/gitpusshuten/modules/apache/command.rb +16 -2
- data/lib/gitpusshuten/modules/nginx/command.rb +57 -38
- data/lib/gitpusshuten/modules/redis/command.rb +8 -1
- data/lib/gitpusshuten/version.rb +3 -0
- data/lib/templates/config.rb +1 -0
- metadata +4 -3
data/gitpusshuten.gemspec
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/lib/gitpusshuten/version')
|
4
|
+
|
1
5
|
Gem::Specification.new do |gem|
|
2
6
|
|
3
7
|
gem.name = 'gitpusshuten'
|
4
|
-
gem.version =
|
8
|
+
gem.version = GitPusshuTen::VERSION
|
5
9
|
gem.platform = Gem::Platform::RUBY
|
6
10
|
gem.authors = 'Michael van Rooijen'
|
7
11
|
gem.email = 'meskyanichi@gmail.com'
|
data/lib/gitpusshuten.rb
CHANGED
@@ -25,7 +25,9 @@ module GitPusshuTen
|
|
25
25
|
# Sets up a new UNIX user and configures it based on the .gitpusshuten/config.rb
|
26
26
|
def perform_add!
|
27
27
|
if not e.user_exists? # prompts root
|
28
|
-
ensure_git_installed!
|
28
|
+
ensure_git_installed!
|
29
|
+
ensure_common_dependencies_are_installed!
|
30
|
+
|
29
31
|
message "It looks like #{y(c.user)} does not yet exist."
|
30
32
|
message "Would you like to add #{y(c.user)} to #{y(c.application)} (#{y(c.ip)})?"
|
31
33
|
if yes?
|
@@ -173,6 +175,13 @@ module GitPusshuTen
|
|
173
175
|
end
|
174
176
|
end
|
175
177
|
|
178
|
+
##
|
179
|
+
# Installs common dependencies that applications typically use
|
180
|
+
# for XML parsing and image manipulation
|
181
|
+
def ensure_common_dependencies_are_installed!
|
182
|
+
e.install!('libxml2-dev libxslt1-dev imagemagick')
|
183
|
+
end
|
184
|
+
|
176
185
|
##
|
177
186
|
# Configures the user. Overwrites all current configurations (if any exist)
|
178
187
|
def configure_user!
|
data/lib/gitpusshuten/git.rb
CHANGED
@@ -48,10 +48,12 @@ module GitPusshuTen
|
|
48
48
|
def ignore!
|
49
49
|
if File.exist?('.gitignore')
|
50
50
|
if not File.read('.gitignore').include?('.gitpusshuten/**/*')
|
51
|
-
|
51
|
+
File.open('.gitignore', 'a') do |file|
|
52
|
+
file << "\n.gitpusshuten/**/*"
|
53
|
+
end
|
52
54
|
end
|
53
55
|
else
|
54
|
-
%x[echo
|
56
|
+
%x[echo ".gitpusshuten/**/*" >> .gitignore]
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
@@ -6,7 +6,9 @@ module GitPusshuTen
|
|
6
6
|
example "heavenly apache install to staging # Installs the Apache2 web server"
|
7
7
|
example "heavenly apache update-configuration for staging # Only for Passenger users, when updating Ruby/Passenger versions."
|
8
8
|
example "heavenly apache download-configuration from staging # Downloads the Apache2 configuration file from the specified environment."
|
9
|
+
example " download-config # Alias."
|
9
10
|
example "heavenly apache upload-configuration to staging # Uploads the Apache2 configuration file to the specified environment."
|
11
|
+
example " upload-config # Alias."
|
10
12
|
example "heavenly apache create-vhost for production # Creates a local vhost template for the specified environment."
|
11
13
|
example "heavenly apache delete-vhost from production # Deletes the remote vhost for the specified environment."
|
12
14
|
example "heavenly apache upload-vhost to staging # Uploads your local vhost to the server for the specified environment."
|
@@ -84,7 +86,7 @@ module GitPusshuTen
|
|
84
86
|
|
85
87
|
##
|
86
88
|
# Downloads the Apache2 configuration file
|
87
|
-
def
|
89
|
+
def perform_download_configuration!
|
88
90
|
if not e.file?('/etc/apache2/apache2.conf')
|
89
91
|
error "Could not find the Apache2 configuration file in #{y('/etc/apache2/apache2.conf')}"
|
90
92
|
exit
|
@@ -98,9 +100,15 @@ module GitPusshuTen
|
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
103
|
+
##
|
104
|
+
# Alias to perform_download_configuration!
|
105
|
+
def perform_download_config!
|
106
|
+
perform_download_configuration!
|
107
|
+
end
|
108
|
+
|
101
109
|
##
|
102
110
|
# Uploads the Apache2 configuration file
|
103
|
-
def
|
111
|
+
def perform_upload_configuration!
|
104
112
|
if not e.directory?('/etc/apache2')
|
105
113
|
error "Could not find the Apache2 installation directory in #{y('/etc/apache2')}"
|
106
114
|
exit
|
@@ -118,6 +126,12 @@ module GitPusshuTen
|
|
118
126
|
end
|
119
127
|
end
|
120
128
|
|
129
|
+
##
|
130
|
+
# Alias to perform_upload_configuration!
|
131
|
+
def perform_upload_config!
|
132
|
+
perform_upload_configuration!
|
133
|
+
end
|
134
|
+
|
121
135
|
def perform_download_vhost!
|
122
136
|
remote_vhost = File.join(@configuration_directory, "sites-enabled", "#{e.sanitized_app_name}.#{e.name}.vhost")
|
123
137
|
if not e.file?(remote_vhost) #prompts root
|
@@ -7,7 +7,9 @@ module GitPusshuTen
|
|
7
7
|
example "heavenly nginx setup staging environment # Sets up a managable vhost environment."
|
8
8
|
example "heavenly nginx update-configuration for staging # Only for Passenger users, when updating Ruby/Passenger versions."
|
9
9
|
example "heavenly nginx download-configuration from staging # Downloads the Nginx configuration file from the specified environment."
|
10
|
+
example " download-config # Alias."
|
10
11
|
example "heavenly nginx upload-configuration to staging # Uploads the NginX configuration file to the specified environment."
|
12
|
+
example " upload-config # Alias."
|
11
13
|
example "heavenly nginx create-vhost for production # Creates a local vhost template for the specified environment."
|
12
14
|
example "heavenly nginx delete-vhost from production # Deletes the remote vhost for the specified environment."
|
13
15
|
example "heavenly nginx upload-vhost to staging # Uploads your local vhost to the server for the specified environment."
|
@@ -86,49 +88,37 @@ module GitPusshuTen
|
|
86
88
|
def perform_setup!
|
87
89
|
find_nginx!
|
88
90
|
|
89
|
-
|
90
|
-
# Creates a tmp dir
|
91
|
-
local.create_tmp_dir!
|
92
|
-
|
93
|
-
##
|
94
|
-
# Downloads the NginX configuration file to tmp dir
|
95
|
-
e.scp_as_root(:download, @nginx_conf, local.tmp_dir)
|
96
|
-
|
97
|
-
##
|
98
|
-
# Set the path to the downloaded file
|
99
|
-
local_file = File.join(local.tmp_dir, @nginx_conf_name)
|
100
|
-
|
101
|
-
if not File.read(local_file).include?('include sites-enabled/*;')
|
102
|
-
message "Configuring NginX configuration file."
|
103
|
-
|
104
|
-
##
|
105
|
-
# Inject the 'include sites-enabled/*'
|
106
|
-
contents = File.read(local_file).sub(/http(\s|\t|\n){0,}\{/, "http {\n\s\s\s\sinclude sites-enabled/*;\n")
|
107
|
-
File.open(local_file, 'w') do |file|
|
108
|
-
file << contents
|
109
|
-
end
|
91
|
+
if not e.execute_as_root("cat '#{@nginx_conf}'").include?('GIT PUSSHUTEN GENERATED NGINX CONFIGURATION FILE')
|
110
92
|
|
111
93
|
##
|
112
94
|
# Make a backup of the old nginx.conf
|
113
|
-
message "Creating a backup of
|
114
|
-
|
95
|
+
Spinner.return :message => "Creating a backup of the current NginX configuration file.." do
|
96
|
+
e.execute_as_root("cp '#{@nginx_conf}' '#{@nginx_conf}.backup.#{Time.now.to_i}'")
|
97
|
+
g('Done!')
|
98
|
+
end
|
115
99
|
|
116
100
|
##
|
117
|
-
#
|
118
|
-
message "
|
119
|
-
|
101
|
+
# Replace the old NginX configuration file with the pre-configured one
|
102
|
+
Spinner.return :message => "Generating pre-configured NginX configuration file.." do
|
103
|
+
e.download_packages!("$HOME", :root)
|
104
|
+
e.execute_as_root("cp $HOME/gitpusshuten-packages/modules/nginx/nginx.conf '#{@nginx_conf}'")
|
105
|
+
e.clean_up_packages!("$HOME", :root)
|
106
|
+
g('Done!')
|
107
|
+
end
|
120
108
|
|
121
109
|
##
|
122
110
|
# Create the vhosts dir on the server
|
123
|
-
message "Creating #{@nginx_vhosts_dir} directory
|
124
|
-
|
111
|
+
Spinner.return :message => "Creating #{@nginx_vhosts_dir} directory.." do
|
112
|
+
e.execute_as_root("mkdir -p #{@nginx_vhosts_dir}")
|
113
|
+
g('Done!')
|
114
|
+
end
|
115
|
+
|
116
|
+
if e.installed?('passenger')
|
117
|
+
perform_update_configuration!
|
118
|
+
end
|
119
|
+
|
125
120
|
end
|
126
121
|
|
127
|
-
##
|
128
|
-
# Removes the tmp dir
|
129
|
-
message "Cleaning up #{local.tmp_dir}"
|
130
|
-
local.remove_tmp_dir!
|
131
|
-
|
132
122
|
##
|
133
123
|
# Create NginX directory
|
134
124
|
# Create NginX vhost file (if it doesn't already exist)
|
@@ -137,7 +127,7 @@ module GitPusshuTen
|
|
137
127
|
|
138
128
|
##
|
139
129
|
# Downloads the NginX configuration file
|
140
|
-
def
|
130
|
+
def perform_download_configuration!
|
141
131
|
find_nginx!
|
142
132
|
if not @nginx_conf
|
143
133
|
error "Could not find the NginX configuration file in #{y(@nginx_conf)}"
|
@@ -152,15 +142,21 @@ module GitPusshuTen
|
|
152
142
|
end
|
153
143
|
end
|
154
144
|
|
145
|
+
##
|
146
|
+
# Alias to perform_download_configuration!
|
147
|
+
def perform_download_config!
|
148
|
+
perform_download_configuration!
|
149
|
+
end
|
150
|
+
|
155
151
|
##
|
156
152
|
# Uploads the NginX configuration file
|
157
|
-
def
|
153
|
+
def perform_upload_configuration!
|
158
154
|
find_nginx!
|
159
155
|
if not e.directory?('/etc/nginx')
|
160
156
|
error "Could not find the NginX installation directory in #{y('/etc/nginx')}"
|
161
157
|
exit
|
162
158
|
end
|
163
|
-
|
159
|
+
|
164
160
|
local_configuration_file = File.join(local.gitpusshuten_dir, 'nginx', 'nginx.conf')
|
165
161
|
if not File.exist?(local_configuration_file)
|
166
162
|
error "Could not find the local NginX configuration file in #{y(local_configuration_file)}"
|
@@ -173,6 +169,12 @@ module GitPusshuTen
|
|
173
169
|
end
|
174
170
|
end
|
175
171
|
|
172
|
+
##
|
173
|
+
# Alias to perform_upload_configuration!
|
174
|
+
def perform_upload_config!
|
175
|
+
perform_upload_configuration!
|
176
|
+
end
|
177
|
+
|
176
178
|
##
|
177
179
|
# Updates a local vhost
|
178
180
|
def perform_upload_vhost!
|
@@ -283,7 +285,7 @@ module GitPusshuTen
|
|
283
285
|
|
284
286
|
INFO
|
285
287
|
|
286
|
-
message "NginX will now be configured to work with the above versions. Is
|
288
|
+
message "NginX will now be configured to work with the above versions. Is that OK?"
|
287
289
|
exit unless yes?
|
288
290
|
|
289
291
|
##
|
@@ -329,6 +331,16 @@ module GitPusshuTen
|
|
329
331
|
update.sub! /passenger_ruby \/usr\/local\/rvm\/wrappers\/(.+)\/ruby\;/,
|
330
332
|
"passenger_ruby /usr/local/rvm/wrappers/#{@ruby_version}/ruby;"
|
331
333
|
|
334
|
+
##
|
335
|
+
# Uncomment any Phusion Passenger configuration if it is commented out
|
336
|
+
# since Phusion Passenger is enabled
|
337
|
+
update.sub!(/\#.+(passenger_ruby.+\;)/) { $1 }
|
338
|
+
update.sub!(/\#.+(passenger_root.+\;)/) { $1 }
|
339
|
+
update.sub!(/\#.+(passenger_spawn_method.+\;)/) { $1 }
|
340
|
+
update.sub!(/\#.+(passenger_min_instances.+\;)/) { $1 }
|
341
|
+
update.sub!(/\#.+(passenger_max_pool_size.+\;)/) { $1 }
|
342
|
+
update.sub!(/\#.+(passenger_pool_idle_time.+\;)/) { $1 }
|
343
|
+
|
332
344
|
File.open(local_configuration_file, 'w') do |file|
|
333
345
|
file << update
|
334
346
|
end
|
@@ -356,7 +368,7 @@ module GitPusshuTen
|
|
356
368
|
warning "then you should be able to just restart #{y('NginX')} right away since all application gems should still be in tact.\n\n"
|
357
369
|
|
358
370
|
message "When ready, run the following command to restart #{y('NginX')} and have the applied updates take effect:"
|
359
|
-
standard "\n\s\s#{y("heavenly nginx restart for #{e.name}")}"
|
371
|
+
standard "\n\s\s#{y("heavenly nginx restart for #{e.name}")}\n\n"
|
360
372
|
end
|
361
373
|
|
362
374
|
def perform_download_vhost!
|
@@ -436,6 +448,13 @@ module GitPusshuTen
|
|
436
448
|
@nginx_conf_dir = '/etc/nginx'
|
437
449
|
end
|
438
450
|
|
451
|
+
##
|
452
|
+
# Determines whether the configuration file was found or not
|
453
|
+
if @nginx_conf.nil?
|
454
|
+
error "Could not find the NginX configuration file. Has NginX been installed?"
|
455
|
+
exit
|
456
|
+
end
|
457
|
+
|
439
458
|
##
|
440
459
|
# Set additional configuration
|
441
460
|
@nginx_conf_name = @nginx_conf.split('/').last
|
@@ -6,6 +6,7 @@ module GitPusshuTen
|
|
6
6
|
usage "redis <command> for <enviroment>"
|
7
7
|
example "heavenly redis install # Installs Redis (system wide) and downloads config template."
|
8
8
|
example "heavenly redis upload-configuration # Uploads the Redis configuration template to the server, will install Redis if not already present."
|
9
|
+
example " upload-config # Alias."
|
9
10
|
|
10
11
|
def initialize(*objects)
|
11
12
|
super
|
@@ -65,7 +66,13 @@ module GitPusshuTen
|
|
65
66
|
g('Done!')
|
66
67
|
end
|
67
68
|
end
|
68
|
-
|
69
|
+
|
70
|
+
##
|
71
|
+
# Alias to perform_upload_configuration!
|
72
|
+
def perform_upload_config!
|
73
|
+
perform_upload_configuration!
|
74
|
+
end
|
75
|
+
|
69
76
|
def download_redis_configuration_from_server!
|
70
77
|
FileUtils.mkdir_p(@local_configuration_dir)
|
71
78
|
Spinner.return :message => "Downloading redis configuration from the server.." do
|
data/lib/templates/config.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael van Rooijen
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-11-
|
17
|
+
date: 2010-11-22 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- lib/gitpusshuten/modules/passenger/hooks.rb
|
168
168
|
- lib/gitpusshuten/modules/redis/command.rb
|
169
169
|
- lib/gitpusshuten/modules/rvm/command.rb
|
170
|
+
- lib/gitpusshuten/version.rb
|
170
171
|
- lib/templates/config.rb
|
171
172
|
- lib/templates/hooks.rb
|
172
173
|
- spec/cli_spec.rb
|