$ command line ruby cheat sheets
Cheat Sheet Title: [ no_spaces_alphanumeric_only ]
Cheat Sheet:http://www.dizzy.co.uk/cheatsheets This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 2.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/2.0/uk ########## Shell Commands ########## Installation: $ gem install capistrano Add your application to Capistrano (capistranize): $ cap --apply-to /path/to/your/app YourApplicationName # NOTE: Rake access to capistrano is deprecated in Capistrano 1.3. # Use the 'cap' command instead. Execute the setup task: $ rake remote:exec ACTION=setup Execute the cold_deploy task: $ rake remote:exec ACTION=cold_deploy Deploy your application: $ rake deploy Similar to deploy, but it runs the migrate task on the new release before updating the symlink: $ rake remote:deploy_with_migrations Rollback a release from production: $ rake rollback Execute the disable_web task: $ rake remote_exec ACTION=disable_web \ UNTIL="tomorrow morning" \ REASON="vital upgrade" Using the invoke task: $ rake remote_exec ACTION=invoke \ COMMAND="svn up /u/apps/flipper/current/app/views" \ ROLES=app ########## Standard Tasks ########## cleans up the releases directory, leaving the five most recent releases: $ cap cleanup used when deploying an application for the first time. Starts the application’s spinner (via the spinner task) and then does a normal deploy: $ cap cold_deploy updates all the code on your server (via update_code and symlink tasks), then restarts the FastCGI listeners on the application servers (via the restart task): $ cap deploy prints the difference between what was last deployed, and what is currently in your repository: $ cap diff_from_last_deploy puts up a static maintenance page that is displayed to visitors: $ cap disable_web removes the maintenance page: $ cap enable_web allows you to send commands directly: $ cap invoke changes to the directory of your current release (as indicated by the current symlink), and runs rake RAILS_ENV=production migrate: $ cap migrate restarts all FastCGI listeners for your application by calling the reaper command without arguments. Only executed on :app servers $ cap restart rolls your application back to the previously deployed version determines the previous release , updates the current symlink to point to that, and then deletes the latest release $ cap rollback Creates and chmods the directory tree properly: $ cap setup inspect the existing tasks and display them to standard out in alphabetical order, along with their descriptions: $ cap show_tasks starts the spinner process for your application: $ cap spinner updates the current symlink to the latest deployed version of the code $ cap symlink Checks out your source code, deletes the log and public/system directories in your new release, symlinks log to #{shared_path}/log, symlinks public/system to #{shared_path}/system: $ cap update_code ########## config/deploy.rb ########## *Defining Tasks task :hello_world do run "echo Hello, $HOSTNAME" end task :hello_world, :roles => [:db, :app] do puts "calling hello_world..." hello_world end *Transactions task :cold_deploy do transaction do task_one_here task_two_here end task_three_not_in_transaction end *Capturing output with run run "sudo ls -la" do |channel, stream, data| if data =~ /^Password:/ logger.info "#{channel[:host]} asked for password" channel.send_data "mypass\n" end end buffer = render(:template => <<EXAMPLE_TEMPLATE) This template will be rendered replacing variables <%= like_this_variable => with their values. EXAMPLE_TEMPLATE put buffer, "path/to/save/file.txt", :mode => 0755 *deploy.rb variables and their defaults The name of your application. :application (required) The location of your code’s scm repository :repository (required) The address of the server to use as a gateway. :gateway nil The name of the user to use when logging into the remote host(s). :user current_user The password to use for logging into the remote host(s). :password password The root of the directory tree on the remote host(s) that the application should be deployed to :deploy_to “/u/apps/#{application}” The directory under deploy_to that should contain each deployed revision. :version_dir releases The name to use (relative to deploy_to) for the symlink that points at the current release :current_dir current The name of the directory under deploy_to that will contain directories and files to be shared between all releases. :shared_dir shared This specifies the revision you want to check out on the remote machines. :revision (latest) The source control module to use. Current supported are :subversion, :cvs, :darcs :scm subversion The location on the remote host of the source control executable. :svn,:cvs,:darcs The subversion operation to use when checking out code on the remote host. Can be set to “export” :checkout "co" Hash of additional options passed to the SSH connection routine. This lets you set (among other things) a non-standard port to connect on: (ssh_options[:port] = 2345) :ssh_options Hash.new Whether or not tasks that can use sudo, ought to use sudo. In a shared environment, this is typically not desirable (or possible), and in that case you should set this variable to false :use_sudo true Sets the path to sudo. :sudo variables are set via: set :application, "flipper" ########## Interactive Shell ########## (requires capistrano-1.2.0) Shell is essentially a SSH interface to your servers, so you can run standard commands such as 'ls' or 'cp' as well as Capistrano-specific ones. Start the interactive Capistrano shell $ cap -v shell Execute Capistrano tasks cap> !deploy cap> !update_code symlink cap> !setup deploy cap> on app2.foo.com !setup cap> with app,db !setup deploy
Your cheat sheet will be editable (fixable) by anyone. Each cheat sheet is essentially a wiki page. It may also be used by millions of people for reference purposes from the comfort of their command line. If this is okay with you, please save.
Advertisement