Coder Social home page Coder Social logo

documentation's Introduction

Capistrano: A deployment automation tool built on Ruby, Rake, and SSH.

Gem Version Build Status Code Climate CodersClan

Capistrano is a framework for building automated deployment scripts. Although Capistrano itself is written in Ruby, it can easily be used to deploy projects of any language or framework, be it Rails, Java, or PHP.

Once installed, Capistrano gives you a cap tool to perform your deployments from the comfort of your command line.

$ cd my-capistrano-enabled-project
$ cap production deploy

When you run cap, Capistrano dutifully connects to your server(s) via SSH and executes the steps necessary to deploy your project. You can define those steps yourself by writing Rake tasks, or by using pre-built task libraries provided by the Capistrano community.

Tasks are simple to make. Here's an example:

task :restart_sidekiq do
  on roles(:worker) do
    execute :service, "sidekiq restart"
  end
end
after "deploy:published", "restart_sidekiq"

Note: This documentation is for the current version of Capistrano (3.x). If you are looking for Capistrano 2.x documentation, you can find it in this archive.


Contents

Features

There are many ways to automate deployments, from simple rsync bash scripts to complex containerized toolchains. Capistrano sits somewhere in the middle: it automates what you already know how to do manually with SSH, but in a repeatable, scalable fashion. There is no magic here!

Here's what makes Capistrano great:

Strong conventions

Capistrano defines a standard deployment process that all Capistrano-enabled projects follow by default. You don't have to decide how to structure your scripts, where deployed files should be placed on the server, or how to perform common tasks: Capistrano has done this work for you.

Multiple stages

Define your deployment once, and then easily parameterize it for multiple stages (environments), e.g. qa, staging, and production. No copy-and-paste necessary: you only need to specify what is different for each stage, like IP addresses.

Parallel execution

Deploying to a fleet of app servers? Capistrano can run each deployment task concurrently across those servers and uses connection pooling for speed.

Server roles

Your application may need many different types of servers: a database server, an app server, two web servers, and a job queue work server, for example. Capistrano lets you tag each server with one or more roles, so you can control what tasks are executed where.

Community driven

Capistrano is easily extensible using the rubygems package manager. Deploying a Rails app? Wordpress? Laravel? Chances are, someone has already written Capistrano tasks for your framework of choice and has distributed it as a gem. Many Ruby projects also come with Capistrano tasks built-in.

It's just SSH

Everything in Capistrano comes down to running SSH commands on remote servers. On the one hand, that makes Capistrano simple. On the other hand, if you aren't comfortable SSH-ing into a Linux box and doing stuff on the command-line, then Capistrano is probably not for you.

Gotchas

While Capistrano ships with a strong set of conventions that are common for all types of deployments, it needs help understanding the specifics of your project, and there are some things Capistrano is not suited to do.

Project specifics

Out of the box, Capistrano can deploy your code to server(s), but it does not know how to execute your code. Does foreman need to be run? Does Apache need to be restarted? You'll need to tell Capistrano how to do this part by writing these deployment steps yourself, or by finding a gem in the Capistrano community that does it for you.

Key-based SSH

Capistrano depends on connecting to your server(s) with SSH using key-based (i.e. password-less) authentication. You'll need this working before you can use Capistrano.

Provisioning

Likewise, your server(s) will likely need supporting software installed before you can perform a deployment. Capistrano itself has no requirements other than SSH, but your application probably needs database software, a web server like Apache or Nginx, and a language runtime like Java, Ruby, or PHP. These server provisioning steps are not done by Capistrano.

sudo, etc.

Capistrano is designed to deploy using a single, non-privileged SSH user, using a non-interactive SSH session. If your deployment requires sudo, interactive prompts, authenticating as one user but running commands as another, you can probably accomplish this with Capistrano, but it may be difficult. Your automated deployments will be much smoother if you can avoid such requirements.

Shells

Capistrano 3 expects a POSIX shell like Bash or Sh. Shells like tcsh, csh, and such may work, but probably will not.

Quick start

Requirements

  • Ruby version 2.0 or higher on your local machine (MRI or Rubinius)
  • A project that uses source control (Git, Mercurial, and Subversion support is built-in)
  • The SCM binaries (e.g. git, hg) needed to check out your project must be installed on the server(s) you are deploying to
  • Bundler, along with a Gemfile for your project, are recommended

