Capistrano 专用的官方 Ruby on Rails 任务
Rails specific tasks for Capistrano v3:
cap deploy:migratecap deploy:compile_assetsAdd these Capistrano gems to your application's Gemfile using require: false:
group :development do
gem "capistrano", "~> 3.10", require: false
gem "capistrano-rails", "~> 1.6", require: false
endRun the following command to install the gems:
bundle installThen run the generator to create a basic set of configuration files:
bundle exec cap installRequire everything (bundler, rails/assets and rails/migrations):
# Capfile
require 'capistrano/rails'Or require just what you need manually:
# 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:
…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:
# 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.
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:
set :migration_role, :appThe advantage is you won't need to deploy your application to your database server, and overall a better separation of concerns.
You can use the below configuration to upload your master.key to the server if it isn't already present.
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
endgit checkout -b my-new-feature)git commit -am 'Add some feature')git push origin my-new-feature)暂无开放 Issues,或尚未同步最近议题。