bc-cap-recipes 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest ADDED
@@ -0,0 +1,7 @@
1
+ Manifest
2
+ README
3
+ VERSION
4
+ cap-recipes.gemspec
5
+ lib/apache.rb
6
+ lib/base.rb
7
+ lib/cap-recipes.rb
data/README ADDED
@@ -0,0 +1,45 @@
1
+ Provides common tasks and environment to deploy Byclosure apps
2
+
3
+ documented as of 2010-01-20
4
+
5
+ == generate the gem ==
6
+
7
+ gem build bc-cap-recipes.gemspec
8
+
9
+ == get the gem from gemcutter ==
10
+
11
+ sudo gem install bc-cap-recipes
12
+
13
+ == sample minimal config.rb using this ==
14
+
15
+ set :application, "foobar"
16
+
17
+ require 'bc-cap-recipes'
18
+
19
+ case rails_env
20
+ when :production
21
+ set :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/trunk/#{application}"
22
+ when :staging
23
+ set :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/trunk/#{application}"
24
+ else
25
+ puts "Unknown deploy environment: '#{rails_env}'"
26
+ return
27
+ end
28
+
29
+ == base.rb ==
30
+
31
+ sets up environment (user, server) for staging / production. Does not set repository
32
+
33
+ cap deploy:start # passenger version
34
+ cap deploy:restart # passenger version
35
+ cap deploy:cleanup # overridden to not use sudo
36
+ cap deploy:clear_cached_copy # useful when scm path changes
37
+
38
+ == apache.rb ==
39
+
40
+ cap apache:bootstrap # Create virtual host configuration file
41
+ cap apache:disable_site # disables site
42
+ cap apache:enable_site # Enables site
43
+ cap apache:reload # Reloads apache
44
+ cap apache:setup # Setup apache on server to support the new site
45
+
@@ -0,0 +1,29 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{bc-cap-recipes}
3
+ s.version = `cat VERSION`
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Byclosure"]
7
+ s.date = %q{2010-01-19}
8
+ s.description = %q{Common capistrano tasks}
9
+ s.email = %q{info@byclosure.com}
10
+ #s.extra_rdoc_files = ["README.rdoc", "lib/uniquify.rb"]
11
+ s.files = ["Manifest", "README", "lib/base.rb", "lib/apache.rb", "lib/bc-cap-recipes.rb", "bc-cap-recipes.gemspec"]
12
+ s.has_rdoc = false
13
+ s.homepage = %q{http://byclosure.com}
14
+ #s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Uniquify", "--main", "README.rdoc"]
15
+ s.require_paths = ["lib"]
16
+ #s.rubyforge_project = %q{}
17
+ s.rubygems_version = %q{1.3.4}
18
+ s.summary = %q{Common capistrano tasks}
19
+
20
+ if s.respond_to? :specification_version then
21
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
22
+ s.specification_version = 3
23
+
24
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
25
+ else
26
+ end
27
+ else
28
+ end
29
+ end
data/lib/apache.rb ADDED
@@ -0,0 +1,33 @@
1
+ configuration = Capistrano::Configuration.respond_to?(:instance) ?
2
+ Capistrano::Configuration.instance(:must_exist) :
3
+ Capistrano.configuration(:must_exist)
4
+
5
+ configuration.load do
6
+ namespace :apache do
7
+ desc "Create virtual host configuration file"
8
+ task :bootstrap do
9
+ sudo "[ -f /etc/apache2/sites-available/#{application} ] || echo -e \"<VirtualHost *:80>\n ServerName #{application}.byclosure.com\n DocumentRoot #{deploy_to}/current/public\n</VirtualHost>\" > /etc/apache2/sites-available/#{application}"
10
+ end
11
+
12
+ desc "Enables site"
13
+ task :enable_site do
14
+ sudo "a2ensite #{application}"
15
+ end
16
+
17
+ desc "disables site"
18
+ task :disable_site do
19
+ sudo "a2dissite #{application}"
20
+ end
21
+
22
+ desc "Reloads apache"
23
+ task :reload do
24
+ sudo "/etc/init.d/apache2 reload"
25
+ end
26
+
27
+ desc "Setup apache on server to support the new site"
28
+ task :setup do ; end
29
+ after 'apache:setup', 'apache:bootstrap', 'apache:enable_site', 'apache:reload'
30
+ end
31
+ after 'deploy:setup', 'apache:setup'
32
+ end
33
+
data/lib/base.rb ADDED
@@ -0,0 +1,72 @@
1
+ configuration = Capistrano::Configuration.respond_to?(:instance) ?
2
+ Capistrano::Configuration.instance(:must_exist) :
3
+ Capistrano.configuration(:must_exist)
4
+
5
+ configuration.load do
6
+ _cset :rails_env, (ENV["DEPLOY_ENV"].nil? || ENV["DEPLOY_ENV"] == "") ? :staging : ENV["DEPLOY_ENV"].to_sym
7
+
8
+ case rails_env
9
+ when :production
10
+ _cset :user, "deploy"
11
+ _cset :runner, "deploy"
12
+ server "cullion.vps.byclosure.com", :app, :web
13
+ role :db, "cullion.vps.byclosure.com", :primary => true
14
+ #_cset :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/branches/#{application}/production"
15
+ when :staging
16
+ _cset :user, "deploy"
17
+ _cset :runner, "deploy"
18
+ server "erestor.vps.byclosure.com", :app, :web
19
+ role :db, "erestor.vps.byclosure.com", :primary => true
20
+ #_cset :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/trunk/#{application}"
21
+ end
22
+
23
+ _cset :deploy_to, "/var/www/#{application}"
24
+ _cset :deploy_via, :remote_cache
25
+ _cset :keep_releases, 4
26
+
27
+ namespace :deploy do
28
+
29
+ [:start, :restart].each do |t|
30
+ desc "restarts application" # there's no start with passenger
31
+ task t do
32
+ run "touch #{current_path}/tmp/restart.txt"
33
+ end
34
+ end
35
+
36
+ # redefined to not use sudo
37
+ desc <<-DESC
38
+ Clean up old releases. By default, the last 5 releases are kept on each server (though you can change this with the keep_releases variable). All other deployed revisions are removed from the servers. By default, this will use sudo to clean up the old releases, but if sudo is not available for your environment, set the :use_sudo variable to false instead.
39
+ DESC
40
+ task :cleanup, :except => { :no_release => true } do
41
+ count = fetch(:keep_releases, 5).to_i
42
+ if count >= releases.length
43
+ logger.important "no old releases to clean up"
44
+ else
45
+ logger.info "keeping #{count} of #{releases.length} deployed releases"
46
+
47
+ directories = (releases - releases.last(count)).map { |release|
48
+ File.join(releases_path, release) }.join(" ")
49
+
50
+ run "rm -rf #{directories}" #try_sudo "rm -rf #{directories}" # byclosure: no need for sudo
51
+ end
52
+ end
53
+
54
+ desc "Clears the cached copy: useful for changes of branches"
55
+ task :clear_cached_copy do
56
+ run "rm -rf #{shared_path}/cached-copy"
57
+ end
58
+
59
+ task :set_environment do
60
+ run %(sed -e '1 i ENV["RAILS_ENV"] = "#{rails_env}"' -i.bak #{release_path}/config/environment.rb)
61
+ end
62
+
63
+ task :mkdirs do
64
+ run "mkdir -p /var/www/#{application}"
65
+ sudo "chown -R root:#{user} /var/www/#{application}"
66
+ sudo "chmod -R g+w /var/www/#{application}"
67
+ end
68
+ end
69
+ after "deploy", "deploy:cleanup"
70
+ after 'deploy:setup', 'deploy:mkdirs'
71
+ after 'deploy:update_code', 'deploy:set_environment' if rails_env != :production
72
+ end
@@ -0,0 +1,8 @@
1
+ def _cset(name, *args, &block)
2
+ unless exists?(name)
3
+ set(name, *args, &block)
4
+ end
5
+ end
6
+
7
+ require "base"
8
+ require "apache"
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bc-cap-recipes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Byclosure
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-19 00:00:00 +00:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Common capistrano tasks
17
+ email: info@byclosure.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - Manifest
26
+ - README
27
+ - lib/base.rb
28
+ - lib/apache.rb
29
+ - lib/bc-cap-recipes.rb
30
+ - bc-cap-recipes.gemspec
31
+ has_rdoc: false
32
+ homepage: http://byclosure.com
33
+ licenses: []
34
+
35
+ post_install_message:
36
+ rdoc_options: []
37
+
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ version:
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: "1.2"
51
+ version:
52
+ requirements: []
53
+
54
+ rubyforge_project:
55
+ rubygems_version: 1.3.2
56
+ signing_key:
57
+ specification_version: 3
58
+ summary: Common capistrano tasks
59
+ test_files: []
60
+