Install the Capistrano gem

Add Capistrano to your project's Gemfile using require: false:

group :development do
  gem "capistrano", "~> 3.17", require: false
end

Then run Bundler to ensure Capistrano is downloaded and installed:

$ bundle install

"Capify" your project

Make sure your project doesn't already have a "Capfile" or "capfile" present. Then run:

$ bundle exec cap install

This creates all the necessary configuration files and directory structure for a Capistrano-enabled project with two stages, staging and production:

├── Capfile
├── config
│   ├── deploy
│   │   ├── production.rb
│   │   └── staging.rb
│   └── deploy.rb
└── lib
    └── capistrano
            └── tasks

To customize the stages that are created, use:

$ bundle exec cap install STAGES=local,sandbox,qa,production

Note that the files that Capistrano creates are simply templates to get you started. Make sure to edit the deploy.rb and stage files so that they contain values appropriate for your project and your target servers.

Command-line usage

# list all available tasks
$ bundle exec cap -T

# deploy to the staging environment
$ bundle exec cap staging deploy

# deploy to the production environment
$ bundle exec cap production deploy

# simulate deploying to the production environment
# does not actually do anything
$ bundle exec cap production deploy --dry-run

# list task dependencies
$ bundle exec cap production deploy --prereqs

# trace through task invocations
$ bundle exec cap production deploy --trace

# lists all config variable before deployment tasks
$ bundle exec cap production deploy --print-config-variables

Finding help and documentation

Capistrano is a large project encompassing multiple GitHub repositories and a community of plugins, and it can be overwhelming when you are just getting started. Here are resources that can help:

Related GitHub repositories:

  • capistrano/sshkit provides the SSH behavior that underlies Capistrano (when you use execute in a Capistrano task, you are using SSHKit)
  • capistrano/rails is a very popular gem that adds Ruby on Rails deployment tasks
  • mattbrictson/airbrussh provides Capistrano's default log formatting

GitHub issues are for bug reports and feature requests. Please refer to the CONTRIBUTING document for guidelines on submitting GitHub issues.

If you think you may have discovered a security vulnerability in Capistrano, do not open a GitHub issue. Instead, please send a report to [email protected].

How to contribute

Contributions to Capistrano, in the form of code, documentation or idea, are gladly accepted. Read the DEVELOPMENT document to learn how to hack on Capistrano's code, run the tests, and contribute your first pull request.

License

MIT License (MIT)

Copyright (c) 2012-2020 Tom Clements, Lee Hambley

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

documentation's People

Contributors

mattbrictson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

documentation's Issues

Improve explanation of SSHKit DSL with examples and all available methods

From capistrano/capistrano#1531 (which I have closed and moved here instead):

Perhaps a link to [the SSHKit docs] on the [capistranorb.com] site would be appropriate or perhaps incorporating it into the documentation? Since it's very much a part of the DSL. Perhaps just a list of all the DSL methods available would be great. Would also be great to have the line number/file where they are defined. Perhaps a search feature would also be helpful.

Deploy uses a large number of SSH connections

Just tried to deploy using Capistrano 3. First of all it's a very sweet release, I am so happy this has finally come out. Well done!!

The new style is using a large number of separate SSH connections which were being flagged as potentially abusive by my server's firewall. I am using the standard ufw limit setting for SSH:

ufw will deny connections if an IP address has attempted to initiate 6 or more connections in the last 30 seconds

which is definitely the case. When I remove the limit, Capistrano goes through.

I would really like to keep the limit in the firewall and somehow reduce/queue the number of connections Capistrano is using. Is there a way?

Next/Previous page links

I found it difficult to know where I was in the documentation. After reading a page I had to scroll up to the top of the sidebar navigation and match the anchor text to the slug in the url to figure out what page I was on and what page I needed to navigate to next.

It would be nice to have the side navigation items have an active state as well as links at the bottom of each page. Something like this would be nice:

<a href="...">Previous: Installation</a>
<a href="...">Next: Authentication &amp; Authorization</a>

