chicken_soup 0.3.0 → 0.4.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/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 = "chicken_soup-#{ChickenSoup::VERSION}"
19
- s.description = %q[...for the Deployment Soul. Why do you keep typing all that crap into your Capistrano recipes? Are you too cool for standards? Well, ARE YA!?]
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
- passenger_friendly_error_messages = rails_env == :production ? "off" : "on"
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 #{deploy_site_name} *.#{deploy_site_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
- root #{deploy_to}/current/public;
36
-
37
- client_max_body_size 3M;
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
- error_page 500 501 504 505 506 507 508 509 /500.html;
43
- error_page 400 401 403 404 405 406 407 409 410 413 415 416 417 /404.html;
44
- error_page 422 444 /422.html;
45
- error_page 502 503 /public/maintenance.html;
60
+ ###
61
+ # Handle Errors
62
+ #
63
+ recursive_error_pages on;
46
64
 
47
- location / {
48
- try_files /system/maintenance.html $request_uri;
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 #{deploy_site_name} *.#{deploy_site_name};
83
+ server_name .#{deploy_site_name};
55
84
 
56
- location / {
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, :except => { :no_release => true } do
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, :except => { :no_release => true } do
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, :except => { :no_release => true } do
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
- :web_server_name,
25
- :app_server_name,
26
- :db_server_name
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(:app_server_name) { default_server_name }
27
- _cset(:web_server_name) { default_server_name }
28
- _cset(:db_server_name) { default_server_name }
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, web_server_name, :primary => true
39
- role :app, app_server_name, :primary => true
40
- role :db, db_server_name, :primary => true
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 => "600")
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 => "600")
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
@@ -1,3 +1,3 @@
1
1
  module ChickenSoup
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- version_requirements: *id005
72
- description: ...for the Deployment Soul. Why do you keep typing all that crap into your Capistrano recipes? Are you too cool for standards? Well, ARE YA!?
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: "0"
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: "0"
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: chicken_soup-0.3.0
173
- test_files:
168
+ summary: ! '...for the Deployment Soul.'
169
+ test_files:
174
170
  - spec/support/focused.rb