chicken_soup 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/chicken_soup.gemspec +2 -2
- data/lib/chicken_soup/capabilities/apache/apache-tasks.rb +4 -4
- data/lib/chicken_soup/capabilities/bundler/bundler-tasks.rb +3 -3
- data/lib/chicken_soup/capabilities/mysql/mysql-tasks.rb +2 -2
- data/lib/chicken_soup/capabilities/nginx/nginx-tasks.rb +47 -20
- data/lib/chicken_soup/capabilities/passenger/passenger-tasks.rb +3 -3
- data/lib/chicken_soup/capabilities/shared/db-tasks.rb +4 -4
- data/lib/chicken_soup/capabilities/shared/web_server-tasks.rb +8 -8
- data/lib/chicken_soup/capabilities/unix/unix-checks.rb +3 -3
- data/lib/chicken_soup/capabilities/unix/unix-defaults.rb +6 -6
- data/lib/chicken_soup/capabilities/unix/unix-tasks.rb +5 -4
- data/lib/chicken_soup/version.rb +1 -1
- metadata +54 -58
data/chicken_soup.gemspec
CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.email = 'support@thekompanee.com'
|
16
16
|
s.homepage = 'http://github.com/jfelchner/chicken_soup'
|
17
17
|
|
18
|
-
s.summary = "
|
19
|
-
s.description = %q[
|
18
|
+
s.summary = "...for the Deployment Soul."
|
19
|
+
s.description = %q[Why do you keep typing all that crap into your Capistrano recipes? Are you too cool for standards? Well, ARE YA!?]
|
20
20
|
|
21
21
|
s.rdoc_options = ["--charset = UTF-8"]
|
22
22
|
s.extra_rdoc_files = %w[README.md LICENSE]
|
@@ -6,7 +6,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
6
6
|
|
7
7
|
namespace :website do
|
8
8
|
desc "Creates the site configuration for the files."
|
9
|
-
task :create do
|
9
|
+
task :create, :roles => :web do
|
10
10
|
abort "Sorry, auto-installing sites is not supported on your version of Apache." unless exists?(:apache_disable_script)
|
11
11
|
|
12
12
|
virtual_host_config = <<-VHOST
|
@@ -59,7 +59,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
desc "Completely removes the site configuration from the server (but leaves the files.)"
|
62
|
-
task :remove do
|
62
|
+
task :remove, :roles => :web do
|
63
63
|
abort "Sorry, auto-removing sites is not supported on your version of Apache." unless exists?(:apache_disable_script)
|
64
64
|
|
65
65
|
run "#{sudo} rm /etc/apache2/sites-available/#{deploy_site_name}"
|
@@ -67,7 +67,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
desc "Enable Site"
|
70
|
-
task :enable do
|
70
|
+
task :enable, :roles => :web do
|
71
71
|
abort "Sorry, auto-enabling sites is not supported on your version of Apache." unless exists?(:apache_enable_script)
|
72
72
|
|
73
73
|
run "#{sudo} #{apache_enable_script} #{deploy_site_name}"
|
@@ -75,7 +75,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
desc "Disable Site"
|
78
|
-
task :disable do
|
78
|
+
task :disable, :roles => :web do
|
79
79
|
abort "Sorry, auto-disabling sites is not supported on your version of Apache." unless exists?(:apache_disable_script)
|
80
80
|
|
81
81
|
run "#{sudo} #{apache_disable_script} #{deploy_site_name}"
|
@@ -8,12 +8,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
8
8
|
|
9
9
|
namespace :gems do
|
10
10
|
desc "Install Bundled Gems"
|
11
|
-
task :install do
|
11
|
+
task :install, :roles => :app do
|
12
12
|
run "cd #{latest_release} && bundle install --gemfile #{latest_release}/Gemfile --path #{shared_path}/bundle --deployment --quiet --without development test"
|
13
13
|
end
|
14
14
|
|
15
15
|
desc "Update Bundled Gems"
|
16
|
-
task :update do
|
16
|
+
task :update, :roles => :app do
|
17
17
|
abort "I'm sorry Dave, but I can't let you do that. I have full control over production." if rails_env == 'production'
|
18
18
|
|
19
19
|
run "cd #{latest_release} && bundle update"
|
@@ -22,7 +22,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
22
22
|
|
23
23
|
namespace :bundler do
|
24
24
|
desc "Install Bundler"
|
25
|
-
task :install do
|
25
|
+
task :install, :roles => :app do
|
26
26
|
bundler_install_command = "gem install bundler --version #{gem_packager_version} --no-ri --no-rdoc && gem cleanup bundler"
|
27
27
|
|
28
28
|
if fetch(:capabilities).include? :rvm
|
@@ -15,7 +15,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
15
15
|
variable.
|
16
16
|
* The DB user will be granted all privileges on the DB.
|
17
17
|
DESC
|
18
|
-
task :create do
|
18
|
+
task :create, :roles => :db do
|
19
19
|
create_script = <<-CREATESCRIPT
|
20
20
|
create database #{application_underscored} character set utf8;
|
21
21
|
create user '#{application_underscored}'@'localhost' identified by '#{db_app_password}';
|
@@ -34,7 +34,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
34
34
|
* The script is executed as `root` and as such, the user will be prompted
|
35
35
|
for `root`'s password.
|
36
36
|
DESC
|
37
|
-
task :drop do
|
37
|
+
task :drop, :roles => :db do
|
38
38
|
drop_script = <<-DROPSCRIPT
|
39
39
|
drop user #{application_underscored}@localhost;
|
40
40
|
drop database #{application_underscored};
|
@@ -6,16 +6,24 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
6
6
|
|
7
7
|
namespace :website do
|
8
8
|
desc "Creates the site configuration for the files."
|
9
|
-
task :create do
|
9
|
+
task :create, :roles => :web do
|
10
10
|
abort "Sorry, auto-installing sites is not supported on your installation of Nginx." unless exists?(:nginx_disable_script)
|
11
11
|
|
12
|
-
|
12
|
+
passenger_friendly_error_pages = rails_env == :production ? "off" : "on"
|
13
13
|
|
14
14
|
virtual_host_config = <<-VHOST
|
15
15
|
server {
|
16
|
+
###
|
17
|
+
# Server Details
|
18
|
+
#
|
16
19
|
listen #{web_server_ip}:443;
|
17
|
-
server_name
|
20
|
+
server_name .#{deploy_site_name};
|
18
21
|
|
22
|
+
root #{deploy_to}/current/public;
|
23
|
+
|
24
|
+
###
|
25
|
+
# Passenger and Rails
|
26
|
+
#
|
19
27
|
passenger_enabled on;
|
20
28
|
passenger_friendly_error_pages #{passenger_friendly_error_pages};
|
21
29
|
passenger_min_instances 4;
|
@@ -23,39 +31,58 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
23
31
|
rails_env #{rails_env};
|
24
32
|
rack_env #{rails_env};
|
25
33
|
|
34
|
+
###
|
35
|
+
# Performance and Security
|
36
|
+
#
|
37
|
+
client_max_body_size 3M;
|
38
|
+
|
39
|
+
location ~ /\. { deny all; } # This will deny access to any hidden file (beginning with a period)
|
40
|
+
|
41
|
+
###
|
42
|
+
# SSL
|
43
|
+
#
|
26
44
|
ssl on;
|
27
45
|
ssl_certificate /etc/nginx/ssl/#{domain}.crt;
|
28
46
|
ssl_certificate_key /etc/nginx/ssl/#{domain}.key;
|
29
47
|
|
30
48
|
ssl_session_timeout 5m;
|
31
49
|
|
50
|
+
ssl_protocols SSLv3 TLSv1;
|
32
51
|
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
|
33
52
|
ssl_prefer_server_ciphers on;
|
34
53
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
54
|
+
###
|
55
|
+
# Logs
|
56
|
+
#
|
39
57
|
access_log /var/log/nginx/#{application}.access.log main;
|
40
58
|
error_log /var/log/nginx/#{application}.error.log warn;
|
41
59
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
60
|
+
###
|
61
|
+
# Handle Errors
|
62
|
+
#
|
63
|
+
recursive_error_pages on;
|
46
64
|
|
47
|
-
|
48
|
-
|
65
|
+
error_page 500 502 504 /500.html;
|
66
|
+
error_page 400 /404.html;
|
67
|
+
error_page 422 /422.html;
|
68
|
+
error_page 503 @503;
|
69
|
+
|
70
|
+
if (-f $document_root/system/maintenance.html) {
|
71
|
+
return 503;
|
72
|
+
}
|
73
|
+
|
74
|
+
location @503 {
|
75
|
+
error_page 405 = $document_root/system/maintenance.html;
|
76
|
+
|
77
|
+
rewrite ^(.*)$ /system/maintenance.html break;
|
49
78
|
}
|
50
79
|
}
|
51
80
|
|
52
81
|
server {
|
53
82
|
listen #{web_server_ip}:80;
|
54
|
-
server_name
|
83
|
+
server_name .#{deploy_site_name};
|
55
84
|
|
56
|
-
|
57
|
-
rewrite ^ https://$http_host$request_uri? permanent
|
58
|
-
}
|
85
|
+
rewrite ^ https://$http_host$request_uri? permanent
|
59
86
|
}
|
60
87
|
VHOST
|
61
88
|
|
@@ -65,7 +92,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
65
92
|
end
|
66
93
|
|
67
94
|
desc "Completely removes the site configuration from the server (but leaves the files.)"
|
68
|
-
task :remove do
|
95
|
+
task :remove, :roles => :web do
|
69
96
|
abort "Sorry, auto-removing sites is not supported on your installation of Nginx." unless exists?(:nginx_disable_script)
|
70
97
|
|
71
98
|
run "#{sudo} rm /etc/nginx/sites-available/#{deploy_site_name}"
|
@@ -73,12 +100,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
73
100
|
end
|
74
101
|
|
75
102
|
desc "Enable Site"
|
76
|
-
task :enable do
|
103
|
+
task :enable, :roles => :web do
|
77
104
|
abort "Sorry, auto-enabling sites is not supported on your installation of Nginx." unless exists?(:nginx_enable_script)
|
78
105
|
end
|
79
106
|
|
80
107
|
desc "Disable Site"
|
81
|
-
task :disable do
|
108
|
+
task :disable, :roles => :web do
|
82
109
|
abort "Sorry, auto-disabling sites is not supported on your installation of Nginx." unless exists?(:nginx_disable_script)
|
83
110
|
end
|
84
111
|
end
|
@@ -8,14 +8,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
8
8
|
|
9
9
|
This task does nothing.
|
10
10
|
DESC
|
11
|
-
task :start do ; end
|
11
|
+
task :start, :roles => :app do ; end
|
12
12
|
|
13
13
|
desc <<-DESC
|
14
14
|
There is no way to stop the application via Passenger.
|
15
15
|
|
16
16
|
This task does nothing.
|
17
17
|
DESC
|
18
|
-
task :stop do ; end
|
18
|
+
task :stop, :roles => :app do ; end
|
19
19
|
|
20
20
|
desc <<-DESC
|
21
21
|
Starts/Restarts the application.
|
@@ -24,7 +24,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
24
24
|
directory called `restart.txt`. If the Last Access time for `restart.txt`
|
25
25
|
changes, Passenger restarts the app.
|
26
26
|
DESC
|
27
|
-
task :restart, :
|
27
|
+
task :restart, :roles => :app do
|
28
28
|
run "touch #{File.join( current_path, 'tmp', 'restart.txt' )}"
|
29
29
|
end
|
30
30
|
end
|
@@ -22,12 +22,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
22
22
|
* After export, each file is zipped up using a bzip2 compression format.
|
23
23
|
DESC
|
24
24
|
namespace :backup do
|
25
|
-
task :default do
|
25
|
+
task :default, :roles => :db, :only => {:primary => true} do
|
26
26
|
run "cd #{current_path} && BACKUP_DIRECTORY=#{shared_path}/db_backups #{rake} db:backup"
|
27
27
|
end
|
28
28
|
|
29
29
|
desc "[internal] Used to check to see if the db:backup task exists on the server."
|
30
|
-
task :check do
|
30
|
+
task :check, :roles => :db do
|
31
31
|
backup_task_exists = capture("cd #{current_path} && #{rake} -T | grep db:backup | wc -l").chomp
|
32
32
|
abort("There must be a task named db:backup in order to deploy. If you do not want to backup your DB during deployments, set the skip_backup_before_migration variable to true in your deploy.rb.") if backup_task_exists == '0'
|
33
33
|
|
@@ -45,7 +45,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
45
45
|
to run this in production, you'll need to log into the server and
|
46
46
|
run the rake task manually or use Capistrano's `console` task.
|
47
47
|
DESC
|
48
|
-
task :reset_and_seed do
|
48
|
+
task :reset_and_seed, :roles => :db do
|
49
49
|
abort "I'm sorry Dave, but I can't let you do that. I have full control over production." if rails_env == 'production'
|
50
50
|
db.backup
|
51
51
|
run "cd #{current_path} && #{rake} db:reset_and_seed"
|
@@ -62,7 +62,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
62
62
|
to run this in production, you'll need to log into the server and
|
63
63
|
run the rake task manually or use Capistrano's `console` task.
|
64
64
|
DESC
|
65
|
-
task :seed do
|
65
|
+
task :seed, :roles => :db do
|
66
66
|
abort "I'm sorry Dave, but I can't let you do that. I have full control over production." if rails_env == 'production'
|
67
67
|
db.backup
|
68
68
|
run "cd #{current_path} && #{rake} db:seed"
|
@@ -20,14 +20,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
20
20
|
desc <<-DESC
|
21
21
|
Enables the website's application by removing the maintenance page.
|
22
22
|
DESC
|
23
|
-
task :enable do
|
23
|
+
task :enable, :roles => :web do
|
24
24
|
website.maintenance_mode.disable
|
25
25
|
end
|
26
26
|
|
27
27
|
desc <<-DESC
|
28
28
|
Disables the website's application by installing the maintenance page.
|
29
29
|
DESC
|
30
|
-
task :disable do
|
30
|
+
task :disable, :roles => :web do
|
31
31
|
website.maintenance_mode.enable
|
32
32
|
end
|
33
33
|
end
|
@@ -41,7 +41,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
41
41
|
web servers are configured correctly) will make your application \
|
42
42
|
web-accessible again.
|
43
43
|
DESC
|
44
|
-
task :disable, :
|
44
|
+
task :disable, :roles => :web do
|
45
45
|
run "rm #{shared_path}/system/maintenance.html"
|
46
46
|
end
|
47
47
|
|
@@ -61,7 +61,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
61
61
|
|
62
62
|
Further customization will require that you write your own task.
|
63
63
|
DESC
|
64
|
-
task :enable, :
|
64
|
+
task :enable, :roles => :web do
|
65
65
|
on_rollback { rm "#{shared_path}/system/maintenance.html" }
|
66
66
|
|
67
67
|
require 'erb'
|
@@ -77,22 +77,22 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
77
77
|
|
78
78
|
namespace :web_server do
|
79
79
|
desc "Stop the web server"
|
80
|
-
task :stop do
|
80
|
+
task :stop, :roles => :web do
|
81
81
|
run "#{sudo} #{web_server_control_script} stop"
|
82
82
|
end
|
83
83
|
|
84
84
|
desc "Start the web server"
|
85
|
-
task :start do
|
85
|
+
task :start, :roles => :web do
|
86
86
|
run "#{sudo} #{web_server_control_script} start"
|
87
87
|
end
|
88
88
|
|
89
89
|
desc "Restart the web server"
|
90
|
-
task :restart do
|
90
|
+
task :restart, :roles => :web do
|
91
91
|
run "#{sudo} #{web_server_control_script} restart"
|
92
92
|
end
|
93
93
|
|
94
94
|
desc "Reloads the web server configuration"
|
95
|
-
task :reload do
|
95
|
+
task :reload, :roles => :web do
|
96
96
|
run "#{sudo} #{web_server_control_script} reload"
|
97
97
|
end
|
98
98
|
end
|
@@ -21,9 +21,9 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
21
21
|
:app_server_ip,
|
22
22
|
:web_server_ip,
|
23
23
|
:db_server_ip,
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
24
|
+
:web_servers,
|
25
|
+
:app_servers,
|
26
|
+
:db_servers
|
27
27
|
]
|
28
28
|
|
29
29
|
verify_variables(required_variables)
|
@@ -23,9 +23,9 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
23
23
|
|
24
24
|
_cset :default_server_name, domain
|
25
25
|
|
26
|
-
_cset(:
|
27
|
-
_cset(:
|
28
|
-
_cset(:
|
26
|
+
_cset(:app_servers) { default_server_name }
|
27
|
+
_cset(:web_servers) { default_server_name }
|
28
|
+
_cset(:db_servers) { default_server_name }
|
29
29
|
|
30
30
|
# Evidently roles can't be assigned in a namespace :-/
|
31
31
|
set_unix_server_roles
|
@@ -35,8 +35,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
35
35
|
|
36
36
|
desc "[internal] This task is only here because `role` cannot be used within a `namespace`"
|
37
37
|
task :set_unix_server_roles do
|
38
|
-
role :web,
|
39
|
-
role :app,
|
40
|
-
role :db,
|
38
|
+
role :web, web_servers
|
39
|
+
role :app, app_servers
|
40
|
+
role :db, db_servers, :primary => true
|
41
41
|
end
|
42
42
|
end
|
@@ -30,7 +30,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
30
30
|
|
31
31
|
Note: This task will also work for setting up shared directories for user uploads, etc.
|
32
32
|
DESC
|
33
|
-
task :setup do
|
33
|
+
task :setup, :roles => :app do
|
34
34
|
global_shared_elements.each do |shared_file|
|
35
35
|
base_dir_of_shared_file = shared_file.match(%r{/?((?:.*)/)})[1]
|
36
36
|
run "mkdir -p '#{shared_path}/#{base_dir_of_shared_file}'"
|
@@ -38,12 +38,13 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
38
38
|
remote_shared_file = "#{shared_path}/#{shared_file}"
|
39
39
|
local_shared_file = "#{Dir.pwd}/#{shared_file}"
|
40
40
|
local_environment_specific_file = "#{local_shared_file}.#{rails_env}"
|
41
|
+
permissions = File.directory? local_shared_file ? "755" : "600"
|
41
42
|
|
42
43
|
if File.exists?(local_environment_specific_file)
|
43
|
-
top.upload(local_environment_specific_file, remote_shared_file, :mode =>
|
44
|
+
top.upload(local_environment_specific_file, remote_shared_file, :mode => permissions)
|
44
45
|
elsif !remote_file_exists?(remote_shared_file)
|
45
46
|
if File.exists?(local_shared_file)
|
46
|
-
top.upload(local_shared_file, remote_shared_file, :mode =>
|
47
|
+
top.upload(local_shared_file, remote_shared_file, :mode => permissions)
|
47
48
|
else
|
48
49
|
abort "I'm sorry Dave, but I couldn't find a local file or directory at '#{local_shared_file}' or '#{local_environment_specific_file}'"
|
49
50
|
end
|
@@ -56,7 +57,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
56
57
|
|
57
58
|
By default, these live in the shared directory that Capistrano sets up.
|
58
59
|
DESC
|
59
|
-
task :symlink do
|
60
|
+
task :symlink, :roles => :app do
|
60
61
|
global_shared_elements.each do |shared_file|
|
61
62
|
run "ln -nfs #{shared_path}/#{shared_file} #{latest_release}/#{shared_file}"
|
62
63
|
end
|
data/lib/chicken_soup/version.rb
CHANGED
metadata
CHANGED
@@ -1,84 +1,82 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: chicken_soup
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.3.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- thekompanee
|
9
9
|
- jfelchner
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
date: 2011-06-15 00:00:00 -05:00
|
13
|
+
date: 2011-07-18 00:00:00.000000000 -05:00
|
15
14
|
default_executable:
|
16
|
-
dependencies:
|
17
|
-
- !ruby/object:Gem::Dependency
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
18
17
|
name: capistrano
|
19
|
-
|
20
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirement: &2153155400 !ruby/object:Gem::Requirement
|
21
19
|
none: false
|
22
|
-
requirements:
|
20
|
+
requirements:
|
23
21
|
- - ~>
|
24
|
-
- !ruby/object:Gem::Version
|
22
|
+
- !ruby/object:Gem::Version
|
25
23
|
version: 2.6.0
|
26
24
|
type: :runtime
|
27
|
-
version_requirements: *id001
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: mail
|
30
25
|
prerelease: false
|
31
|
-
|
26
|
+
version_requirements: *2153155400
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mail
|
29
|
+
requirement: &2153154900 !ruby/object:Gem::Requirement
|
32
30
|
none: false
|
33
|
-
requirements:
|
31
|
+
requirements:
|
34
32
|
- - ~>
|
35
|
-
- !ruby/object:Gem::Version
|
33
|
+
- !ruby/object:Gem::Version
|
36
34
|
version: 2.2.15
|
37
35
|
type: :runtime
|
38
|
-
version_requirements: *id002
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: bundler
|
41
36
|
prerelease: false
|
42
|
-
|
37
|
+
version_requirements: *2153154900
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: bundler
|
40
|
+
requirement: &2172657540 !ruby/object:Gem::Requirement
|
43
41
|
none: false
|
44
|
-
requirements:
|
42
|
+
requirements:
|
45
43
|
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
44
|
+
- !ruby/object:Gem::Version
|
47
45
|
version: 1.0.10
|
48
46
|
type: :development
|
49
|
-
version_requirements: *id003
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: rspec
|
52
47
|
prerelease: false
|
53
|
-
|
48
|
+
version_requirements: *2172657540
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rspec
|
51
|
+
requirement: &2172657080 !ruby/object:Gem::Requirement
|
54
52
|
none: false
|
55
|
-
requirements:
|
53
|
+
requirements:
|
56
54
|
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
55
|
+
- !ruby/object:Gem::Version
|
58
56
|
version: 2.6.0
|
59
57
|
type: :development
|
60
|
-
version_requirements: *id004
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: yard
|
63
58
|
prerelease: false
|
64
|
-
|
59
|
+
version_requirements: *2172657080
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: yard
|
62
|
+
requirement: &2172656620 !ruby/object:Gem::Requirement
|
65
63
|
none: false
|
66
|
-
requirements:
|
64
|
+
requirements:
|
67
65
|
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
66
|
+
- !ruby/object:Gem::Version
|
69
67
|
version: 0.7.1
|
70
68
|
type: :development
|
71
|
-
|
72
|
-
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *2172656620
|
71
|
+
description: Why do you keep typing all that crap into your Capistrano recipes? Are
|
72
|
+
you too cool for standards? Well, ARE YA!?
|
73
73
|
email: support@thekompanee.com
|
74
74
|
executables: []
|
75
|
-
|
76
75
|
extensions: []
|
77
|
-
|
78
|
-
extra_rdoc_files:
|
76
|
+
extra_rdoc_files:
|
79
77
|
- README.md
|
80
78
|
- LICENSE
|
81
|
-
files:
|
79
|
+
files:
|
82
80
|
- .gitignore
|
83
81
|
- .rspec
|
84
82
|
- .rvmrc
|
@@ -145,30 +143,28 @@ files:
|
|
145
143
|
has_rdoc: true
|
146
144
|
homepage: http://github.com/jfelchner/chicken_soup
|
147
145
|
licenses: []
|
148
|
-
|
149
146
|
post_install_message:
|
150
|
-
rdoc_options:
|
147
|
+
rdoc_options:
|
151
148
|
- --charset = UTF-8
|
152
|
-
require_paths:
|
149
|
+
require_paths:
|
153
150
|
- lib
|
154
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
152
|
none: false
|
156
|
-
requirements:
|
157
|
-
- -
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version:
|
160
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
158
|
none: false
|
162
|
-
requirements:
|
163
|
-
- -
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version:
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
166
163
|
requirements: []
|
167
|
-
|
168
164
|
rubyforge_project: chicken_soup
|
169
165
|
rubygems_version: 1.6.2
|
170
166
|
signing_key:
|
171
167
|
specification_version: 3
|
172
|
-
summary:
|
173
|
-
test_files:
|
168
|
+
summary: ! '...for the Deployment Soul.'
|
169
|
+
test_files:
|
174
170
|
- spec/support/focused.rb
|