Skip to content

Instantly share code, notes, and snippets.

@mrinterweb
Created February 19, 2010 19:57
Show Gist options
  • Save mrinterweb/309134 to your computer and use it in GitHub Desktop.
Save mrinterweb/309134 to your computer and use it in GitHub Desktop.
updating names to be consistent with my other replacements
require "#{File.dirname(__FILE__)}/../../vendor/plugins/moonshine/lib/moonshine.rb"
class ApplicationManifest < Moonshine::Manifest::Rails
if deploy_stage == 'v1'
configure({
:application => 'v1.domainname.com',
:deploy_to => '/srv/v1.domainname',
:domain => 'v1.domainname.com',
:passenger => {
:pool_idle_time => 0
}
})
elsif deploy_stage == 'demo'
configure({
:application => 'demo.domainname.com',
:deploy_to => '/srv/demo.domainname',
:domain => 'demo.domainname.com'
})
elsif deploy_stage == 'v1-staging'
configure({
:application => 'v1-staging.domainname.com',
:deploy_to => '/srv/v1-staging.domainname',
:domain => 'v1-staging.domainname.com'
})
else
configure({
:application => 'dev.domainname.com',
:deploy_to => '/srv/dev.domainname',
:domain => 'dev.domainname.com'
})
end
recipe :default_stack
# Add your application's custom requirements here
def application_packages
package 'libmagickwand-dev', :ensure => :installed
package 'sqlite3', :ensure => :installed
package 'python-opencv', :ensure => :installed
package 'rabbitmq-server', :ensure => :installed
package 'pngcrush', :ensure => :installed
package 'monit', :ensure => :installed
package 'rsync', :ensure => :installed
# some_rake_task = "/usr/bin/rake -f #{configuration[:deploy_to]}/current/Rakefile custom:task RAILS_ENV=#{ENV['RAILS_ENV']}"
cron 'Run analytics from pinch media task at midnight',
:command => "/usr/bin/rake -f #{configuration[:deploy_to]}/current/Rakefile domain:analytics:createAndPopulate RAILS_ENV=#{ENV['RAILS_ENV']}",
:user => configuration[:user],
:minute => 0,
:hour => '*'
end
# The following line includes the 'application_packages' recipe defined above
recipe :application_packages
plugin :god
recipe :god
plugin :memcached
recipe :memcached
end
set :stages, %w(v1 demo v1-staging dev)
require 'capistrano/ext/multistage'
set :default_stage, "dev"
# Other unrelated settings omitted
server "dev.domainname.com", :app, :web, :db, :primary => true
## The important thing to note when looking at this dump is that it is trying to use /srv/dev.domainname instead of
## /srv/v1-staging.domainname when trying to deploy to v1-staging
➜ rails cap v1-staging deploy
triggering start callbacks for `v1-staging'
* executing `moonshine:configure'
* executing `v1-staging'
triggering start callbacks for `deploy'
* executing `moonshine:configure'
* executing `multistage:ensure'
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "svn info http://svn.somedomain.com/repos/release_name/rails/trunk/domainname --username myusername --password somepassword --no-auth-cache -rHEAD"
* executing "if [ -d /srv/dev.domainname/shared/cached-copy ]; then svn update -q --username myusername --password somepassword --no-auth-cache -r1399 /srv/dev.domainname/shared/cached-copy; else svn checkout -q --username myusername --password somepassword --no-auth-cache -r1399 http://svn.somedomain.com/repos/release_name/rails/trunk/domainname /srv/dev.domainname/shared/cached-copy; fi"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
copying the cached version to /srv/dev.domainname/releases/20100219195856
* executing "cp -RPp /srv/dev.domainname/shared/cached-copy /srv/dev.domainname/releases/20100219195856 && (echo 1399 > /srv/dev.domainname/releases/20100219195856/REVISION)"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing `deploy:finalize_update'
* executing "chmod -R g+w /srv/dev.domainname/releases/20100219195856"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "rm -rf /srv/dev.domainname/releases/20100219195856/log /srv/dev.domainname/releases/20100219195856/public/system /srv/dev.domainname/releases/20100219195856/tmp/pids &&\\\n mkdir -p /srv/dev.domainname/releases/20100219195856/public &&\\\n mkdir -p /srv/dev.domainname/releases/20100219195856/tmp &&\\\n ln -s /srv/dev.domainname/shared/log /srv/dev.domainname/releases/20100219195856/log &&\\\n ln -s /srv/dev.domainname/shared/system /srv/dev.domainname/releases/20100219195856/public/system &&\\\n ln -s /srv/dev.domainname/shared/pids /srv/dev.domainname/releases/20100219195856/tmp/pids"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "find /srv/dev.domainname/releases/20100219195856/public/images /srv/dev.domainname/releases/20100219195856/public/stylesheets /srv/dev.domainname/releases/20100219195856/public/javascripts -exec touch -t 201002191959.19 {} ';'; true"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
triggering after callbacks for `deploy:finalize_update'
* executing `local_config:upload'
* executing `local_config:symlink'
* executing `shared_config:symlink'
* executing `app:symlinks:update'
* executing "ln -nfs /srv/dev.domainname/shared/public/assets /srv/dev.domainname/releases/20100219195856/public/assets"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
triggering after callbacks for `deploy:update_code'
* executing "rm -rf /srv/dev.domainname/releases/20100219195856/tmp/analytics"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "ruby -e 'Dir.mkdir( File.join(\"/srv/dev.domainname/shared\", \"analytics\") ) unless Dir.new(\"/srv/dev.domainname/shared\").include?(\"analytics\")'"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "ln -s /srv/dev.domainname/shared/analytics /srv/dev.domainname/releases/20100219195856/tmp/analytics"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "rm -rf /srv/dev.domainname/releases/20100219195856/public/assets"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "ruby -e 'Dir.mkdir( File.join(\"/srv/dev.domainname/shared\", \"assets\") ) unless Dir.new(\"/srv/dev.domainname/shared\").include?(\"assets\")'"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "ln -s /srv/dev.domainname/shared/assets /srv/dev.domainname/releases/20100219195856/public/assets"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing "ln -nfs /srv/dev.domainname/releases/20100219195856/config/database.v1-staging.yml /srv/dev.domainname/releases/20100219195856/config/database.yml"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
* executing `deploy:symlink'
triggering before callbacks for `deploy:symlink'
* executing `moonshine:apply'
* executing "sudo -p 'sudo password: ' RAILS_ROOT=/srv/dev.domainname/releases/20100219195856 DEPLOY_STAGE=v1-staging RAILS_ENV=production shadow_puppet /srv/dev.domainname/releases/20100219195856/app/manifests/application_manifest.rb"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
** [out :: v1-staging.domainname.com] DEPRECATION WARNING: explicitly using plugins are now deprecated, as they are automatically loaded now. (called from /srv/dev.domainname/releases/20100219195856/app/manifests/application_manifest.rb:97)
** [out :: v1-staging.domainname.com] DEPRECATION WARNING: explicitly using plugins are now deprecated, as they are automatically loaded now. (called from /srv/dev.domainname/releases/20100219195856/app/manifests/application_manifest.rb:99)
** [out :: v1-staging.domainname.com] Uncaught exception
** [out :: v1-staging.domainname.com] NotImplementedError
** [out :: v1-staging.domainname.com]
** [out :: v1-staging.domainname.com]
** [out :: v1-staging.domainname.com] Moonshine::Manifest::Rails is currently only supported on Ubuntu 8.04
** [out :: v1-staging.domainname.com] or greater. If you'd like to see your favorite distro supported, fork
** [out :: v1-staging.domainname.com] Moonshine on GitHub!
** [out :: v1-staging.domainname.com] /srv/dev.domainname/releases/20100219195856/vendor/plugins/moonshine/lib/moonshine/manifest/rails.rb:13:in `validate_platform'
** [out :: v1-staging.domainname.com] /usr/lib/ruby/gems/1.8/gems/shadow_puppet-0.3.2/lib/shadow_puppet/manifest.rb:300:in `send'
** [out :: v1-staging.domainname.com] /usr/lib/ruby/gems/1.8/gems/shadow_puppet-0.3.2/lib/shadow_puppet/manifest.rb:300:in `evaluate_recipes'
** [out :: v1-staging.domainname.com] /usr/lib/ruby/gems/1.8/gems/shadow_puppet-0.3.2/lib/shadow_puppet/manifest.rb:295:in `each'
** [out :: v1-staging.domainname.com] /usr/lib/ruby/gems/1.8/gems/shadow_puppet-0.3.2/lib/shadow_puppet/manifest.rb:295:in `evaluate_recipes'
** [out :: v1-staging.domainname.com] /usr/lib/ruby/gems/1.8/gems/shadow_puppet-0.3.2/lib/shadow_puppet/manifest.rb:251:in `execute!'
** [out :: v1-staging.domainname.com] /usr/lib/ruby/gems/1.8/gems/shadow_puppet-0.3.2/bin/shadow_puppet:91
** [out :: v1-staging.domainname.com] /usr/bin/shadow_puppet:19:in `load'
** [out :: v1-staging.domainname.com] /usr/bin/shadow_puppet:19
command finished
*** [deploy:update_code] rolling back
* executing "rm -rf /srv/dev.domainname/releases/20100219195856; true"
servers: ["v1-staging.domainname.com"]
[v1-staging.domainname.com] executing command
command finished
failed: "sh -c 'sudo -p '\\''sudo password: '\\'' RAILS_ROOT=/srv/dev.domainname/releases/20100219195856 DEPLOY_STAGE=v1-staging RAILS_ENV=production shadow_puppet /srv/dev.domainname/releases/20100219195856/app/manifests/application_manifest.rb'" on v1-staging.domainname.com
➜ rails
:application: dev.domainname.com
:deploy_to: /srv/dev.domainname
:domain: dev.domainname.com
# Other unrelated settings omitted
server "v1-staging.domainname.com", :app, :web, :db, :primary => true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment