easy-deployment 0.4.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md ADDED
@@ -0,0 +1,76 @@
1
+ # Changelog for easy-deployment
2
+
3
+ ## 0.5.0 (unreleased)
4
+
5
+ Large rewrite of both templates, and generator code.
6
+
7
+ Major new feature is generation of backup config using the gems `whenever` and `backup`
8
+
9
+ Enhancements:
10
+
11
+ * Now fixed to capistrano 2.13.5 - dependencies on external capistrano-ext and capistrano_colors are removed.
12
+ * Added annotation task to write branch name, git revision, time of deploy, and user to the application root as version.txt
13
+ * Removed messy optparse code, and let Thor handle option parsing
14
+ * `deploy.rb` template now displays all feature modules, with some optional ones commented out
15
+ * `deploy.rb` template is now updated with current deployment practices (including newrelic and bugsnag services)
16
+ * Added generator to create backup configuration - for scheduling cron jobs to backup application data to S3
17
+
18
+ Bug Fixes:
19
+
20
+ * `deploy.rb` and `staging.rb` etc files are rendered correctly as templates, instead of copied over without rendering
21
+ * use `deploy:create_symlink` instead of deprecated `deploy:symlink`
22
+
23
+ ## 0.4.4 - 2013-01-11
24
+
25
+ Bug Fixes:
26
+
27
+ * Bugfix for previous niet role definition, variable should be delayed being evaluated
28
+
29
+ ## 0.4.3 - 2013-01-10
30
+
31
+ Enhancements:
32
+
33
+ * the server role for the niet tasks are now configurable via `set :niet_roles, [:job]`
34
+
35
+ ## 0.4.2 - 2013-01-09
36
+
37
+ Enhancements:
38
+
39
+ * path to the binary apachectl command is now able to be configured via `set :apachectl_bin`
40
+ * Added documentation to README.md for several of the optional features
41
+
42
+ ## 0.4.1 - 2012-12-10
43
+
44
+ Bug Fixes:
45
+
46
+ * raise exception if `cap niet:start` is run without `cap niet:setup` being run first
47
+
48
+ ## 0.4.0 - 2012-11-19
49
+
50
+ Enhancements:
51
+
52
+ * include capistrano_colors by default
53
+ * apache:configure task now copies a folder stage/apache/* if present falling back to previous state/apache.conf
54
+ * added `easy/deployment/performance` optional require to track the times of deployments
55
+
56
+ ## 0.3.3 - 2012-10-16
57
+
58
+ Bug Fixes
59
+
60
+ * `deploy:reference` should use the rails_env, not the stage
61
+
62
+ ## 0.3.0 - 2012-09-04
63
+
64
+ Enhancements:
65
+
66
+ * Add `apache:configure_and_reload` capistrano task, which will configure the site, test the configuration & gracefully reload the Apache configuration
67
+
68
+ ## 0.2.2 - 2012-08-27
69
+
70
+ Enhancements:
71
+
72
+ * Add `apache:configtest` capistrano task
73
+
74
+ Bug Fixes:
75
+
76
+ * Spelling corrections
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Easy::Deployment
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/easy-deployment.png)](http://badge.fury.io/rb/easy-deployment)
4
+ [![Dependency Status](https://gemnasium.com/AbleTech/easy-deployment.png)](https://gemnasium.com/AbleTech/easy-deployment)
5
+ [![Code Climate](https://codeclimate.com/github/AbleTech/easy-deployment.png)](https://codeclimate.com/github/AbleTech/easy-deployment)
6
+
3
7
  This gem is for encapsulating Abletech's common deployment patterns using capistrano.
4
8
 
5
9
  ## Installation
@@ -22,6 +26,9 @@ Run:
22
26
 
23
27
  $ rails g easy:deployment
24
28
 
29
+ The templated configuration files leave several lines blank for you to fill in with TODO placeholders, so it's a good idea to run `rake notes:todo` after installation to see if you've missed any.
30
+ Replace any missing configuration lines, and don't forget to remove the TODO text/comments
31
+
25
32
  ## Integration
26
33
 
27
34
  ### Apache
@@ -41,7 +48,11 @@ If necessary, you can set the path to the apache2ctl binary via:
41
48
 
42
49
  set :apachectl_bin, "/usr/sbin/apachectl"
43
50
 
44
- This assumes your deploy user has access to run the apachectl command with sudo privileges
51
+ This assumes your deploy user has access to run the apachectl command with sudo privileges. As a recommended security practice, your deploy user should not have general sudo access, instead configure limited sudo access for specific commands only, declaring the full binary path
52
+
53
+ # Example sudoers file entries to grant deploy user passwordless sudo privileges to only these commands
54
+ deploy ALL=(ALL) NOPASSWD:/usr/sbin/apachectl graceful
55
+ deploy ALL=(ALL) NOPASSWD:/usr/sbin/apachectl configtest
45
56
 
46
57
  ### Logrotate
47
58
 
@@ -52,6 +63,20 @@ If you have logrotate installed and /etc/logrotate.d is writable by your deploy
52
63
 
53
64
  within your deploy.rb to have a logrotate config automatically written
54
65
 
66
+ ### Backup
67
+
68
+ This includes a generator to create a backup configuration (generator may be disabled when running easy:deployment by passing `--disable-backup`, or run by itself as `rails generate easy:backup`)
69
+
70
+ This will generate:
71
+
72
+ config/backup.rb
73
+ config/schedule.rb
74
+ config/s3.yml
75
+
76
+ The created backup configuration will be scheduled on deploy to run nightly via the whenever integration below, and with a backup configuration at `config/backup.rb`
77
+ The default setup is to backup the capistrano system folder, the configured database, to store the backup in S3, and notify of failures via email.
78
+ All these settings are configurable, to read more see the documentation for the backup gem https://github.com/meskyanichi/backup and setup your configuration to suit yourself.
79
+
55
80
  ### Whenever
56
81
 
57
82
  If you use the whenever gem to manage application crontabs, automatically include the capistrano
@@ -16,9 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.version = Easy::Deployment::VERSION
17
17
 
18
18
  gem.add_runtime_dependency 'rails', '>= 3.0.0'
19
- gem.add_runtime_dependency 'capistrano'
20
- gem.add_runtime_dependency 'capistrano-ext'
21
- gem.add_runtime_dependency 'capistrano_colors'
19
+ gem.add_runtime_dependency 'capistrano', '~> 2.13.5'
22
20
 
23
21
  gem.add_development_dependency 'bundler'
24
22
  gem.add_development_dependency 'rspec', '~> 2.0'
@@ -1,3 +1,5 @@
1
1
  require "easy-deployment/version"
2
+ require "easy/generators/generator_helpers"
2
3
  require 'easy/generators/deployment_generator'
3
4
  require 'easy/generators/stage_generator'
5
+ require 'easy/generators/backup_generator'
@@ -1,5 +1,5 @@
1
1
  module Easy
2
2
  module Deployment
3
- VERSION = "0.4.4"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
@@ -6,14 +6,8 @@ Capistrano::Configuration.instance(:must_exist).load do
6
6
  task :setup, :except => { :no_release => true } do
7
7
  run "mkdir -p #{shared_path}/backup/data"
8
8
  end
9
-
10
- desc "Adds a symbolic link from the s3.yml file in the shared/backup into the current/config folder"
11
- task :symlink_s3_config do
12
- run "ln -sf #{shared_path}/backup/s3.yml #{current_path}/config/s3.yml"
13
- end
14
9
  end
15
10
  end
16
11
 
17
12
  after 'deploy:setup', 'easy:backup:setup'
18
- after 'deploy:symlink', 'easy:backup:symlink_s3_config'
19
13
  end
@@ -2,7 +2,6 @@
2
2
  # To load this capistrano configuraiton, require 'easy/deployment/capistrano' from deploy.rb
3
3
 
4
4
  Capistrano::Configuration.instance(:must_exist).load do
5
- require 'capistrano_colors'
6
5
 
7
6
  # color the string
8
7
  def red(str)
@@ -72,4 +71,14 @@ Capistrano::Configuration.instance(:must_exist).load do
72
71
  system "git push origin #{branch}:releases/#{stage}"
73
72
  end
74
73
 
74
+ desc "Annotate release into version.txt"
75
+ task :annotate_release do
76
+ git_revision = `git rev-parse #{branch} 2> /dev/null`.strip
77
+ version_info = "Branch/Tag: #{branch}\\nRevision: #{git_revision}\\nDeployed To: #{stage}\\n\\nDeployed At: #{Time.now}\\nBy: #{`whoami`.chomp}\\n"
78
+ run %Q(printf "#{version_info}" > #{release_path}/version.txt)
79
+ end
80
+
81
+ after "deploy:update", "tag_release"
82
+ after "deploy:update", "annotate_release"
83
+
75
84
  end
@@ -17,6 +17,6 @@ Capistrano::Configuration.instance(:must_exist).load do
17
17
  end
18
18
 
19
19
  after "deploy:update_code", "easy:whenever:clear_crontab"
20
- after "deploy:symlink", "easy:whenever:update_crontab"
20
+ after "deploy:create_symlink", "easy:whenever:update_crontab"
21
21
  after "deploy:rollback", "easy:whenever:update_crontab"
22
22
  end
@@ -0,0 +1,46 @@
1
+ require 'rails/generators'
2
+
3
+ module Easy
4
+ class BackupGenerator < Rails::Generators::Base
5
+ source_root File.join(File.dirname(__FILE__), "templates") # Where templates are copied from
6
+
7
+ include GeneratorHelpers
8
+
9
+ desc %{Generates a backup config set to run nightly and upload to S3}
10
+
11
+ def create_backup_files
12
+ gem_group(:backup) do
13
+ gem "whenever", :require => false
14
+ case Rails::VERSION::MAJOR
15
+ when 3
16
+ gem "backup", "~> 3.0.27", :require => false
17
+ gem "fog", "~> 1.4.0", :require => false
18
+ gem "mail", "~> 2.4.0", :require => false
19
+ when 4
20
+ gem "backup", "~> 3.1.3", :require => false
21
+ gem "fog", "~> 1.9.0", :require => false
22
+ gem "net-ssh", "<= 2.5.2", :require => false # Greater than >= 2.3.0 as well, though we can't express that
23
+ gem "net-scp", "<= 1.0.4", :require => false # Greater than 1.0.0
24
+ gem "excon", "~> 0.17.0", :require => false
25
+ gem "mail", "~> 2.5.0", :require => false
26
+ else
27
+ warn "Unsupported rails release detected. You'll need to manage your own dependencies for the backup gem"
28
+ gem "backup", :require => false
29
+ end
30
+ end
31
+
32
+ template("backup.rb.tt", "config/backup.rb")
33
+ template("schedule.rb.tt", "config/schedule.rb")
34
+ copy_file("s3.yml", "config/s3.yml")
35
+
36
+ run("bundle install")
37
+
38
+ say("Backup configuration generated", :green)
39
+ say(" - TODO: edit config/backup.rb setting notification addresses and other configuration options", :green)
40
+ say(" - TODO: ensure your S3 keys are set in config/s3.yml", :green)
41
+
42
+ true
43
+ end
44
+
45
+ end
46
+ end
@@ -1,56 +1,61 @@
1
1
  require 'rails/generators'
2
- require 'optparse'
3
2
 
4
3
  module Easy
5
4
  class DeploymentGenerator < Rails::Generators::Base
6
5
  source_root File.join(File.dirname(__FILE__), "templates") # Where templates are copied from
7
6
 
8
- def application_name
9
- Rails.application.class.name.split("::").first.underscore # surely there's a better way than this
10
- end
7
+ include GeneratorHelpers
8
+
9
+ INSTALL_MSG = %{
10
+ Easy Deployment Config now setup!
11
+
12
+ TODO:
13
+ * Set the correct git repository in config/deploy.rb
14
+ * Edit Capfile and enable asset pipeline compilation if you are using it (uncomment load 'deploy/assets')
15
+ }
11
16
 
12
17
  desc %{Generates standard able technology deployment script using capistrano}
13
18
 
14
- def create_deployment_files
15
- options = parse_options(ARGV)
19
+ class_option :stages, :type => :array, :default => ['staging', 'production'], :aliases => :s
20
+ class_option :disable_backup, :type => :boolean, :default => false
21
+ class_option :disable_bugsnag, :type => :boolean, :default => false
22
+ class_option :disable_newrelic, :type => :boolean, :default => false
16
23
 
17
- # If there was a deploy.rb initially, let the generator prompt to handle conflicts. Otherwise remove the default capistrano one, so we can override it silently with our template without being prompted
18
- deploy_file_already_existed = File.exist?(File.join(destination_root, "config", "deploy.rb"))
24
+ def create_deployment_files
25
+ template("deploy.rb.tt", "config/deploy.rb") # Generate deploy.rb first to use ours not capistrano's deploy.rb
19
26
  capify!
20
- remove_file("config/deploy.rb") unless deploy_file_already_existed # Removing this means we aren't prompted to overwrite if we only have the default capistrano deploy.rb
21
- # Write our default deploy.rb
22
- copy_file("deploy.rb.tt", "config/deploy.rb")
23
27
 
24
28
  # Generate all stages specified
25
- options[:stages] ||= %w(staging production)
26
29
  options[:stages].each do |stage|
27
30
  generate("easy:stage", stage)
28
31
  end
29
32
 
30
- info = %{
31
- Easy Deployment Config now setup!
32
-
33
- TODO:
34
- * Set the correct git repository in config/deploy.rb
35
- }
33
+ say(INSTALL_MSG, :green)
36
34
  options[:stages].each do |stage|
37
- info += " * Set the ip address for staging in config/deploy/#{stage}.rb && the apache config in config/deploy/#{stage}/apache/#{application_name}"
35
+ say(" * Set the ip address for staging in config/deploy/#{stage}.rb && the apache config in config/deploy/#{stage}/apache.conf", :green)
38
36
  end
39
- puts info
40
- true
41
- end
42
37
 
43
- private
44
-
45
- # TODO: surely there's a better option parser built into thor, or the generators themselves?
46
- def parse_options(args)
47
- opts = {}
48
- OptionParser.new do |opt|
49
- opt.on("-s", "--stages" "Stages to generate") do |s|
50
- opts[:stages] = s.split(",") if s.present?
51
- end
52
- end.parse(args)
53
- opts
38
+ needs_bundle = false
39
+
40
+ unless options[:disable_newrelic]
41
+ say_status(:configure, "New Relic gem")
42
+ gem("newrelic_rpm", ">= 3.5.3.25")
43
+ needs_bundle = true
44
+ end
45
+ unless options[:disable_bugsnag]
46
+ say_status(:configure, "bugsnag")
47
+ gem("bugsnag")
48
+ needs_bundle = true
49
+ end
50
+
51
+ unless options[:disable_backup]
52
+ generate("easy:backup")
53
+ needs_bundle = false # because easy:backup runs bundle install
54
+ end
55
+
56
+ bundle_command(:install) if needs_bundle
57
+
58
+ true
54
59
  end
55
60
 
56
61
  end
@@ -0,0 +1,15 @@
1
+ module GeneratorHelpers
2
+
3
+ def application_name
4
+ Rails.application.class.name.split("::").first.underscore # surely there's a better way than this
5
+ end
6
+
7
+ private
8
+
9
+ def bundle_command(command)
10
+ # say_status :run, "bundle #{command}"
11
+ # print `"#{Gem.ruby}" -rubygems "#{Gem.bin_path('bundler', 'bundle')}" #{command}`
12
+ run("bundle #{command}")
13
+ end
14
+
15
+ end
@@ -8,13 +8,14 @@ module Easy
8
8
 
9
9
  def generate_stage
10
10
  directory("stage", "config/deploy/#{name}")
11
- copy_file("stage.rb.tt", "config/deploy/#{name}.rb")
11
+ template("stage.rb.tt", "config/deploy/#{name}.rb")
12
+ template("stage/apache.conf.tt", "config/deploy/#{name}/apache.conf")
12
13
 
13
14
  # Ensure we have a config/environments/<env-name>.rb
14
15
  dest = "config/environments/#{name}.rb"
15
16
  in_root do
16
17
  unless File.exist?(dest)
17
- run("cp config/environments/production.rb #{dest}")
18
+ run("cp config/environments/staging.rb #{dest}")
18
19
  end
19
20
  end
20
21
  end
@@ -0,0 +1,58 @@
1
+ Backup::Model.new("<%= application_name %>", "Remote Backup") do
2
+
3
+ # This is the rails root location, given this file is located at in Rails.root/config/backup.rb
4
+ rails_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
5
+
6
+ <%
7
+ database_engine = "'TODO: FILL IN'"
8
+ database_config_filename = "database.yml"
9
+ if defined?(PG)
10
+ database_engine = 'PostgreSQL'
11
+ elsif defined?(Mongo)
12
+ database_engine = 'MongoDB'
13
+ database_config_filename = "mongo.yml"
14
+ end
15
+ %>
16
+ database_config = YAML.load_file(File.join(rails_root, "config/<%= database_config_filename %>"))
17
+
18
+ database <%= database_engine %> do |db|
19
+ db.name = database_config["database"]
20
+ db.host = database_config["host"] if database_config["host"]
21
+ db.port = database_config["port"] if database_config["port"]
22
+ db.username = database_config["username"] if database_config["username"]
23
+ db.password = database_config["password"] if database_config["password"]
24
+ db.additional_options = []
25
+ end
26
+
27
+ archive :system_folder_backup do |archive|
28
+ # add folders (including sub-folders)
29
+ folder = File.expand_path("#{rails_root}/../shared/system/")
30
+ archive.add(folder)
31
+ end
32
+
33
+
34
+ s3config = YAML.load_file(File.join(rails_root, "config/s3.yml"))
35
+
36
+ store_with S3 do |s3|
37
+ s3.access_key_id = s3config['access_key_id']
38
+ s3.secret_access_key = s3config['secret_access_key']
39
+ s3.region = s3config['region']
40
+ s3.bucket = s3config['backup_bucket']
41
+ s3.path = "/<%= application_name %>/#{ENV['RAILS_ENV']}/"
42
+ # s3.keep = 30 # Enable this if you have read/delete access on S3 to clean up old backups
43
+ end
44
+
45
+ compress_with Bzip2 do |compression|
46
+ compression.level = 9
47
+ end
48
+
49
+ notify_by Mail do |mail|
50
+ mail.on_success = false
51
+ mail.on_warning = true
52
+ mail.on_failure = true
53
+
54
+ mail.delivery_method = :sendmail
55
+ mail.from = 'TODO: set from address'
56
+ mail.to = 'TODO: set delivery address'
57
+ end
58
+ end
@@ -1,24 +1,52 @@
1
- require "capistrano/ext/multistage"
2
- require "capistrano_colors"
3
- require "bundler/capistrano"
4
1
  begin
2
+ require "capistrano/ext/multistage"
3
+ require "bundler/capistrano"
5
4
  require "easy/deployment/capistrano"
6
- rescue LoadError
7
- $stderr.puts "couldn't load easy-deployment gem, try `bundle install` and running again with `bundle exec cap <stage> deploy`"
5
+ rescue LoadError => e
6
+ $stderr.puts "couldn't load deployment gems, try `bundle install` and running again with `bundle exec cap <stage> deploy`"
7
+ $stderr.puts e.message
8
8
  exit(1)
9
9
  end
10
10
 
11
+ # Deployment tools
12
+ <% unless options[:disable_bugsnag] %>require "bugsnag/capistrano"<% end %>
13
+ <% unless options[:disable_newrelic] %>require "new_relic/recipes"
14
+ after "deploy:update", "newrelic:notice_deployment"
15
+ <% end %><% unless options[:disable_backup] %># Backup
16
+ require "easy/deployment/backup"
17
+ require "whenever/capistrano"
18
+ set :whenever_command, "#{fetch(:bundle_cmd, "bundle")} exec whenever"
19
+ <% end %>
20
+
11
21
  set :stages, %w(staging production)
12
22
  set :default_stage, "staging"
13
23
 
14
- set :application, "<%= application_name %>" # TODO: edit application name
24
+ set :application, "<%= application_name %>"
15
25
  set :deploy_to, "/var/apps/#{application}"
16
26
 
17
- # TODO: fill in git repo
18
- # set :repository, "git@github.com:AbleTech/easy-deployment.git"
27
+ # set :repository, "git@github.com:AbleTech/easy-deployment.git" # TODO: fill in git repo
19
28
  set :scm, :git
20
29
  set :deploy_via, :remote_cache
21
30
  set :git_shallow_clone, 1
31
+ # easy-deployment sets the branch to deploy to the current local branch by default.
32
+
33
+ set :bundle_without, defer { fetch(:stages) - [fetch(:stage)] } # Bundle without other stage environments
34
+
35
+ set :user, "deploy"
36
+ set :runner, "deploy"
37
+
38
+ # Optional feature: apache restarts
39
+ # require "easy/deployment/apache"
40
+ # set :apachectl_bin, "/usr/sbin/apachectl"
41
+
42
+ # Optional feature: configure log rotation
43
+ # require "easy/deployment/logrotate"
44
+
45
+ # Optional feature: db reference data. Requires easy-reference gem
46
+ # require "easy/deployment/dbreference"
47
+
48
+ # Optional feature: capistrano performance report. Timings for slow deploys
49
+ # require "easy/deployment/performance"
22
50
 
23
51
 
24
52
  # If deploying with RVM:
@@ -0,0 +1,5 @@
1
+ ---
2
+ access_key_id : "TODO: fill in your access key"
3
+ secret_access_key: "TODO: fill in your secret here"
4
+ backup_bucket : "TODO: fill in your backup bucket"
5
+ region : "us-east-1"
@@ -0,0 +1,36 @@
1
+ # Use this file to easily define all of your cron jobs.
2
+ #
3
+ # It's helpful, but not entirely necessary to understand cron before proceeding.
4
+ # http://en.wikipedia.org/wiki/Cron
5
+
6
+ # Example:
7
+ #
8
+ # set :output, "/path/to/my/cron_log.log"
9
+ #
10
+ # every 2.hours do
11
+ # command "/usr/bin/some_great_command"
12
+ # runner "MyModel.some_method"
13
+ # rake "some:great:rake:task"
14
+ # end
15
+ #
16
+ # every 4.days do
17
+ # runner "AnotherModel.prune_old_records"
18
+ # end
19
+
20
+ # Learn more: http://github.com/javan/whenever
21
+
22
+ set :output, "log/cron.log"
23
+
24
+
25
+ set :application, "<%= application_name %>"
26
+ set :base_path, "/var/apps/#{application}"
27
+ set :current_path, "#{base_path}/current"
28
+ set :shared_path, "#{base_path}/shared"
29
+
30
+ set :output, "#{shared_path}/log/cron.log"
31
+ set :bundle_cmd, "bundle"
32
+
33
+ # Note: doublecheck timezone of your destination server
34
+ every 1.day, :at => '3:00 am' do
35
+ command "cd #{current_path} && RAILS_ENV=#{environment} #{bundle_cmd} exec backup perform --trigger #{application} --config-file #{current_path}/config/backup.rb --data-path #{shared_path}/backup/data"
36
+ end
@@ -1,6 +1,4 @@
1
- # role :web, "<<%= name %>-ip-address>" # Your HTTP server, Apache/etc
2
- # role :app, "<<%= name %>-ip-address>" # This may be the same as your `Web` server
3
- # role :db, "<<%= name %>-ip-address>", :primary => true # This is where Rails migrations will run
1
+ server '<<%= name %>-ip-address>', :web, :app, :db, :primary => true
2
+ # :db, :primary => true is where migrations will run.
4
3
 
5
- set :branch, "master"
6
4
  set :rails_env, "<%= name %>"
@@ -1,4 +1,4 @@
1
- <VirtualHost <<%= name %>-ip-address>:80>
1
+ <VirtualHost *:80>
2
2
  ServerName <%= name %>.<%= application_name %>.co.nz
3
3
 
4
4
  DocumentRoot /var/apps/<%= application_name %>/current/public
@@ -0,0 +1,8 @@
1
+ /var/apps/<%= application_name %>/shared/log/*.log {
2
+ daily
3
+ missingok
4
+ rotate 7
5
+ compress
6
+ delaycompress
7
+ copytruncate
8
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy-deployment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-01-11 00:00:00.000000000 Z
15
+ date: 2013-04-05 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
@@ -35,49 +35,17 @@ dependencies:
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  none: false
37
37
  requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- type: :runtime
42
- prerelease: false
43
- version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
- requirements:
46
- - - ! '>='
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- - !ruby/object:Gem::Dependency
50
- name: capistrano-ext
51
- requirement: !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '0'
57
- type: :runtime
58
- prerelease: false
59
- version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
- requirements:
62
- - - ! '>='
63
- - !ruby/object:Gem::Version
64
- version: '0'
65
- - !ruby/object:Gem::Dependency
66
- name: capistrano_colors
67
- requirement: !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ! '>='
38
+ - - ~>
71
39
  - !ruby/object:Gem::Version
72
- version: '0'
40
+ version: 2.13.5
73
41
  type: :runtime
74
42
  prerelease: false
75
43
  version_requirements: !ruby/object:Gem::Requirement
76
44
  none: false
77
45
  requirements:
78
- - - ! '>='
46
+ - - ~>
79
47
  - !ruby/object:Gem::Version
80
- version: '0'
48
+ version: 2.13.5
81
49
  - !ruby/object:Gem::Dependency
82
50
  name: bundler
83
51
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +90,7 @@ extra_rdoc_files: []
122
90
  files:
123
91
  - .gitignore
124
92
  - .rspec
125
- - ChangeLog
93
+ - CHANGELOG.md
126
94
  - Gemfile
127
95
  - LICENSE
128
96
  - README.md
@@ -139,12 +107,17 @@ files:
139
107
  - lib/easy/deployment/niet.rb
140
108
  - lib/easy/deployment/performance.rb
141
109
  - lib/easy/deployment/whenever.rb
110
+ - lib/easy/generators/backup_generator.rb
142
111
  - lib/easy/generators/deployment_generator.rb
143
- - lib/easy/generators/logrotate_generator.rb
112
+ - lib/easy/generators/generator_helpers.rb
144
113
  - lib/easy/generators/stage_generator.rb
114
+ - lib/easy/generators/templates/backup.rb.tt
145
115
  - lib/easy/generators/templates/deploy.rb.tt
116
+ - lib/easy/generators/templates/s3.yml
117
+ - lib/easy/generators/templates/schedule.rb.tt
146
118
  - lib/easy/generators/templates/stage.rb.tt
147
- - lib/easy/generators/templates/stage/apache/%application_name%.tt
119
+ - lib/easy/generators/templates/stage/apache.conf.tt
120
+ - lib/easy/generators/templates/stage/logrotate.conf.tt
148
121
  - spec/easy_deployment_spec.rb
149
122
  - spec/spec_helper.rb
150
123
  homepage: https://github.com/AbleTech/easy-deployment
@@ -159,21 +132,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
159
132
  - - ! '>='
160
133
  - !ruby/object:Gem::Version
161
134
  version: '0'
162
- segments:
163
- - 0
164
- hash: -2565784837031824026
165
135
  required_rubygems_version: !ruby/object:Gem::Requirement
166
136
  none: false
167
137
  requirements:
168
138
  - - ! '>='
169
139
  - !ruby/object:Gem::Version
170
140
  version: '0'
171
- segments:
172
- - 0
173
- hash: -2565784837031824026
174
141
  requirements: []
175
142
  rubyforge_project:
176
- rubygems_version: 1.8.24
143
+ rubygems_version: 1.8.23
177
144
  signing_key:
178
145
  specification_version: 3
179
146
  summary: Gem for encapsulating Abletech's deployment practices
data/ChangeLog DELETED
@@ -1,25 +0,0 @@
1
- 0.3.3 - 2012-10-16
2
-
3
- Bug Fixes
4
-
5
- * deploy:reference should use the rails_env, not the stage
6
-
7
- 0.3.0 - 2012-09-04
8
-
9
- Enhancements:
10
-
11
- * Add apache:configure_and_reload capistrano task, which will configure the site, test the configuration & gracefully reload the Apache configuration
12
-
13
- cap apache:configure_and_reload
14
-
15
- 0.2.2 - 2012-08-27
16
-
17
- Enhancements:
18
-
19
- * Add apache:configtest capistrano task
20
-
21
- cap apache:configtest
22
-
23
- Bug Fixes:
24
-
25
- * Spelling corrections
@@ -1,21 +0,0 @@
1
- require 'rails/generators'
2
-
3
- module Easy
4
- class LogrotateGenerator < Rails::Generators::NamedBase
5
- source_root File.join(File.dirname(__FILE__), "templates") # Where templates are copied from
6
-
7
- desc %{Generate a new logrotate.conf file for the given environment name\ne.g. rails g easy:logrotate workshop}
8
-
9
- def generate_stage
10
- # directory("stage", "config/#{name}")
11
-
12
- # Ensure we have a config/deploy/<env-name>/logrotate.rb
13
- # dest = "config/deploy/#{name}/logrotate.conf"
14
- # in_root do
15
- # unless File.exist?(dest)
16
- # run("cp config/environments/production.rb #{dest}")
17
- # end
18
- # end
19
- end
20
- end
21
- end