thunder_punch 0.0.4 → 0.0.5
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/CHANGELOG.mdown +8 -0
- data/README.mdown +4 -4
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/example/amazon.yml +10 -0
- data/lib/{critical_juncture/recipes.rb → recipes.rb} +0 -0
- data/lib/recipes/bundler.rb +10 -0
- data/lib/recipes/database.rb +72 -0
- data/lib/recipes/deployment.rb +3 -0
- data/lib/recipes/deployment/deployment.rb +60 -0
- data/lib/recipes/deployment/migration.rb +34 -0
- data/lib/recipes/deployment/passenger.rb +28 -0
- data/lib/recipes/deployment/symlinks.rb +39 -0
- data/lib/{critical_juncture/recipes → recipes}/ec2.rb +0 -0
- data/lib/{critical_juncture/recipes → recipes}/ec2/ami.rb +19 -19
- data/lib/recipes/jekyll/jekyll.rb +19 -0
- data/lib/recipes/less/less.rb +18 -0
- data/lib/recipes/thinking_sphinx.rb +52 -0
- data/lib/{critical_juncture/thunder_punch.rb → thunder_punch.rb} +0 -0
- data/lib/{critical_juncture/utilities → utilities}/utilities.rb +0 -0
- data/thunder_punch.gemspec +20 -10
- metadata +43 -20
- data/example/ec2_config.yml +0 -10
data/CHANGELOG.mdown
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.0.5 (June 28, 2010)
|
2
|
+
|
3
|
+
* Rename example config to amazon.yml [Bob Burbach - github.com/peregrinator]
|
4
|
+
* Change key names in config file [Bob Burbach - github.com/peregrinator]
|
5
|
+
* Remove name-spacing of lib under critical juncture [Bob Burbach - github.com/peregrinator]
|
6
|
+
* Add deployment recipes for a git-based deployment stategy [Bob Burbach - github.com/peregrinator]
|
7
|
+
* Add recipes for bundler and database tasks (fixing bundle and downloading db) [Bob Burbach - github.com/peregrinator]
|
8
|
+
|
1
9
|
== 0.0.4 (March 8, 2010)
|
2
10
|
|
3
11
|
* Add ability to exclude specific files and directories from ami bundling [Bob Burbach - github.com/peregrinator]
|
data/README.mdown
CHANGED
@@ -12,8 +12,8 @@ Because this collection of recipes is for Capistrano and run with the cap comman
|
|
12
12
|
|
13
13
|
* Capistrano >=2.5.5
|
14
14
|
* In your deploy.rb file:
|
15
|
-
* Add line 'require
|
16
|
-
* Add line 'set :ec2\_config\_location, File.join(File.dirname(__FILE__), "
|
15
|
+
* Add line 'require thunder_punch'
|
16
|
+
* Add line 'set :ec2\_config\_location, File.join(File.dirname(__FILE__), "amazon.yml")'
|
17
17
|
|
18
18
|
##Recipes
|
19
19
|
|
@@ -21,11 +21,11 @@ By creating a central and organized system for our tasks we can reduce the conte
|
|
21
21
|
|
22
22
|
###EC2
|
23
23
|
|
24
|
-
* Requires a yaml file named
|
24
|
+
* Requires a yaml file named amazon.yml with the appropriate passwords, etc. See the example file.
|
25
25
|
|
26
26
|
####ami.rb
|
27
27
|
* recipes for uploading necessary keys to server, bundling new AMI, uploading to S3, and registering a AMI
|
28
|
-
* exclude files and directories from bundling by putting them in an array in
|
28
|
+
* exclude files and directories from bundling by putting them in an array in amazon.yml
|
29
29
|
* `ami_excluded_items: ['/home/my_user', '/var/some_secret_stuff']`
|
30
30
|
|
31
31
|
##Known Issues
|
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ begin
|
|
8
8
|
gem.summary = "Collection of capistano recipes for deployment and server tasks"
|
9
9
|
gem.description = "Collection of capistano recipes for deployment and server tasks"
|
10
10
|
gem.email = "govpulse@gmail.com"
|
11
|
-
gem.homepage = "http://github.com/
|
11
|
+
gem.homepage = "http://github.com/trifecta/thunder_punch"
|
12
12
|
gem.authors = ["Bob Burbach"]
|
13
13
|
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
14
|
gem.add_dependency('capistrano', '>= 2.5.5')
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/example/amazon.yml
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#examples from Amazon documentation
|
2
|
+
aws_key_location: ~/.ssh #or whereever you store you aws keys - no trailing slash
|
3
|
+
ec2_private_key: pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
|
4
|
+
ec2_x509_cert: cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
|
5
|
+
aws_account_id: 495219933132
|
6
|
+
ec2_architecture: i386 #or x86_64
|
7
|
+
access_key_id: <aws-access-key-id>
|
8
|
+
secret_access_key: <aws-secret-access-key>
|
9
|
+
ec2_s3_bucket_name: some_bucket_for_your_ami_images
|
10
|
+
ami_excluded_items: [] #you may want to exclude files or directories like /home/my_user, etc.
|
File without changes
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
#############################################################
|
3
|
+
# Check for Existing Database
|
4
|
+
#############################################################
|
5
|
+
|
6
|
+
namespace :database do
|
7
|
+
desc "Check to see if database exists"
|
8
|
+
task :check_database_existence, :roles => [:database], :only => { :primary => true } do
|
9
|
+
db_exists = false
|
10
|
+
run "mysql -u root -e \"SELECT COUNT(SCHEMA_NAME) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '#{database_to_check}';\" --batch --reconnect --show-warning --silent" do |ch, stream, data|
|
11
|
+
if stream == :err
|
12
|
+
abort "capured output on STDERR when verifying database #{database_to_check} exists: #{data}"
|
13
|
+
elsif stream == :out
|
14
|
+
return_value = data.split("\n").first.chomp
|
15
|
+
|
16
|
+
if ['0','1'].include?(return_value)
|
17
|
+
db_exists = return_value == '0' ? false : true
|
18
|
+
else
|
19
|
+
abort "Invalid response from db when checking if database exists. Expected 0 or 1, got a count of #{return_value}"
|
20
|
+
end
|
21
|
+
puts db_exists
|
22
|
+
end
|
23
|
+
end
|
24
|
+
db_exists
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#############################################################
|
29
|
+
# Backup Database
|
30
|
+
#############################################################
|
31
|
+
|
32
|
+
namespace :database do
|
33
|
+
desc "Dump the current database"
|
34
|
+
task :backup, :roles => [:database], :only => { :primary => true } do
|
35
|
+
set :database_to_check, remote_db_name # used by the check_database_existence task
|
36
|
+
db_exists = find_and_execute_task('database:check_database_existence')
|
37
|
+
|
38
|
+
if db_exists
|
39
|
+
sudo "sudo mkdir -p #{db_path}"
|
40
|
+
run "mysqldump -u root --opt #{remote_db_name} > #{sql_file_path}"
|
41
|
+
else
|
42
|
+
abort "There is no database named #{remote_db_name} to backup"
|
43
|
+
end
|
44
|
+
end #end task :backup
|
45
|
+
end #end namspace
|
46
|
+
|
47
|
+
#############################################################
|
48
|
+
# Load Remote Staging Database to Local Machine
|
49
|
+
#############################################################
|
50
|
+
|
51
|
+
namespace :database do
|
52
|
+
|
53
|
+
desc "Backup remote database and load locally"
|
54
|
+
task :load_remote, :roles => [:database], :only => { :primary => true } do
|
55
|
+
backup
|
56
|
+
copy
|
57
|
+
load_copy
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "Copy the current database"
|
61
|
+
task :copy, :roles => [:database], :only => { :primary => true } do
|
62
|
+
`mkdir -p tmp`
|
63
|
+
download(sql_file_path, "tmp/", :via=> :scp)
|
64
|
+
end
|
65
|
+
|
66
|
+
desc "Load the staging database locally"
|
67
|
+
task :load_copy, :roles => [:database], :only => { :primary => true } do
|
68
|
+
`script/dbconsole -p < tmp/#{remote_db_name}.sql`
|
69
|
+
end
|
70
|
+
|
71
|
+
end #end namspace
|
72
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
namespace :deploy do
|
3
|
+
desc "Deploy the app"
|
4
|
+
task :default, :roles => [:app, :static, :worker] do
|
5
|
+
update
|
6
|
+
restart
|
7
|
+
cleanup
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Setup a GitHub-style deployment."
|
11
|
+
task :setup, :roles => [:app, :static, :worker], :except => { :no_release => true } do
|
12
|
+
run "git clone #{repository} #{current_path}"
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Update the deployed code."
|
16
|
+
task :update_code, :roles => [:app, :static, :worker], :except => { :no_release => true } do
|
17
|
+
run "cd #{current_path}; git fetch origin; git reset --hard #{branch}; git submodule update --init"
|
18
|
+
end
|
19
|
+
|
20
|
+
# "rollback" is actually a namespace with a default task
|
21
|
+
namespace :rollback do
|
22
|
+
desc "Rollback a single commit."
|
23
|
+
task :code, :roles => [:app, :static, :worker], :except => { :no_release => true } do
|
24
|
+
set :branch, "HEAD^"
|
25
|
+
deploy.default
|
26
|
+
end
|
27
|
+
|
28
|
+
task :default, :roles => [:app, :static, :worker] do
|
29
|
+
rollback.code
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
#############################################################
|
36
|
+
# Set Rake Path
|
37
|
+
#############################################################
|
38
|
+
|
39
|
+
namespace :deploy do
|
40
|
+
desc "Set rake path"
|
41
|
+
task :set_rake_path, :roles => [:app, :worker] do
|
42
|
+
run "which rake" do |ch, stream, data|
|
43
|
+
if stream == :err
|
44
|
+
abort "captured output on STDERR when setting rake path: #{data}"
|
45
|
+
elsif stream == :out
|
46
|
+
set :rake_path, data.to_s.strip
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# Turn of capistrano's restart in favor of passenger restart
|
54
|
+
namespace :deploy do
|
55
|
+
desc "Remove deploy:restart In Favor Of passenger:restart Task"
|
56
|
+
task :restart do
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
namespace :deploy do
|
3
|
+
desc <<-DESC
|
4
|
+
Run the migrate rake task. By default, it runs this in most recently \
|
5
|
+
deployed version of the app. However, you can specify a different release \
|
6
|
+
via the migrate_target variable, which must be one of :latest (for the \
|
7
|
+
default behavior), or :current (for the release indicated by the \
|
8
|
+
`current' symlink). Strings will work for those values instead of symbols, \
|
9
|
+
too. You can also specify additional environment variables to pass to rake \
|
10
|
+
via the migrate_env variable. Finally, you can specify the full path to the \
|
11
|
+
rake executable by setting the rake variable. The defaults are:
|
12
|
+
|
13
|
+
set :rake, "rake"
|
14
|
+
set :rails_env, "production"
|
15
|
+
set :migrate_env, ""
|
16
|
+
set :migrate_target, :latest
|
17
|
+
DESC
|
18
|
+
task :migrate, :roles => :worker, :only => { :primary => true } do
|
19
|
+
rake = fetch(:rake, "rake")
|
20
|
+
rails_env = fetch(:rails_env, "production")
|
21
|
+
migrate_env = fetch(:migrate_env, "")
|
22
|
+
migrate_target = fetch(:migrate_target, :latest)
|
23
|
+
|
24
|
+
directory = case migrate_target.to_sym
|
25
|
+
when :current then current_path
|
26
|
+
when :latest then current_release
|
27
|
+
else raise ArgumentError, "unknown migration target #{migrate_target.inspect}"
|
28
|
+
end
|
29
|
+
|
30
|
+
run "cd #{directory}; #{rake} RAILS_ENV=#{rails_env} #{migrate_env} db:migrate"
|
31
|
+
end
|
32
|
+
end #namespace
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
#############################################################
|
3
|
+
# Passenger Restart
|
4
|
+
#############################################################
|
5
|
+
|
6
|
+
namespace :passenger do
|
7
|
+
desc "Restart Application"
|
8
|
+
task :restart, :roles => [:app] do
|
9
|
+
run "touch #{current_path}/tmp/restart.txt"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
#############################################################
|
14
|
+
# Passenger Status Checks
|
15
|
+
#############################################################
|
16
|
+
|
17
|
+
namespace :passenger do
|
18
|
+
desc "Check Passenger Status"
|
19
|
+
task :status, :roles => [:app] do
|
20
|
+
sudo 'passenger-status'
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Check Apache/Passenger Memory Usage"
|
24
|
+
task :memory_stats, :roles => [:app] do
|
25
|
+
sudo 'passenger-memory-stats'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
# these are the usual suspects (for rails)
|
3
|
+
set :standard_symlinks, {
|
4
|
+
'log' => 'log',
|
5
|
+
'config/database.yml' => 'config/database.yml',
|
6
|
+
'public/system' => 'system',
|
7
|
+
'tmp' => 'tmp'
|
8
|
+
}
|
9
|
+
|
10
|
+
# these are project specific but still reside in shared
|
11
|
+
# e.g., 'backups' => 'db/backups'
|
12
|
+
# ==> rm -rf #{release_path}/backups && ln -s #{shared_path}/db/backups #{release_path}/backups
|
13
|
+
_cset :custom_symlinks, {}
|
14
|
+
|
15
|
+
# these are project specific but need full 'from' paths
|
16
|
+
# eg 'foo' => '/var/www/apps/project/foo'
|
17
|
+
# creates the command "rm -rf #{release_path}/foo && ln -s /var/www/apps/project/foo #{release_path}/foo"
|
18
|
+
_cset :other_symlinks, {}
|
19
|
+
|
20
|
+
namespace :symlinks do
|
21
|
+
desc "Create all sylinks (removes directories/files if they exist first)"
|
22
|
+
task :create, :roles => [:app, :static, :worker], :except => { :no_release => true } do
|
23
|
+
|
24
|
+
commands = standard_symlinks.map do |to, from|
|
25
|
+
"rm -rf #{current_path}/#{to} && ln -s #{shared_path}/#{from} #{current_path}/#{to}"
|
26
|
+
end
|
27
|
+
|
28
|
+
commands += custom_symlinks.map do |to, from|
|
29
|
+
"rm -rf #{current_path}/#{to} && ln -s #{shared_path}/#{from} #{current_path}/#{to}"
|
30
|
+
end
|
31
|
+
|
32
|
+
commands += other_symlinks.map do |to, from|
|
33
|
+
"rm -rf #{current_path}/#{to} && ln -s #{from} #{current_path}/#{to}"
|
34
|
+
end
|
35
|
+
|
36
|
+
run "cd #{current_path} && #{commands.join(" && ")}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
File without changes
|
@@ -6,28 +6,28 @@ Capistrano::Configuration.instance(:must_exist).load do |configuration|
|
|
6
6
|
|
7
7
|
task :load_ec2_config, :roles => :app do
|
8
8
|
alert_user('You need to set :ec2_config_location in your deploy file', :abort => true) unless ec2_config_location
|
9
|
-
alert_user("You must configure your ec2 settings in config/
|
9
|
+
alert_user("You must configure your ec2 settings in config/amazon.yml", :abort => true) unless File.exist?(ec2_config_location)
|
10
10
|
|
11
11
|
ec2_config = YAML.load( File.open(ec2_config_location, 'r') )
|
12
12
|
|
13
|
-
set :aws_key_location,
|
14
|
-
set :ec2_private_key,
|
15
|
-
set :ec2_x509_cert,
|
16
|
-
set :aws_account_id,
|
17
|
-
set :ec2_architecture,
|
18
|
-
set :
|
19
|
-
set :
|
20
|
-
set :ec2_s3_bucket_name,
|
21
|
-
set :ami_excluded_items,
|
13
|
+
set :aws_key_location, ec2_config['aws_key_location']
|
14
|
+
set :ec2_private_key, ec2_config['ec2_private_key']
|
15
|
+
set :ec2_x509_cert, ec2_config['ec2_x509_cert']
|
16
|
+
set :aws_account_id, ec2_config['aws_account_id']
|
17
|
+
set :ec2_architecture, ec2_config['ec2_architecture']
|
18
|
+
set :access_key_id, ec2_config['access_key_id']
|
19
|
+
set :secret_access_key, ec2_config['secret_access_key']
|
20
|
+
set :ec2_s3_bucket_name, ec2_config['ec2_s3_bucket_name']
|
21
|
+
set :ami_excluded_items, ec2_config['ami_excluded_items']
|
22
22
|
|
23
|
-
alert_user('You need to set :aws_key_location in config/
|
24
|
-
alert_user('You need to set :ec2_private_key in config/
|
25
|
-
alert_user('You need to set :ec2_x509_cert in config/
|
26
|
-
alert_user('You need to set :aws_account_id in config/
|
27
|
-
alert_user('You need to set :ec2_architecture to either "i386" or "x86_64" in config/
|
28
|
-
alert_user('You need to set :
|
29
|
-
alert_user('You need to set :
|
30
|
-
alert_user('You need to set :ec2_s3_bucket_name in config/
|
23
|
+
alert_user('You need to set :aws_key_location in config/amazon.yml', :abort => true) unless :key_location
|
24
|
+
alert_user('You need to set :ec2_private_key in config/amazon.yml', :abort => true) unless :ec2_private_key
|
25
|
+
alert_user('You need to set :ec2_x509_cert in config/amazon.yml', :abort => true) unless :ec2_x509_cert
|
26
|
+
alert_user('You need to set :aws_account_id in config/amazon.yml', :abort => true) unless :aws_account_id
|
27
|
+
alert_user('You need to set :ec2_architecture to either "i386" or "x86_64" in config/amazon.yml', :abort => true) unless :ec2_architecture
|
28
|
+
alert_user('You need to set :access_key_id in config/amazon.yml', :abort => true) unless :access_key_id
|
29
|
+
alert_user('You need to set :secret_access_key in config/amazon.yml', :abort => true) unless :secret_access_key
|
30
|
+
alert_user('You need to set :ec2_s3_bucket_name in config/amazon.yml', :abort => true) unless :ec2_s3_bucket_name
|
31
31
|
|
32
32
|
set :ec2_config_loaded, true
|
33
33
|
end
|
@@ -86,7 +86,7 @@ Capistrano::Configuration.instance(:must_exist).load do |configuration|
|
|
86
86
|
task :upload_ami_to_s3, :roles => :app do
|
87
87
|
load_ec2_config unless ec2_config_loaded
|
88
88
|
alert_user("You need to set :bundle_name via the command line\n `cap ec2:upload_to_s3 -s bundle_name=sample`", :abort => true) unless configuration[:bundle_name]
|
89
|
-
sudo "ec2-upload-bundle -b #{ec2_s3_bucket_name} -m /mnt/#{bundle_name}.manifest.xml -a #{
|
89
|
+
sudo "ec2-upload-bundle -b #{ec2_s3_bucket_name} -m /mnt/#{bundle_name}.manifest.xml -a #{access_key_id} -s #{secret_access_key}"
|
90
90
|
end
|
91
91
|
|
92
92
|
desc 'Register your bundled and upload (to S3) AMI'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do |configuration|
|
2
|
+
|
3
|
+
namespace :jekyll do
|
4
|
+
desc "Build static files from jekyll files"
|
5
|
+
task :build do
|
6
|
+
alert_user "Building static files from jekyll files"
|
7
|
+
run_locally "jekyll"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Create site (less and jekyll)"
|
11
|
+
task :create do
|
12
|
+
alert_user "[START] Creating site [START]"
|
13
|
+
find_and_execute_task('less:build')
|
14
|
+
find_and_execute_task('jekyll:build')
|
15
|
+
alert_user "[END] Creating site [END]"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do |configuration|
|
2
|
+
|
3
|
+
namespace :less do
|
4
|
+
desc "Build css files from .less files"
|
5
|
+
task :build do
|
6
|
+
_cset :less_directory, '_less'
|
7
|
+
_cset :css_directory, 'css'
|
8
|
+
Dir.glob(less_directory + '/*.less').each do |file|
|
9
|
+
if File.file?(file)
|
10
|
+
file_name = file.split('/').last.split('.').first
|
11
|
+
alert_user("Creating css file for less file named #{file_name}" )
|
12
|
+
run_locally("lessc #{less_directory}/#{file_name}.less #{css_directory}/#{file_name}.css")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
namespace :thinking_sphinx do
|
3
|
+
|
4
|
+
desc "Generate the Sphinx configuration file"
|
5
|
+
task :configure, :roles => [:app, :worker] do
|
6
|
+
rake "thinking_sphinx:configure"
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Index data"
|
10
|
+
task :index, :roles => :worker do
|
11
|
+
rake "thinking_sphinx:index"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Start the Sphinx daemon"
|
15
|
+
task :start, :roles => :worker do
|
16
|
+
configure
|
17
|
+
rake "thinking_sphinx:start"
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Stop the Sphinx daemon"
|
21
|
+
task :stop, :roles => :worker do
|
22
|
+
configure
|
23
|
+
rake "thinking_sphinx:stop"
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Stop and then start the Sphinx daemon"
|
27
|
+
task :restart, :roles => :worker do
|
28
|
+
stop
|
29
|
+
start
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "Stop, re-index and then start the Sphinx daemon"
|
33
|
+
task :rebuild, :roles => :worker do
|
34
|
+
stop
|
35
|
+
index
|
36
|
+
start
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Add the shared folder for sphinx files for the production environment"
|
40
|
+
task :shared_sphinx_folder, :roles => [:app, :worker] do
|
41
|
+
run "mkdir -p #{shared_path}/db/sphinx/production"
|
42
|
+
end
|
43
|
+
|
44
|
+
def rake(*tasks)
|
45
|
+
rails_env = fetch(:rails_env, "production")
|
46
|
+
rake = fetch(:rake, "rake")
|
47
|
+
tasks.each do |t|
|
48
|
+
run "if [ -d #{release_path} ]; then cd #{release_path}; else cd #{current_path}; fi; #{rake} RAILS_ENV=#{rails_env} #{t}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
File without changes
|
File without changes
|
data/thunder_punch.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{thunder_punch}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bob Burbach"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-07-02}
|
13
13
|
s.description = %q{Collection of capistano recipes for deployment and server tasks}
|
14
14
|
s.email = %q{govpulse@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,20 +25,30 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"TODO.mdown",
|
27
27
|
"VERSION",
|
28
|
-
"example/
|
29
|
-
"lib/
|
30
|
-
"lib/
|
31
|
-
"lib/
|
32
|
-
"lib/
|
33
|
-
"lib/
|
28
|
+
"example/amazon.yml",
|
29
|
+
"lib/recipes.rb",
|
30
|
+
"lib/recipes/bundler.rb",
|
31
|
+
"lib/recipes/database.rb",
|
32
|
+
"lib/recipes/deployment.rb",
|
33
|
+
"lib/recipes/deployment/deployment.rb",
|
34
|
+
"lib/recipes/deployment/migration.rb",
|
35
|
+
"lib/recipes/deployment/passenger.rb",
|
36
|
+
"lib/recipes/deployment/symlinks.rb",
|
37
|
+
"lib/recipes/ec2.rb",
|
38
|
+
"lib/recipes/ec2/ami.rb",
|
39
|
+
"lib/recipes/jekyll/jekyll.rb",
|
40
|
+
"lib/recipes/less/less.rb",
|
41
|
+
"lib/recipes/thinking_sphinx.rb",
|
42
|
+
"lib/thunder_punch.rb",
|
43
|
+
"lib/utilities/utilities.rb",
|
34
44
|
"test/helper.rb",
|
35
45
|
"test/test_thunder_punch.rb",
|
36
46
|
"thunder_punch.gemspec"
|
37
47
|
]
|
38
|
-
s.homepage = %q{http://github.com/
|
48
|
+
s.homepage = %q{http://github.com/trifecta/thunder_punch}
|
39
49
|
s.rdoc_options = ["--charset=UTF-8"]
|
40
50
|
s.require_paths = ["lib"]
|
41
|
-
s.rubygems_version = %q{1.3.
|
51
|
+
s.rubygems_version = %q{1.3.6}
|
42
52
|
s.summary = %q{Collection of capistano recipes for deployment and server tasks}
|
43
53
|
s.test_files = [
|
44
54
|
"test/helper.rb",
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thunder_punch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Bob Burbach
|
@@ -9,29 +14,35 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-07-02 00:00:00 -07:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: thoughtbot-shoulda
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
23
29
|
version: "0"
|
24
|
-
|
30
|
+
type: :development
|
31
|
+
version_requirements: *id001
|
25
32
|
- !ruby/object:Gem::Dependency
|
26
33
|
name: capistrano
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 2
|
41
|
+
- 5
|
42
|
+
- 5
|
33
43
|
version: 2.5.5
|
34
|
-
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
35
46
|
description: Collection of capistano recipes for deployment and server tasks
|
36
47
|
email: govpulse@gmail.com
|
37
48
|
executables: []
|
@@ -50,17 +61,27 @@ files:
|
|
50
61
|
- Rakefile
|
51
62
|
- TODO.mdown
|
52
63
|
- VERSION
|
53
|
-
- example/
|
54
|
-
- lib/
|
55
|
-
- lib/
|
56
|
-
- lib/
|
57
|
-
- lib/
|
58
|
-
- lib/
|
64
|
+
- example/amazon.yml
|
65
|
+
- lib/recipes.rb
|
66
|
+
- lib/recipes/bundler.rb
|
67
|
+
- lib/recipes/database.rb
|
68
|
+
- lib/recipes/deployment.rb
|
69
|
+
- lib/recipes/deployment/deployment.rb
|
70
|
+
- lib/recipes/deployment/migration.rb
|
71
|
+
- lib/recipes/deployment/passenger.rb
|
72
|
+
- lib/recipes/deployment/symlinks.rb
|
73
|
+
- lib/recipes/ec2.rb
|
74
|
+
- lib/recipes/ec2/ami.rb
|
75
|
+
- lib/recipes/jekyll/jekyll.rb
|
76
|
+
- lib/recipes/less/less.rb
|
77
|
+
- lib/recipes/thinking_sphinx.rb
|
78
|
+
- lib/thunder_punch.rb
|
79
|
+
- lib/utilities/utilities.rb
|
59
80
|
- test/helper.rb
|
60
81
|
- test/test_thunder_punch.rb
|
61
82
|
- thunder_punch.gemspec
|
62
83
|
has_rdoc: true
|
63
|
-
homepage: http://github.com/
|
84
|
+
homepage: http://github.com/trifecta/thunder_punch
|
64
85
|
licenses: []
|
65
86
|
|
66
87
|
post_install_message:
|
@@ -72,18 +93,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
72
93
|
requirements:
|
73
94
|
- - ">="
|
74
95
|
- !ruby/object:Gem::Version
|
96
|
+
segments:
|
97
|
+
- 0
|
75
98
|
version: "0"
|
76
|
-
version:
|
77
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
100
|
requirements:
|
79
101
|
- - ">="
|
80
102
|
- !ruby/object:Gem::Version
|
103
|
+
segments:
|
104
|
+
- 0
|
81
105
|
version: "0"
|
82
|
-
version:
|
83
106
|
requirements: []
|
84
107
|
|
85
108
|
rubyforge_project:
|
86
|
-
rubygems_version: 1.3.
|
109
|
+
rubygems_version: 1.3.6
|
87
110
|
signing_key:
|
88
111
|
specification_version: 3
|
89
112
|
summary: Collection of capistano recipes for deployment and server tasks
|
data/example/ec2_config.yml
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#examples from Amazon documentation
|
2
|
-
aws_key_location: ~/.ssh #or whereever you store you aws keys - no trailing slash
|
3
|
-
ec2_private_key: pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
|
4
|
-
ec2_x509_cert: cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
|
5
|
-
aws_account_id: 495219933132
|
6
|
-
ec2_architecture: i386 #or x86_64
|
7
|
-
aws_access_key: <aws-access-key-id>
|
8
|
-
aws_secret_access_key: <aws-secret-access-key>
|
9
|
-
ec2_s3_bucket_name: some_bucket_for_your_ami_images
|
10
|
-
ami_excluded_items: [] #you may want to exclude files or directories like /home/my_user, etc.
|