一言で
ruby アプリケーションに対する、 capistrano/bundler
相当の python 版、 capistrano3/pipenv
を書いた。
詳細
Gemfile
group :development do
gem 'capistrano3-pipenv', require: false
end
して、
Capfile
require 'capistrano3/pipenv'
# pyenv を利用する場合
require 'capistrano3/pyenv'
すると、 pyenv exec pipenv install --deploy
がデプロイの中で呼ばれるようになる。
設定項目と、そのデフォルト値は以下
config/deploy.rb
# capistrano3/pipenv
set :pipenv_roles, :all
set :pipenv_servers, -> { release_roles(fetch(:pipenv_roles)) }
set :pipenv_flags, []
set :pipenv_env_variables, {}
set :pipenv_clean_options, '--all'
# capistrano3/pyenv
set :pyenv_path, -> {
pyenv_path = fetch(:pyenv_custom_path)
pyenv_path ||
if fetch(:pyenv_type, :user) == :system
'/usr/local/pyenv'
else
'$HOME/.pyenv'
end
}
set :pyenv_roles, fetch(:pyenv_roles, :all)
set :pyenv_python_dir, -> { "#{fetch(:pyenv_path)}/versions/#{fetch(:pyenv_python)}" }
set :pyenv_map_bins, %w{pipenv}