aboutsummaryrefslogtreecommitdiffstats
path: root/switchtower/examples
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2005-08-30 20:53:32 +0000
committerJamis Buck <jamis@37signals.com>2005-08-30 20:53:32 +0000
commit6b1864a048ffb9343d4658ec11c32494d7f038db (patch)
tree6c1ad3f9131d644afab6cc6188001cfb73775e33 /switchtower/examples
parentbb7f60ca1cd191fd775fef261b4d2bc7af223604 (diff)
downloadrails-6b1864a048ffb9343d4658ec11c32494d7f038db.tar.gz
rails-6b1864a048ffb9343d4658ec11c32494d7f038db.tar.bz2
rails-6b1864a048ffb9343d4658ec11c32494d7f038db.zip
Move switchtower to the tools directory, to decouple it from rails
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2074 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'switchtower/examples')
-rw-r--r--switchtower/examples/sample.rb113
1 files changed, 0 insertions, 113 deletions
diff --git a/switchtower/examples/sample.rb b/switchtower/examples/sample.rb
deleted file mode 100644
index 94d430430a..0000000000
--- a/switchtower/examples/sample.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-# You must always specify the application and repository for every recipe. The
-# repository must be the URL of the repository you want this recipe to
-# correspond to. The deploy_to path must be the path on each machine that will
-# form the root of the application path.
-
-set :application, "sample"
-set :repository, "http://svn.example.com/#{application}/trunk"
-
-# The deploy_to path is optional, defaulting to "/u/apps/#{application}".
-
-set :deploy_to, "/path/to/app/root"
-
-# The user value is optional, defaulting to user-name of the current user. This
-# is the user name that will be used when logging into the deployment boxes.
-
-set :user, "flippy"
-
-# By default, the source control module (scm) is set to "subversion". You can
-# set it to any supported scm:
-
-set :scm, :subversion
-
-# gateway is optional, but allows you to specify the address of a computer that
-# will be used to tunnel other requests through, such as when your machines are
-# all behind a VPN or something
-
-set :gateway, "gateway.example.com"
-
-# You can define any number of roles, each of which contains any number of
-# machines. Roles might include such things as :web, or :app, or :db, defining
-# what the purpose of each machine is. You can also specify options that can
-# be used to single out a specific subset of boxes in a particular role, like
-# :primary => true.
-
-role :web, "www01.example.com", "www02.example.com"
-role :app, "app01.example.com", "app02.example.com", "app03.example.com"
-role :db, "db01.example.com", :primary => true
-role :db, "db02.example.com", "db03.example.com"
-
-# Define tasks that run on all (or only some) of the machines. You can specify
-# a role (or set of roles) that each task should be executed on. You can also
-# narrow the set of servers to a subset of a role by specifying options, which
-# must match the options given for the servers to select (like :primary => true)
-
-desc <<DESC
-An imaginary backup task. (Execute the 'show_tasks' task to display all
-available tasks.)
-DESC
-
-task :backup, :roles => :db, :only => { :primary => true } do
- # the on_rollback handler is only executed if this task is executed within
- # a transaction (see below), AND it or a subsequent task fails.
- on_rollback { delete "/tmp/dump.sql" }
-
- run "mysqldump -u theuser -p thedatabase > /tmp/dump.sql" do |ch, stream, out|
- ch.send_data "thepassword\n" if out =~ /^Enter password:/
- end
-end
-
-# Tasks may take advantage of several different helper methods to interact
-# with the remote server(s). These are:
-#
-# * run(command, options={}, &block): execute the given command on all servers
-# associated with the current task, in parallel. The block, if given, should
-# accept three parameters: the communication channel, a symbol identifying the
-# type of stream (:err or :out), and the data. The block is invoked for all
-# output from the command, allowing you to inspect output and act
-# accordingly.
-# * sudo(command, options={}, &block): same as run, but it executes the command
-# via sudo.
-# * delete(path, options={}): deletes the given file or directory from all
-# associated servers. If :recursive => true is given in the options, the
-# delete uses "rm -rf" instead of "rm -f".
-# * put(buffer, path, options={}): creates or overwrites a file at "path" on
-# all associated servers, populating it with the contents of "buffer". You
-# can specify :mode as an integer value, which will be used to set the mode
-# on the file.
-# * render(template, options={}) or render(options={}): renders the given
-# template and returns a string. Alternatively, if the :template key is given,
-# it will be treated as the contents of the template to render. Any other keys
-# are treated as local variables, which are made available to the (ERb)
-# template.
-
-desc "Demonstrates the various helper methods available to recipes."
-task :helper_demo do
- # "setup" is a standard task which sets up the directory structure on the
- # remote servers. It is a good idea to run the "setup" task at least once
- # at the beginning of your app's lifetime (it is non-destructive).
- setup
-
- buffer = render("maintenance.rhtml", :deadline => ENV['UNTIL'])
- put buffer, "#{shared_path}/system/maintenance.html", :mode => 0644
- sudo "killall -USR1 dispatch.fcgi"
- run "#{release_path}/script/spin"
- delete "#{shared_path}/system/maintenance.html"
-end
-
-# You can use "transaction" to indicate that if any of the tasks within it fail,
-# all should be rolled back (for each task that specifies an on_rollback
-# handler).
-
-desc "A task demonstrating the use of transactions."
-task :long_deploy do
- transaction do
- update_code
- disable_web
- symlink
- migrate
- end
-
- restart
- enable_web
-end