Also, the link text in the repo has "Authentication & Authorisation" which is spelled incorrectly. It should be "Authentication & Authorization"

Add "validation of variables" to the advanced features section

I removed this from the README in capistrano/capistrano#1559; this needs to be added to the website instead.

-## Validation of variables
-
-To validate a variable, each time before it is set, define a validation:
-
-```ruby
-validate :some_key do |key, value|
-  if value.length < 5
-    raise Capistrano::ValidationError, "Length of #{key} is too short!"
-  end
-end
-```
-
-Multiple validation can be assigned to a single key. Validations will be executed
-in the order of registration.

problem with cap deploy

when I try to cap deploy:setup
I have a problem

/Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:152:in require': cannot load such file -- capistrano/setup (LoadError) from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:152:inrequire'
from Capfile:2:in load' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:93:ininstance_eval'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:93:in load' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:180:inload_from_file'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:89:in load' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:inblock in load'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in each' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:inload'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:65:in block in load_recipes' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:65:ineach'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:65:in load_recipes' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:31:inexecute!'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:14:in execute' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/gems/capistrano-2.15.5/bin/cap:4:in<top (required)>'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/bin/cap:19:in load' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/bin/cap:19:in

'
from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/bin/ruby_noexec_wrapper:14:in eval' from /Users/ipatov/.rvm/gems/ruby-1.9.3-p392/bin/ruby_noexec_wrapper:14:in'

[Continue Discussion] About Translation to Chinese

capistrano/capistrano#1690
here is continue discussion about topic in above link

I am busy on deploy a Rails app.
So when i got time i would come back and see what can we do to translate the website.
I don't know much about jekyll and github page.
maybe I can just fork & pull request or something to translate. I don't know.
anyway, when i got time i would come back.
:D

External deploy.rb (-f flag?) Usage / Error

I'm trying to maintain my deploy.rb separately from the (multiple) apps that use it. I was told that the -f (--rakefile) flag would let me do this, but I'm getting an error and I can't find enough information on this feature to know if I'm using it correctly. What's the best way to accomplish my goal here?

This deploy.rb has a simple task that does this:
p "hello"
It works in config/deploy.rb, but if I try to reference it from another path...

/my_app_home> bundle exec cap vagrant --rakefile /home/vagrant/cap-external/deploy.rb test:echo

cap aborted!
undefined local variable or method tasks_without_stage_dependency' for #<Capistrano::Application:0x00000002aad8e8> /usr/local/rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/application.rb:28:intop_level_tasks'
/usr/local/rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/application.rb:15:in run' /usr/local/rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/bin/cap:3:in<top (required)>'
/usr/local/rvm/gems/ruby-2.0.0-p353/bin/cap:23:in load' /usr/local/rvm/gems/ruby-2.0.0-p353/bin/cap:23:in

