crushserver 0.1.6 → 0.2.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.
- data/.gitignore +2 -0
- data/Rakefile +11 -29
- data/VERSION +1 -0
- data/crushserver.gemspec +43 -0
- data/lib/crushserver/recipes.rb +0 -176
- metadata +13 -9
data/.gitignore
ADDED
data/Rakefile
CHANGED
@@ -1,31 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
list -= [spec_file] if spec_file
|
11
|
-
|
12
|
-
File.read('.gitignore').each_line do |glob|
|
13
|
-
glob = glob.chomp.sub(/^\//, '')
|
14
|
-
list -= Dir[glob]
|
15
|
-
list -= Dir["#{glob}/**/*"] if File.directory?(glob) and !File.symlink?(glob)
|
16
|
-
puts "excluding #{glob}"
|
1
|
+
begin
|
2
|
+
require 'jeweler'
|
3
|
+
Jeweler::Tasks.new do |gemspec|
|
4
|
+
gemspec.name = 'crushserver'
|
5
|
+
gemspec.summary = "A collection of capistrano tasks frequently used at Crush + Lovely."
|
6
|
+
gemspec.description = gemspec.summary
|
7
|
+
gemspec.authors = ['PJ Kelly', 'Mason Browne']
|
8
|
+
gemspec.email = 'pj@crushlovely.com'
|
9
|
+
gemspec.homepage = 'http://github.com/crushlovely/crushserver'
|
17
10
|
end
|
18
|
-
|
19
|
-
|
20
|
-
spec = File.read spec_file
|
21
|
-
spec.gsub! /^(\s* s.(test_)?files \s* = \s* )( \[ [^\]]* \] | %w\( [^)]* \) )/mx do
|
22
|
-
assignment = $1
|
23
|
-
bunch = $2 ? list.grep(/^test\//) : list
|
24
|
-
'%s%%w(%s)' % [assignment, bunch.join(' ')]
|
25
|
-
end
|
26
|
-
|
27
|
-
File.open(spec_file, 'w') {|f| f << spec }
|
28
|
-
end
|
29
|
-
File.open('.manifest', 'w') {|f| f << list.join("\n") }
|
11
|
+
rescue LoadError
|
12
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
30
13
|
end
|
31
|
-
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.0
|
data/crushserver.gemspec
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{crushserver}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["PJ Kelly", "Mason Browne"]
|
12
|
+
s.date = %q{2009-10-22}
|
13
|
+
s.description = %q{A collection of capistrano tasks frequently used at Crush + Lovely.}
|
14
|
+
s.email = %q{pj@crushlovely.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"LICENSE",
|
22
|
+
"README",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"crushserver.gemspec",
|
26
|
+
"lib/crushserver/recipes.rb"
|
27
|
+
]
|
28
|
+
s.homepage = %q{http://github.com/crushlovely/crushserver}
|
29
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
s.rubygems_version = %q{1.3.5}
|
32
|
+
s.summary = %q{A collection of capistrano tasks frequently used at Crush + Lovely.}
|
33
|
+
|
34
|
+
if s.respond_to? :specification_version then
|
35
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
36
|
+
s.specification_version = 3
|
37
|
+
|
38
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
39
|
+
else
|
40
|
+
end
|
41
|
+
else
|
42
|
+
end
|
43
|
+
end
|
data/lib/crushserver/recipes.rb
CHANGED
@@ -65,29 +65,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
69
|
-
|
70
|
-
desc "create database.yml"
|
71
|
-
task :create_database_yml do
|
72
|
-
# Gather some info
|
73
|
-
set :db_pass, Capistrano::CLI.password_prompt("Database Password: ")
|
74
|
-
|
75
|
-
# Set defaults
|
76
|
-
set :db_user, "deploy"
|
77
|
-
set :db_host, "localhost"
|
78
|
-
set :db_adapter, "mysql"
|
79
|
-
database_configuration =<<-EOF
|
80
|
-
#{rails_env}:
|
81
|
-
adapter: #{db_adapter}
|
82
|
-
host: #{db_host}
|
83
|
-
username: #{db_user}
|
84
|
-
password: #{db_pass}
|
85
|
-
database: #{application}_#{rails_env}
|
86
|
-
EOF
|
87
|
-
|
88
|
-
run "mkdir -p #{shared_path}/config"
|
89
|
-
put database_configuration, "#{shared_path}/config/database.yml"
|
90
|
-
end
|
91
68
|
|
92
69
|
desc "Clean database sessions older than 12 hours"
|
93
70
|
task :clean_sessions do
|
@@ -98,158 +75,5 @@ EOF
|
|
98
75
|
task :copy_apache_conf_file do
|
99
76
|
sudo "cp #{current_path}/config/apache/#{stage}.conf /etc/httpd/conf/apps/#{application}.conf"
|
100
77
|
end
|
101
|
-
|
102
|
-
desc "Stream log from rails"
|
103
|
-
task :log, :roles => :app do
|
104
|
-
stream "tail -f #{current_path}/log/#{rails_env}.log"
|
105
|
-
end
|
106
|
-
|
107
|
-
desc "Stream access log"
|
108
|
-
task :access_log, :roles => :app do
|
109
|
-
sudo_stream "tail -f /etc/httpd/logs/#{domain}-access_log"
|
110
|
-
end
|
111
|
-
|
112
|
-
desc "Stream error log"
|
113
|
-
task :error_log, :roles => :app do
|
114
|
-
sudo_stream "tail -f /etc/httpd/logs/#{domain}-error_log"
|
115
|
-
end
|
116
|
-
|
117
|
-
desc "Stream rewrite log"
|
118
|
-
task :rewrite_log, :roles => :app do
|
119
|
-
sudo_stream "tail -f /etc/httpd/logs/#{domain}-rewrite_log"
|
120
|
-
end
|
121
|
-
|
122
|
-
desc "Show output of top"
|
123
|
-
task :server_top do
|
124
|
-
sudo_stream "top -b -n1"
|
125
|
-
#sudo "top -b -n1"
|
126
|
-
end
|
127
|
-
|
128
|
-
desc "Remove log, tmp, and database.yml files from repository."
|
129
|
-
task :prep_svn do
|
130
|
-
remove_log_from_svn
|
131
|
-
remove_tmp_from_svn
|
132
|
-
remove_database_yml_from_svn
|
133
|
-
end
|
134
|
-
|
135
|
-
desc "Remove log from svn."
|
136
|
-
task :remove_log_from_svn do
|
137
|
-
puts "removing log directory contents from svn"
|
138
|
-
system "svn remove log/*"
|
139
|
-
puts "ignoring log directory"
|
140
|
-
system "svn propset svn:ignore '*.log' log/"
|
141
|
-
system "svn update log/"
|
142
|
-
puts "committing changes"
|
143
|
-
system "svn commit -m 'Removed and ignored log files'"
|
144
|
-
end
|
145
|
-
|
146
|
-
desc "Remove tmp from svn."
|
147
|
-
task :remove_tmp_from_svn do
|
148
|
-
puts "removing tmp directory from svn"
|
149
|
-
system "svn remove tmp/*"
|
150
|
-
puts "ignoring tmp directory"
|
151
|
-
system "svn propset svn:ignore '*' tmp/"
|
152
|
-
system "svn update tmp/"
|
153
|
-
puts "committing changes"
|
154
|
-
system "svn commit -m 'Removed contents of and ignored tmp'"
|
155
|
-
end
|
156
|
-
|
157
|
-
desc "Remove database.yml from svn."
|
158
|
-
task :remove_database_yml_from_svn do
|
159
|
-
puts "removing database.yml from svn"
|
160
|
-
system "svn remove config/database.yml"
|
161
|
-
puts "ignoring database.yml"
|
162
|
-
system "svn propset svn:ignore 'database.yml' config/"
|
163
|
-
system "svn update config/"
|
164
|
-
puts "committing changes"
|
165
|
-
system "svn commit -m 'Removed and ignored database.yml'"
|
166
|
-
end
|
167
|
-
|
168
|
-
desc "Create a local database.yml file (for use after it's been ignored by svn)"
|
169
|
-
task :create_local_database_yml do
|
170
|
-
database_yml_path = 'config/database.yml'
|
171
|
-
question = "This task will over-write #{database_yml_path} if it exists. Are you sure you wish to continue? (y/n) "
|
172
|
-
if Capistrano::CLI.ui.ask(question) == 'y'
|
173
|
-
puts
|
174
|
-
puts "First we need some configuration info..."
|
175
|
-
puts
|
176
|
-
set :db_user, Capistrano::CLI.ui.ask("Database User: ")
|
177
|
-
set :db_password, Capistrano::CLI.password_prompt("Database Password: ")
|
178
|
-
set :db_host, "localhost"
|
179
|
-
set :db_adapter, "mysql"
|
180
|
-
database_configuration =<<-EOF
|
181
|
-
local: &local
|
182
|
-
adapter: mysql
|
183
|
-
host: localhost
|
184
|
-
username: #{db_user}
|
185
|
-
password: #{db_password}
|
186
|
-
|
187
|
-
development:
|
188
|
-
database: #{application}_development
|
189
|
-
<<: *local
|
190
|
-
|
191
|
-
test:
|
192
|
-
database: #{application}_test
|
193
|
-
<<: *local
|
194
|
-
EOF
|
195
|
-
system "touch #{database_yml_path} && > #{database_yml_path}"
|
196
|
-
system "echo \"#{database_configuration}\" >> #{database_yml_path}"
|
197
|
-
puts
|
198
|
-
puts "Success! #{database_yml_path} has been created!"
|
199
|
-
else
|
200
|
-
puts "Goodbye."
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
# So we're... 99% sure that these no longer apply.
|
207
|
-
class Capistrano::Configuration
|
208
|
-
|
209
|
-
##
|
210
|
-
# Run a command as root and stream it back
|
211
|
-
|
212
|
-
def sudo_stream(command)
|
213
|
-
sudo(command) do |channel, stream, out|
|
214
|
-
puts out if stream == :out
|
215
|
-
if stream == :err
|
216
|
-
puts "[err : #{channel[:host]}] #{out}"
|
217
|
-
break
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
# Run a task and ask for input when input_query is seen.
|
223
|
-
# Sends the response back to the server.
|
224
|
-
#
|
225
|
-
# +input_query+ is a regular expression.
|
226
|
-
#
|
227
|
-
# Can be used where +run+ would otherwise be used.
|
228
|
-
#
|
229
|
-
# run_with_input 'ssh-keygen ...'
|
230
|
-
def run_with_input(shell_command, input_query=/^Password/)
|
231
|
-
handle_command_with_input(:run, shell_command, input_query)
|
232
78
|
end
|
233
|
-
|
234
|
-
# Run a task as root and ask for input when a regular expression is seen.
|
235
|
-
# Sends the response back to the server.
|
236
|
-
#
|
237
|
-
# +input_query+ is a regular expression
|
238
|
-
def sudo_with_input(shell_command, input_query=/^Password/)
|
239
|
-
handle_command_with_input(:sudo, shell_command, input_query)
|
240
|
-
end
|
241
|
-
|
242
|
-
private
|
243
|
-
|
244
|
-
# Do the actual capturing of the input and streaming of the output.
|
245
|
-
def handle_command_with_input(local_run_method, shell_command, input_query)
|
246
|
-
send(local_run_method, shell_command) do |channel, stream, data|
|
247
|
-
logger.info data, channel[:host]
|
248
|
-
if data =~ input_query
|
249
|
-
pass = Capistrano::CLI.password_prompt "#{data}:"
|
250
|
-
channel.send_data "#{pass}\n"
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crushserver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PJ Kelly
|
@@ -14,26 +14,30 @@ date: 2009-10-22 00:00:00 -07:00
|
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
17
|
-
description: A collection of capistrano tasks
|
18
|
-
email:
|
17
|
+
description: A collection of capistrano tasks frequently used at Crush + Lovely.
|
18
|
+
email: pj@crushlovely.com
|
19
19
|
executables: []
|
20
20
|
|
21
21
|
extensions: []
|
22
22
|
|
23
|
-
extra_rdoc_files:
|
24
|
-
|
23
|
+
extra_rdoc_files:
|
24
|
+
- LICENSE
|
25
|
+
- README
|
25
26
|
files:
|
27
|
+
- .gitignore
|
26
28
|
- LICENSE
|
27
29
|
- README
|
28
30
|
- Rakefile
|
31
|
+
- VERSION
|
32
|
+
- crushserver.gemspec
|
29
33
|
- lib/crushserver/recipes.rb
|
30
34
|
has_rdoc: true
|
31
|
-
homepage: http://github.com/crushlovely/crushserver
|
35
|
+
homepage: http://github.com/crushlovely/crushserver
|
32
36
|
licenses: []
|
33
37
|
|
34
38
|
post_install_message:
|
35
|
-
rdoc_options:
|
36
|
-
|
39
|
+
rdoc_options:
|
40
|
+
- --charset=UTF-8
|
37
41
|
require_paths:
|
38
42
|
- lib
|
39
43
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -54,6 +58,6 @@ rubyforge_project:
|
|
54
58
|
rubygems_version: 1.3.5
|
55
59
|
signing_key:
|
56
60
|
specification_version: 3
|
57
|
-
summary: A collection of capistrano tasks
|
61
|
+
summary: A collection of capistrano tasks frequently used at Crush + Lovely.
|
58
62
|
test_files: []
|
59
63
|
|