Posted at

Capistrano3-pipenv を書いた


一言で

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, '--deploy'
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}