← Blog

Starting a Remote Rails Console With Capistrano

For developers that deploy Rails with Capistrano, here are a few tasks to quickly open an interactive rails console or rails dbconsole on a remote server.

If you’re like me, you’ll occasionally want to open a console to run a quick query, set an admin flag on a user or just verify that a migration worked correctly. This usually means finding the right ssh credentials to log into the remote server, finding the deploy directory on the server, typing in the command wrapped in bundle exec, and then staring at an error before realizing you forgot to specify the Rails environment. Luckily, your Capistrano deploy.rb probably has all the information it needs to start a console for you.

Without further ado, if you’d like to give it a try, add the version-appropriate snippet from below to your deploy.rb file and run cap [stage] rails:console or cap [stage] rails:dbconsole.

Capistrano 2

namespace :rails do
  desc "Remote console"
  task :console, :roles => :app do |server|
    run_interactively "bundle exec rails console #{rails_env}"
  end

desc “Remote dbconsole” task :dbconsole, :roles => :app do |server| run_interactively “bundle exec rails dbconsole #{rails_env}” end

def run_interactively(command) server ||= find_servers_for_task(current_task).first puts " running #{command} as #{user}@#{server}" exec %Q(ssh #{user}@#{server} -t “bash –login -c ‘cd #{deploy_to}/current && #{command}’”) end end

Capistrano 3

namespace :rails do
  desc "Remote console"
  task :console do
    on roles(:app) do |h|
      run_interactively "bundle exec rails console #{fetch(:rails_env)}", h.user
    end
  end

desc “Remote dbconsole” task :dbconsole do on roles(:app) do |h| run_interactively “bundle exec rails dbconsole #{fetch(:rails_env)}”, h.user end end

def run_interactively(command, user) info “Running #{command} as #{user}@#{host}” exec %Q(ssh #{user}@#{host} -t “bash –login -c ‘cd #{fetch(:deploy_to)}/current && #{command}’”) end end

Much credit goes to this StackOverflow question. I’ve borrowed from the answers there and made a few modifications to ensure that RVM/Rbenv is loaded first. If you run into any issues or have any improvements, let us know in the comments below.

Let's talk

Put this to work

Questions about applying this to your business? A 30-minute discovery call is the fastest way to find out.

Reach Out →

or call 517-455-7837

Related articles

How to Build an Accessible Website Mar 17, 2026 The Hidden Costs of Cheap Web Hosting Jun 10, 2025 How to Improve User Experience on a Budget Jan 19, 2021
Share in X f