'
/usr/local/rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in eval' /usr/local/rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in'
(See full trace by running task with --trace)
/usr/local/rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/application.rb:36:in exit_because_of_exception': undefined methoddeploying?' for #Capistrano::Application:0x00000002aad8e8 (NoMethodError)
from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/rake-10.1.1/lib/rake/application.rb:175:in rescue in standard_exception_handling' from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/rake-10.1.1/lib/rake/application.rb:165:instandard_exception_handling'
from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/rake-10.1.1/lib/rake/application.rb:75:in run' from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/lib/capistrano/application.rb:15:inrun'
from /usr/local/rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.1.0/bin/cap:3:in <top (required)>' from /usr/local/rvm/gems/ruby-2.0.0-p353/bin/cap:23:inload'
from /usr/local/rvm/gems/ruby-2.0.0-p353/bin/cap:23:in <main>' from /usr/local/rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:ineval'
from /usr/local/rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `'

default_env not working as intended

I noticed some strange behaviour while working on a remote server w/rbenv system-installed. I was trying to fix the default PATH variable removing the comment on the line

 set :default_env, { path: '/opt/rbenv/shims:opt/rbenv/bin:$PATH' }

my console outputs:

me@localhost > bundle exec cap staging deploy:restart
INFO [c501cf64] Running rbenv on some.ip.address
DEBUG [c501cf64] Command: ( PATH=/opt/rbenv/shims:opt/rbenv/bin:$PATH rbenv )
DEBUG [c501cf64]    bash: rbenv: command not found

lurking on sources i can confirm that capistrano is correctly setting the default_env variable. So it is probably related on the sshkit dependancy or some misconfiguration in the capistrano sources.

Most of footer links are broken.

  <footer>
  <div class="row">
    <div class="large-4 columns">
      <ul>
      <li><a href="/about">About Capistrano</a></li>
      <li><a href="https://github.com/capistrano/capistrano/blob/master/CONTRIBUTING">Contributing</a></li>
      <li><a href="https://rubygems.org/gems/capistrano/versions">Releases</a></li>
      <li><a href="/documentation/upgrading">Upgrading</a></li>
      <li><a href="/security">Security</a></li>
      </ul>
    </div>

    <div class="large-4 columns">
      <ul>
        <li><a href="http://stackoverflow.com/questions/tagged/capistrano">StackOverflow</a></li>
        <li><a href="https://groups.google.com/forum/#!forum/capistrano">Mailing List</a></li>
        <li><a href=".... ">Commercial Support</a></li>
      </ul>
    </div>

    <div class="large-4 columns">
      <ul class="social icons">
        <li><a href="//twitter.com/capistranorb"><i class="foundicon-twitter"></i></a></li>
        <li><a href="//github.com/capistrano"><i class="foundicon-github"></i></a></li>
      </ul>
    </div>
  </div>
</footer>

Most of those links are broken.

Documented walkthrough on how to programmatically use Capistrano in Ruby

Moving this from the original issue, since it's related to documentation.


The documentation on this topic seems out of date, or incorrect. The example code given does not work correctly. Can we get a more thorough explanation of which files to require (and in what order,) as well as which methods to use to set a deployment config and initiate a deploy from within a Ruby script?

I'm trying to integrate Capistrano into an existing command line application, with configuration kept in a Yaml file, and have run into numerous issues trying to configure Capistrano to actually run without the typical deploy.rb and Capfile setup. It seems like it can't find any default tasks.

There just doesn't seem to be a clear API to allow something like this, yet the documentation above hints that it should be possible. Any advice on getting a little more up to speed on the correct way to do something like this?

Leveraging the power of Jekyll/Ruby for more "dynamic" documentation generation

When I submitted a PR to the Capistrano Docs repo I couldn't help but notice that it'd be nice to have things like navigation.html generated automatically. I then started working on doing exactly that, and then noticed that the reason this is not already being done is (probably) that the site is currently being built by GitHub pages, and thus does not allow for custom code.

Would it be an option to build the docs page locally and then push the generated site to GitHub Pages (all this using a Rake task of course)? This would make writing/updating docs more pleasant, I think.

Add guided walkthrough(s)

Video or otherwise would be great.

From @operand's original issue capistrano/capistrano#1297:

I'm basically submitting this issue to request a clearer getting started walkthrough on the main site. I remember with version 2 there was a thorough walkthrough for getting started (here it is https://github.com/capistrano/capistrano/wiki/2.x-From-The-Beginning), but although there is a section titled "Getting Started" on the version 3 site, as a new user of version 3, I was left hanging with how to move forward initially. I'm currently just following the old guide and substituting any changes that I learn about. It seems to mostly still be relevant, so that's the good thing. I just wanted to point out this bit of frustration that I've had. Cheers and thank you for the good work!

Problem with git submodules.

I want to deploy a project with git submodules, and I tried to use

set :git_enable_submodules, true

But it dont work. I dont find anywhere this docs for capistrano 3.x with git submodules, someone has?

I really need help in this.

Below my config files:

deploy.rb:
`set :application, 'APP_NAME'
set :repo_url, 'APP_URL'
set :branch, 'master'
set :scm, :git
set :git_enable_submodules, true

namespace :deploy do

desc 'Restart application'
task :restart do
on roles(:all), in: :sequence, wait: 5 do
#nothing
end
end

after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
#nothing
end
end

after :finishing, 'deploy:cleanup'

end.`

deploy/test.rb

set :stage, :test set :deploy_to, 'APP_PATH' set :branch, 'test'

The deploy work`s fine, but the submodules do not init.

