cap-recipes 0.3.18
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 +3 -0
- data/LICENSE +20 -0
- data/README.textile +357 -0
- data/Rakefile +45 -0
- data/VERSION.yml +4 -0
- data/cap-recipes.gemspec +87 -0
- data/examples/advanced/deploy.rb +39 -0
- data/examples/advanced/deploy/experimental.rb +14 -0
- data/examples/advanced/deploy/production.rb +20 -0
- data/examples/simple/deploy.rb +36 -0
- data/lib/cap_recipes.rb +1 -0
- data/lib/cap_recipes/tasks/apache.rb +1 -0
- data/lib/cap_recipes/tasks/apache/install.rb +12 -0
- data/lib/cap_recipes/tasks/apache/manage.rb +26 -0
- data/lib/cap_recipes/tasks/aptitude.rb +1 -0
- data/lib/cap_recipes/tasks/aptitude/manage.rb +34 -0
- data/lib/cap_recipes/tasks/backgroundrb.rb +1 -0
- data/lib/cap_recipes/tasks/backgroundrb/hooks.rb +5 -0
- data/lib/cap_recipes/tasks/backgroundrb/manage.rb +64 -0
- data/lib/cap_recipes/tasks/delayed_job.rb +1 -0
- data/lib/cap_recipes/tasks/delayed_job/hooks.rb +5 -0
- data/lib/cap_recipes/tasks/delayed_job/manage.rb +32 -0
- data/lib/cap_recipes/tasks/juggernaut.rb +1 -0
- data/lib/cap_recipes/tasks/juggernaut/hooks.rb +4 -0
- data/lib/cap_recipes/tasks/juggernaut/manage.rb +54 -0
- data/lib/cap_recipes/tasks/memcache.rb +1 -0
- data/lib/cap_recipes/tasks/memcache/hooks.rb +5 -0
- data/lib/cap_recipes/tasks/memcache/install.rb +13 -0
- data/lib/cap_recipes/tasks/memcache/manage.rb +35 -0
- data/lib/cap_recipes/tasks/passenger.rb +1 -0
- data/lib/cap_recipes/tasks/passenger/install.rb +62 -0
- data/lib/cap_recipes/tasks/passenger/manage.rb +24 -0
- data/lib/cap_recipes/tasks/rails.rb +1 -0
- data/lib/cap_recipes/tasks/rails/hooks.rb +8 -0
- data/lib/cap_recipes/tasks/rails/manage.rb +53 -0
- data/lib/cap_recipes/tasks/rubygems.rb +1 -0
- data/lib/cap_recipes/tasks/rubygems/manage.rb +43 -0
- data/lib/cap_recipes/tasks/utilities.rb +114 -0
- data/lib/cap_recipes/tasks/whenever.rb +1 -0
- data/lib/cap_recipes/tasks/whenever/hooks.rb +5 -0
- data/lib/cap_recipes/tasks/whenever/manage.rb +10 -0
- data/spec/cap/all/Capfile +2 -0
- data/spec/cap/helper.rb +2 -0
- data/spec/cap_recipes_spec.rb +13 -0
- data/spec/spec_helper.rb +16 -0
- metadata +106 -0
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 Nathan Esquenazi
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.textile
ADDED
@@ -0,0 +1,357 @@
|
|
1
|
+
h1. cap-recipes
|
2
|
+
|
3
|
+
A collection of useful capistrano recipes I have been using in production on a number of sites.
|
4
|
+
|
5
|
+
This gem is best suited for ruby (and rails) projects which deploy using Apache and Phusion Passenger.
|
6
|
+
Feel free to contribute to this collection and make it even better!
|
7
|
+
|
8
|
+
The overall vision for this project being to collect a number of classic, generic recipes which can
|
9
|
+
be used by the community.
|
10
|
+
|
11
|
+
Currently included:
|
12
|
+
|
13
|
+
* Apache Server
|
14
|
+
* Rubygems Package Management
|
15
|
+
* Phusion Passenger (Setup and Deployment)
|
16
|
+
* Memcache Process (Setup and Deployment)
|
17
|
+
* Juggernaut Daemon
|
18
|
+
* Backgroundrb Server
|
19
|
+
* DelayedJob Worker
|
20
|
+
* Whenever Cron Scheduling
|
21
|
+
* Aptitude Package Management
|
22
|
+
|
23
|
+
h2. INSTALLATION
|
24
|
+
|
25
|
+
sudo gem install nesquena-cap-recipes -s http://gems.github.com/
|
26
|
+
|
27
|
+
Include into your deploy.rb configuration file for Capistrano:
|
28
|
+
|
29
|
+
<pre>
|
30
|
+
<code>
|
31
|
+
# use the complete deployment process (NOT RECOMMENDED)
|
32
|
+
require 'cap_recipes'
|
33
|
+
|
34
|
+
# RECOMMENDED
|
35
|
+
# require necessary recipes according to your needs
|
36
|
+
# (use hooks which tie all the recipes into the deployment process,
|
37
|
+
# tasks for managing and tasks for installing):
|
38
|
+
require 'cap_recipes/tasks/memcache'
|
39
|
+
require 'cap_recipes/tasks/passenger'
|
40
|
+
# or rails, apache, rubygems, delayed_job, juggernaut, backgroundrb, aptitude, whenever
|
41
|
+
|
42
|
+
# OR
|
43
|
+
# only use managing tasks:
|
44
|
+
require 'cap_recipes/tasks/memcache/manage'
|
45
|
+
|
46
|
+
# OR
|
47
|
+
#only use install tasks:
|
48
|
+
require 'cap_recipes/tasks/memcache/install'
|
49
|
+
</code>
|
50
|
+
</pre>
|
51
|
+
|
52
|
+
h2. USAGE
|
53
|
+
|
54
|
+
h3. Apache
|
55
|
+
|
56
|
+
These recipes manage the apache web server
|
57
|
+
|
58
|
+
h4. Configuration
|
59
|
+
|
60
|
+
* apache_init_path - the path to the init.d apache file [default: '/etc/init.d/apache2']
|
61
|
+
|
62
|
+
h4. Tasks
|
63
|
+
|
64
|
+
h5. manage.rb
|
65
|
+
|
66
|
+
apache
|
67
|
+
:stop
|
68
|
+
:start
|
69
|
+
:restart
|
70
|
+
|
71
|
+
h5. install.rb
|
72
|
+
|
73
|
+
apache
|
74
|
+
:install
|
75
|
+
|
76
|
+
h3. Rubygems
|
77
|
+
|
78
|
+
h4. Configuration
|
79
|
+
|
80
|
+
* rubygem_paths - a path or array of paths to your gem binaries [default '/usr/bin/gem' ]
|
81
|
+
|
82
|
+
h4. Tasks
|
83
|
+
|
84
|
+
h5. manage.rb
|
85
|
+
|
86
|
+
rubygems
|
87
|
+
:full_update
|
88
|
+
:upgrade
|
89
|
+
:update
|
90
|
+
:cleanup
|
91
|
+
:install
|
92
|
+
:uninstall
|
93
|
+
|
94
|
+
h3. Passenger
|
95
|
+
|
96
|
+
These recipes manage the passenger module for apache
|
97
|
+
|
98
|
+
h4. Configuration
|
99
|
+
|
100
|
+
* base_ruby_path - the base path to the ruby installation [default: '/usr']
|
101
|
+
* local_ping_path - the localhost path to ping to start passenger [default: "http://localhost"]
|
102
|
+
|
103
|
+
The following files and folders are expected to exist:
|
104
|
+
* "#{base_ruby_path}/lib/ruby"
|
105
|
+
* "#{base_ruby_path}/bin/ruby"
|
106
|
+
* "#{base_ruby_path}/bin/gem"
|
107
|
+
|
108
|
+
h4. Tasks
|
109
|
+
|
110
|
+
h5. manage.rb
|
111
|
+
|
112
|
+
deploy
|
113
|
+
:start
|
114
|
+
:stop
|
115
|
+
:restart
|
116
|
+
:with_migrations
|
117
|
+
|
118
|
+
h5. install.rb
|
119
|
+
|
120
|
+
passenger
|
121
|
+
:install
|
122
|
+
|
123
|
+
h3. Aptitude
|
124
|
+
|
125
|
+
h4. Tasks
|
126
|
+
|
127
|
+
h5. manage.rb
|
128
|
+
|
129
|
+
aptitude
|
130
|
+
:install
|
131
|
+
:remove
|
132
|
+
:updates
|
133
|
+
|
134
|
+
h3. Rails
|
135
|
+
|
136
|
+
These recipes support rails-specific functionality
|
137
|
+
|
138
|
+
h4. Tasks
|
139
|
+
|
140
|
+
h5. manage.rb
|
141
|
+
|
142
|
+
rails
|
143
|
+
:symlink_db_config
|
144
|
+
:repair_permissions
|
145
|
+
:tail - tail production log
|
146
|
+
:ping - ping the server to start it
|
147
|
+
sweep
|
148
|
+
:cache
|
149
|
+
:log
|
150
|
+
|
151
|
+
h5. hooks.rb
|
152
|
+
|
153
|
+
after "deploy:update_code", "rails:symlink_db_config" # copy database.yml file to release path
|
154
|
+
after "deploy:update_code", "rails:sweep:cache" # clear cache after updating code
|
155
|
+
after "deploy:restart" , "rails:repair_permissions" # fix the permissions to work properly
|
156
|
+
after "deploy:restart" , "rails:ping" # ping passenger to start the rails instance
|
157
|
+
|
158
|
+
h3. DelayedJob
|
159
|
+
|
160
|
+
These recipes are for tobi's delayed_job plugin for background job queue processing
|
161
|
+
|
162
|
+
h4. Configuration
|
163
|
+
|
164
|
+
* delayed_script_path - the path to the delayed job script [default: 'script/delayed_job']
|
165
|
+
* delayed_job_env - the rails environment [default: 'production']
|
166
|
+
|
167
|
+
h4. Tasks
|
168
|
+
|
169
|
+
h5. manage.rb
|
170
|
+
|
171
|
+
delayed_job
|
172
|
+
:stop
|
173
|
+
:start
|
174
|
+
:restart
|
175
|
+
|
176
|
+
h5. hooks.rb
|
177
|
+
|
178
|
+
after "deploy:start", "delayed_job:start"
|
179
|
+
after "deploy:stop", "delayed_job:stop"
|
180
|
+
after "deploy:restart", "delayed_job:restart"
|
181
|
+
|
182
|
+
h3. Backgroundrb
|
183
|
+
|
184
|
+
These recipes are for backgroundrb job queue processing
|
185
|
+
|
186
|
+
h4. Configuration
|
187
|
+
|
188
|
+
* backgroundrb_log - the path to the backgroundrb log file
|
189
|
+
* backgroundrb_host - the background host machine ip [default: 'localhost']
|
190
|
+
* backgroundrb_env - the rails environment [default: 'production']
|
191
|
+
|
192
|
+
h4. Tasks
|
193
|
+
|
194
|
+
h5. manage.rb
|
195
|
+
|
196
|
+
backgroundrb
|
197
|
+
:stop
|
198
|
+
:start
|
199
|
+
:restart
|
200
|
+
:symlink_config
|
201
|
+
:tail
|
202
|
+
|
203
|
+
h5. hooks.rb
|
204
|
+
|
205
|
+
after "deploy:update_code" , "backgroundrb:symlink_config" # copy backgroundrb config to release
|
206
|
+
after "deploy:restart" , "backgroundrb:restart" # restart backgroundrb daemon
|
207
|
+
after "backgroundrb:restart" , "backgroundrb:repair_permissions" # restart backgroundrb damon
|
208
|
+
|
209
|
+
h3. Juggernaut
|
210
|
+
|
211
|
+
These recipes are for managing the juggernaut push server
|
212
|
+
|
213
|
+
h4. Configuration
|
214
|
+
|
215
|
+
* juggernaut_config - path to juggernaut config file [default: "#{current_path}/config/juggernaut.yml"]
|
216
|
+
* juggernaut_pid - path to juggernaut pid file [default: "#{current_path}/tmp/pids/juggernaut.pid"]
|
217
|
+
* juggernaut_log - path to juggernaut log file [default: "#{current_path}/log/juggernaut.log"]
|
218
|
+
|
219
|
+
h4. Tasks
|
220
|
+
|
221
|
+
h5. manage.rb
|
222
|
+
|
223
|
+
juggernaut
|
224
|
+
:start
|
225
|
+
:stop
|
226
|
+
:restart
|
227
|
+
:symlink_config
|
228
|
+
:tail
|
229
|
+
|
230
|
+
h5. hooks.rb
|
231
|
+
|
232
|
+
after "deploy:update_code", "juggernaut:symlink_config" # copy juggernaut.yml to release
|
233
|
+
after "deploy:restart" , "juggernaut:restart" # restart juggernaut daemon
|
234
|
+
|
235
|
+
h3. Memcache
|
236
|
+
|
237
|
+
These recipes are for managing the memcached caching mechanism
|
238
|
+
|
239
|
+
h4. Configuration
|
240
|
+
|
241
|
+
* memcache_init_path - path to memcache config file [default: "/etc/init.d/memcache"]
|
242
|
+
* memcache_size - the total size of memory to use [default: 64]
|
243
|
+
* memcache_port - the port to start memcache [default: '11211']
|
244
|
+
* memcache_host - the host for memcache [default: '127.0.0.1']
|
245
|
+
* memcache_user - the user to run memcache [default: 'nobody']
|
246
|
+
|
247
|
+
h4. Tasks
|
248
|
+
|
249
|
+
h5. manage.rb
|
250
|
+
|
251
|
+
memcache
|
252
|
+
:start
|
253
|
+
:stop
|
254
|
+
:restart
|
255
|
+
|
256
|
+
h5. install.rb
|
257
|
+
|
258
|
+
memcache
|
259
|
+
:install
|
260
|
+
|
261
|
+
h5. hooks
|
262
|
+
|
263
|
+
after "deploy:restart", "memcache:restart" # clear cache after updating code
|
264
|
+
|
265
|
+
h3. Whenever
|
266
|
+
|
267
|
+
These recipes are for managing whenever cron job scheduling
|
268
|
+
|
269
|
+
h4. Configuration
|
270
|
+
|
271
|
+
* None necessary yet
|
272
|
+
|
273
|
+
h4. Tasks
|
274
|
+
|
275
|
+
h5. manage.rb
|
276
|
+
|
277
|
+
whenever
|
278
|
+
:update_crontab
|
279
|
+
|
280
|
+
h5. hooks
|
281
|
+
|
282
|
+
after "deploy:symlink", "whenever:update_crontab"
|
283
|
+
|
284
|
+
h2. EXAMPLE
|
285
|
+
|
286
|
+
Here is a sample deploy.rb file using cap_recipes:
|
287
|
+
|
288
|
+
<pre>
|
289
|
+
<code>
|
290
|
+
# =============================================================================
|
291
|
+
# GENERAL SETTINGS
|
292
|
+
# =============================================================================
|
293
|
+
|
294
|
+
set :application, "app_name"
|
295
|
+
set :deploy_to, "/var/apps/#{application}"
|
296
|
+
set :scm, :git
|
297
|
+
set :repository, "git@repos.site.com:/home/git/repos.git"
|
298
|
+
|
299
|
+
# =============================================================================
|
300
|
+
# CAP RECIPES
|
301
|
+
# =============================================================================
|
302
|
+
|
303
|
+
# Note this happens after the general settings have been defined
|
304
|
+
require 'rubygems'
|
305
|
+
|
306
|
+
# PASSENGER
|
307
|
+
require 'cap_recipes/tasks/passenger'
|
308
|
+
set :base_ruby_path, '/opt/ruby-enterprise' # defaults to "/usr"
|
309
|
+
set :apache_init_path, '/etc/init.d/apache2' # defaults to "/etc/init.d/apache2"
|
310
|
+
|
311
|
+
# BACKGROUNDRB
|
312
|
+
require 'cap_recipes/tasks/backgroundrb'
|
313
|
+
set :backgroundrb_log, "/var/log/backgroundrb.log" # defaults to "#{release_path}/log/backgroundrb.log"
|
314
|
+
set :backgroundrb_host, "worker.site.com" # defaults to localhost
|
315
|
+
set :backgroundrb_env, "staging" # defaults to production
|
316
|
+
|
317
|
+
# DELAYED_JOB
|
318
|
+
require 'cap_recipes/tasks/delayed_job'
|
319
|
+
set :delayed_script_path, 'script/djworker' # defaults to 'script/delayed_job'
|
320
|
+
set :delayed_job_env, 'staging' # defaults to production
|
321
|
+
|
322
|
+
# JUGGERNAUT
|
323
|
+
require 'cap_recipes/tasks/juggernaut'
|
324
|
+
set :juggernaut_config, "/some/path/juggernaut.yml" # defaults to "#{current_path}/config/juggernaut.yml"
|
325
|
+
set :juggernaut_pid, "/some/path/juggernaut.pid" # defaults to "#{current_path}/tmp/pids/juggernaut.pid"
|
326
|
+
set :juggernaut_log, "/var/log/juggernaut.log" # defaults to #{release_path}/log/juggernaut.log
|
327
|
+
|
328
|
+
# MEMCACHE
|
329
|
+
require 'cap_recipes/tasks/memcache'
|
330
|
+
set :memcache_init_path, "/etc/init.d/memcache" # defaults to "/etc/init.d/memcache"
|
331
|
+
</code>
|
332
|
+
</pre>
|
333
|
+
|
334
|
+
h2. LICENSE:
|
335
|
+
|
336
|
+
(The MIT License)
|
337
|
+
|
338
|
+
Copyright (c) 2008 Nathan Esquenazi
|
339
|
+
|
340
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
341
|
+
a copy of this software and associated documentation files (the
|
342
|
+
'Software'), to deal in the Software without restriction, including
|
343
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
344
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
345
|
+
permit persons to whom the Software is furnished to do so, subject to
|
346
|
+
the following conditions:
|
347
|
+
|
348
|
+
The above copyright notice and this permission notice shall be
|
349
|
+
included in all copies or substantial portions of the Software.
|
350
|
+
|
351
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
352
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
353
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
354
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
355
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
356
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
357
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# rake version:bump:patch && rake release && rake build && rake install && sudo gem cleanup
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'jeweler'
|
8
|
+
Jeweler::Tasks.new do |s|
|
9
|
+
s.name = "cap-recipes"
|
10
|
+
s.summary = %Q{Battle-tested capistrano recipes for passenger, delayed_job, and more}
|
11
|
+
s.email = "nesquena@gmail.com"
|
12
|
+
s.homepage = "http://github.com/nesquena/cap-recipes"
|
13
|
+
s.description = "Battle-tested capistrano recipes for debian, passenger, apache, delayed_job, juggernaut, rubygems, backgroundrb, rails and more"
|
14
|
+
s.authors = ["Nathan Esquenazi"]
|
15
|
+
end
|
16
|
+
rescue LoadError
|
17
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
18
|
+
end
|
19
|
+
|
20
|
+
Rake::RDocTask.new do |rdoc|
|
21
|
+
rdoc.rdoc_dir = 'rdoc'
|
22
|
+
rdoc.title = 'cap-recipes'
|
23
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
24
|
+
rdoc.rdoc_files.include('README*')
|
25
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
26
|
+
end
|
27
|
+
|
28
|
+
begin
|
29
|
+
require 'rcov/rcovtask'
|
30
|
+
Rcov::RcovTask.new do |t|
|
31
|
+
t.libs << 'test'
|
32
|
+
t.test_files = FileList['test/**/*_test.rb']
|
33
|
+
t.verbose = true
|
34
|
+
end
|
35
|
+
rescue LoadError
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Run all specs in spec directory"
|
39
|
+
task :spec do |t|
|
40
|
+
options = "--colour --format progress --loadby --reverse"
|
41
|
+
files = FileList['spec/**/*_spec.rb']
|
42
|
+
system("spec #{options} #{files}")
|
43
|
+
end
|
44
|
+
|
45
|
+
task :default => :spec
|
data/VERSION.yml
ADDED
data/cap-recipes.gemspec
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{cap-recipes}
|
5
|
+
s.version = "0.3.18"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Nathan Esquenazi"]
|
9
|
+
s.date = %q{2009-06-15}
|
10
|
+
s.description = %q{Battle-tested capistrano recipes for debian, passenger, apache, delayed_job, juggernaut, rubygems, backgroundrb, rails and more}
|
11
|
+
s.email = %q{nesquena@gmail.com}
|
12
|
+
s.extra_rdoc_files = [
|
13
|
+
"LICENSE",
|
14
|
+
"README.textile"
|
15
|
+
]
|
16
|
+
s.files = [
|
17
|
+
".gitignore",
|
18
|
+
"LICENSE",
|
19
|
+
"README.textile",
|
20
|
+
"Rakefile",
|
21
|
+
"VERSION.yml",
|
22
|
+
"cap-recipes.gemspec",
|
23
|
+
"examples/advanced/deploy.rb",
|
24
|
+
"examples/advanced/deploy/experimental.rb",
|
25
|
+
"examples/advanced/deploy/production.rb",
|
26
|
+
"examples/simple/deploy.rb",
|
27
|
+
"lib/cap_recipes.rb",
|
28
|
+
"lib/cap_recipes/tasks/apache.rb",
|
29
|
+
"lib/cap_recipes/tasks/apache/install.rb",
|
30
|
+
"lib/cap_recipes/tasks/apache/manage.rb",
|
31
|
+
"lib/cap_recipes/tasks/aptitude.rb",
|
32
|
+
"lib/cap_recipes/tasks/aptitude/manage.rb",
|
33
|
+
"lib/cap_recipes/tasks/backgroundrb.rb",
|
34
|
+
"lib/cap_recipes/tasks/backgroundrb/hooks.rb",
|
35
|
+
"lib/cap_recipes/tasks/backgroundrb/manage.rb",
|
36
|
+
"lib/cap_recipes/tasks/delayed_job.rb",
|
37
|
+
"lib/cap_recipes/tasks/delayed_job/hooks.rb",
|
38
|
+
"lib/cap_recipes/tasks/delayed_job/manage.rb",
|
39
|
+
"lib/cap_recipes/tasks/juggernaut.rb",
|
40
|
+
"lib/cap_recipes/tasks/juggernaut/hooks.rb",
|
41
|
+
"lib/cap_recipes/tasks/juggernaut/manage.rb",
|
42
|
+
"lib/cap_recipes/tasks/memcache.rb",
|
43
|
+
"lib/cap_recipes/tasks/memcache/hooks.rb",
|
44
|
+
"lib/cap_recipes/tasks/memcache/install.rb",
|
45
|
+
"lib/cap_recipes/tasks/memcache/manage.rb",
|
46
|
+
"lib/cap_recipes/tasks/passenger.rb",
|
47
|
+
"lib/cap_recipes/tasks/passenger/install.rb",
|
48
|
+
"lib/cap_recipes/tasks/passenger/manage.rb",
|
49
|
+
"lib/cap_recipes/tasks/rails.rb",
|
50
|
+
"lib/cap_recipes/tasks/rails/hooks.rb",
|
51
|
+
"lib/cap_recipes/tasks/rails/manage.rb",
|
52
|
+
"lib/cap_recipes/tasks/rubygems.rb",
|
53
|
+
"lib/cap_recipes/tasks/rubygems/manage.rb",
|
54
|
+
"lib/cap_recipes/tasks/utilities.rb",
|
55
|
+
"lib/cap_recipes/tasks/whenever.rb",
|
56
|
+
"lib/cap_recipes/tasks/whenever/hooks.rb",
|
57
|
+
"lib/cap_recipes/tasks/whenever/manage.rb",
|
58
|
+
"spec/cap/all/Capfile",
|
59
|
+
"spec/cap/helper.rb",
|
60
|
+
"spec/cap_recipes_spec.rb",
|
61
|
+
"spec/spec_helper.rb"
|
62
|
+
]
|
63
|
+
s.homepage = %q{http://github.com/nesquena/cap-recipes}
|
64
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
65
|
+
s.require_paths = ["lib"]
|
66
|
+
s.rubygems_version = %q{1.3.4}
|
67
|
+
s.summary = %q{Battle-tested capistrano recipes for passenger, delayed_job, and more}
|
68
|
+
s.test_files = [
|
69
|
+
"spec/cap/helper.rb",
|
70
|
+
"spec/cap_recipes_spec.rb",
|
71
|
+
"spec/spec_helper.rb",
|
72
|
+
"examples/advanced/deploy/experimental.rb",
|
73
|
+
"examples/advanced/deploy/production.rb",
|
74
|
+
"examples/advanced/deploy.rb",
|
75
|
+
"examples/simple/deploy.rb"
|
76
|
+
]
|
77
|
+
|
78
|
+
if s.respond_to? :specification_version then
|
79
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
80
|
+
s.specification_version = 3
|
81
|
+
|
82
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
83
|
+
else
|
84
|
+
end
|
85
|
+
else
|
86
|
+
end
|
87
|
+
end
|