百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

rails

> 后端框架
开源

Capistrano 专用的官方 Ruby on Rails 任务

901 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Capistrano 专用的官方 Ruby on Rails 任务

Capistrano::Rails

Rails specific tasks for Capistrano v3:

  • cap deploy:migrate
  • cap deploy:compile_assets

Installation

Add these Capistrano gems to your application's Gemfile using require: false:

ruby
group :development do
  gem "capistrano", "~> 3.10", require: false
  gem "capistrano-rails", "~> 1.6", require: false
end

Run the following command to install the gems:

bundle install

Then run the generator to create a basic set of configuration files:

bundle exec cap install

Usage

Require everything (bundler, rails/assets and rails/migrations):

ruby
# Capfile
require 'capistrano/rails'

Or require just what you need manually:

ruby
# Capfile
require 'capistrano/bundler' # Rails needs Bundler, right?
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'

Please note that any requires should be placed in Capfile, not in config/deploy.rb.

You can tweak some Rails-specific options in config/deploy.rb:

…

Symlinks

You'll probably want to symlink Rails shared files and directories like log, tmp and public/uploads. Make sure you enable it by setting linked_dirs and linked_files options:

ruby
# deploy.rb
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', '.bundle', 'public/system', 'public/uploads'
append :linked_files, 'config/database.yml', 'config/secrets.yml'

In capistrano < 3.5, before append was introduced, you can use fetch and push to get the same result.

Recommendations

While migrations looks like a concern of the database layer, Rails migrations are strictly related to the framework. Therefore, it's recommended to set the role to :app instead of :db like:

ruby
set :migration_role, :app

The advantage is you won't need to deploy your application to your database server, and overall a better separation of concerns.

Uploading your master.key

You can use the below configuration to upload your master.key to the server if it isn't already present.

ruby
append :linked_files, "config/master.key"

namespace :deploy do
  namespace :check do
    before :linked_files, :set_master_key do
      on roles(:app) do
        unless test("[ -f #{shared_path}/config/master.key ]")
          upload! 'config/master.key', "#{shared_path}/config/master.key"
        end
      end
    end
  end
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rubycapistranodeploymentrails

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类后端框架
定价开源

> 相关工具

N
Node.js
基于 V8 的 JavaScript 运行时
D
Django
Python 高级 Web 框架
S
Spring Boot
Java 生态主流微服务框架