Newbie feedback

Hi,

i just got it set up and it was a little difficult. I could help improve the docs, or say where there are unclarities if that is wanted.
To be a little more specific: i found the setup and which commands are needed a little difficult. Especially in sight of the capistrano-rails, is it needed or not, what are the differences, difficult to follow.
Astep-by-step guide would be good too.

If someone is interested to work on this, i could help.

Move docs into capistrano repository?

/cc @leehambley @will-in-wi @robd

I'm not sure if this is a good idea, or even how it would be done, so I thought I should open it for discussion.

Basically I've noticed that it is hard to keep the documentation site up to date, and part of that is because it is a separate Git repository.

With Capistrano's CHANGELOG and README, we can easily set a policy that those must be updated when an Capistrano PR adds new features or makes changes. And indeed the CHANGELOG is one of the few bits of official documentation that is very well maintained.

However the site being a separate repository, we can't enforce policy via the normal PR process.

What if:

  • The docs were moved into the capistrano repository under docs/
  • Our PR policy could expand to ensure both CHANGELOG and docs are updated on merge
  • Somehow (???) we build the public doc site from docs/
  • Bonus: the public doc site could have both "edge" and "stable" versions, built from master and the most recent tag

Anyway, I'm not sure this could work, but given that documentation is one of our biggest challenges, I thought it worthy of discussion.

Good idea? Bad idea?

Document using ssh-keyscan to preload the deploy host host key.

The documentation should cover what a host key is, how to get one, and how to make a simple task to do this automatically, including any risks involved.


SSH-KEYSCAN(1)            BSD General Commands Manual           SSH-KEYSCAN(1)

NAME
     ssh-keyscan -- gather ssh public keys

SYNOPSIS
     ssh-keyscan [-46Hv] [-f file] [-p port] [-T timeout] [-t type] [host | addrlist namelist] ...

DESCRIPTION
     ssh-keyscan is a utility for gathering the public ssh host keys of a number of hosts.  It was
     designed to aid in building and verifying ssh_known_hosts files.  ssh-keyscan provides a minimal
     interface suitable for use by shell and perl scripts.

     ssh-keyscan uses non-blocking socket I/O to contact as many hosts as possible in parallel, so it is
     very efficient.  The keys from a domain of 1,000 hosts can be collected in tens of seconds, even when
     some of those hosts are down or do not run ssh.  For scanning, one does not need login access to the
     machines that are being scanned, nor does the scanning process involve any encryption.

Specifically you can do something liks this:

$ ssh [email protected]
The authenticity of host 'github.com (192.30.252.131)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
^D
Host key verification failed.
$ ssh-keyscan github.com >> ~/.ssh/known_hosts
# github.com SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1+github5
$ cat ~/.ssh/known_hosts | grep github.com
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==

On Linux the output can also be sent to /etc/ssh/ssh_known_hosts to be globally applied, rather than for an individual user, with a privileged user account that is.

Install CodersClan Tag

We missed this one, somehow. The CodersClan author reached out to me again, and I don't see the harm in trying this.

Need help with getting Capistrano up and running? Got a code problem you want to get solved quickly? 

Get <a href="http://codersclan.net/?repo_id=325">Capistrano support on CodersClan.</a>

<a href="http://codersclan.net/?repo_id=325"><img src="http://www.codersclan.net/gs_button/?repo_id=325" width="200"></a>

I wonder where we can best place it. At least:

  • Capistrano README
  • Capistrano CONTRIBUTING
  • On the documentation site somewhere.

Add guide to using Capistrano from Windows

At least something to replace this note in the SSH keys from workstation to servers section:

If you are on Windows, all bets are off. I'd love it if someone could contribute a Windows guide to this, so we can include it here.

😃

Add search function

Could you add a search box to the website?

At a minimum, a Google search box would be handy (form target = https://www.google.com/#q=site:capistranorb.com <searchterm>

Recommended use of `ask` is incorrect

The documentation recommends this pattern:

set :database_password, ask('Enter the database password:', 'default', echo: false)

But this is wrong. The first argument to ask is supposed to be a variable name, not a prompt string. Technically the code still works (since the outer set overrides the implicit set within ask), but it is very misleading.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.