capify-rbenv 4.0.1 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -26
- data/lib/capistrano/rbenv.rb +33 -1
- data/lib/capistrano/rbenv/setup_bundler.rb +16 -0
- data/lib/capistrano/rbenv/setup_ruby.rb +22 -0
- data/lib/capistrano/rbenv/version.rb +1 -1
- data/lib/capistrano/tasks/rbenv.rake +6 -54
- data/lib/capistrano/tasks/setup_bundler.rake +11 -0
- data/lib/capistrano/tasks/setup_ruby.rake +45 -0
- metadata +6 -6
- data/lib/capistrano/rbenv/with_hooks.rb +0 -3
- data/lib/capistrano/rbenv/without_hooks.rb +0 -2
- data/lib/capistrano/tasks/defaults.rake +0 -59
- data/lib/capistrano/tasks/deploy.rake +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5f8789b142f643a4d51ce7fefcbb84c961ba03cb0351e688aeffe4bb24bcc1b
|
4
|
+
data.tar.gz: 82fbbeef20d477e3398af9ac1a7150ffe66815db22b9174c5bf56fa3c346a87c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ecabc4b6f55a3a44027abb1e56e3f546dcdfa6f5c898139dbf131107e7ba99b10b1929cb2fb5d3d9e112978773cd1ab2a480714d2bed32faeea6d8122adf7d2
|
7
|
+
data.tar.gz: 73bd520ec0611e7b99ab5558e127b21699f5e620e5d74e949b069dd86878925fc907219696a8bae25c89cc03a431d6411832023a1d45870e25e6d52e8ad52327
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ Add this line to your application's Gemfile:
|
|
13
13
|
|
14
14
|
```ruby
|
15
15
|
gem 'capistrano', '~> 3.13'
|
16
|
-
gem 'capify-rbenv', '~>
|
16
|
+
gem 'capify-rbenv', '~> 5.0'
|
17
17
|
```
|
18
18
|
|
19
19
|
And then execute:
|
@@ -27,11 +27,14 @@ $ bundle install
|
|
27
27
|
```ruby
|
28
28
|
# Capfile
|
29
29
|
require 'capistrano/rbenv'
|
30
|
+
install_plugin Capistrano::Rbenv # Required: Setup rbenv
|
31
|
+
install_plugin Capistrano::Rbenv::SetupRuby # Optional: Install/Setup ruby
|
32
|
+
install_plugin Capistrano::Rbenv::SetupBundler # Optional: Install/Setup bundler
|
30
33
|
|
31
34
|
|
32
35
|
# config/deploy.rb
|
33
|
-
set :rbenv_ruby, '2.7.1' # Set ruby version to
|
34
|
-
set :rbenv_bundler, '2.1.4' # Set bundler version to
|
36
|
+
set :rbenv_ruby, '2.7.1' # Set ruby version to use
|
37
|
+
set :rbenv_bundler, '2.1.4' # Set bundler version to use
|
35
38
|
|
36
39
|
# In case you want to set ruby version from .ruby-version file:
|
37
40
|
# set :rbenv_ruby, File.read('.ruby-version').strip
|
@@ -54,40 +57,25 @@ set :rbenv_ruby_dir, "#{fetch(:rbenv_path)}/versions/#{fetch(:rbenv_ruby)}"
|
|
54
57
|
|
55
58
|
# Set or append the list of dependencies to install
|
56
59
|
# See lib/capistrano/tasks/defaults.rake for default dependencies
|
57
|
-
append :
|
60
|
+
append :rbenv_ruby_deps, 'libsqlite3-dev', 'sqlite3'
|
58
61
|
|
59
62
|
# Set dependencies installer
|
60
|
-
set :
|
63
|
+
set :rbenv_ruby_deps_installler, 'apt-get install -y'
|
61
64
|
|
62
65
|
# Set or append customs bins to create under rbenv
|
63
66
|
# See lib/capistrano/tasks/defaults.rake for default bins
|
64
67
|
append :rbenv_map_bins, 'puma', 'pumactl'
|
65
68
|
```
|
66
69
|
|
67
|
-
When you `require 'capistrano/rbenv'` in your Capfile, it will add default hooks to capistrano deploy that will automatically setup everything (rbenv, ruby, bundler) you need. If you want to skip the default hooks and setup everything on your own, use the following instructions,
|
68
|
-
|
69
|
-
```ruby
|
70
|
-
# Capfile
|
71
|
-
require 'capistrano/rbenv/without_hooks'
|
72
|
-
|
73
|
-
|
74
|
-
# Then add it as a hook
|
75
|
-
after :some_task, 'rbenv:setup'
|
76
|
-
|
77
|
-
# Or invoke manually
|
78
|
-
task :custom_setup do
|
79
|
-
invoke 'rbenv:setup'
|
80
|
-
end
|
81
|
-
```
|
82
|
-
|
83
70
|
## Available tasks
|
84
71
|
|
85
72
|
```ruby
|
86
|
-
rbenv:install
|
87
|
-
rbenv:
|
88
|
-
rbenv:install_bundler
|
89
|
-
rbenv:
|
90
|
-
rbenv:
|
73
|
+
rbenv:install # Install rbenv
|
74
|
+
rbenv:map_bins # Map binaries to rbenv path
|
75
|
+
rbenv:install_bundler # Install bundler
|
76
|
+
rbenv:install_ruby # Install ruby
|
77
|
+
rbenv:install_ruby_build # Install/Update ruby-build - rbenv plugin
|
78
|
+
rbenv:install_ruby_deps # Install ruby dependencies
|
91
79
|
```
|
92
80
|
|
93
81
|
## Contributing
|
data/lib/capistrano/rbenv.rb
CHANGED
@@ -1 +1,33 @@
|
|
1
|
-
|
1
|
+
module Capistrano
|
2
|
+
class Rbenv < Plugin
|
3
|
+
def define_tasks
|
4
|
+
eval_rakefile File.expand_path('tasks/rbenv.rake', __dir__)
|
5
|
+
end
|
6
|
+
|
7
|
+
def register_hooks
|
8
|
+
Capistrano::DSL.stages.each do |stage|
|
9
|
+
after stage, 'rbenv:map_bins'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def set_defaults
|
14
|
+
# Set role on which rbenv setup will apply
|
15
|
+
set_if_empty :rbenv_role, :app
|
16
|
+
|
17
|
+
# Set rbenv installation type (user/system)
|
18
|
+
set_if_empty :rbenv_type, :user
|
19
|
+
|
20
|
+
# Set ruby version to use/install
|
21
|
+
set_if_empty :rbenv_ruby, '2.7.1'
|
22
|
+
|
23
|
+
# Set rbenv installation path
|
24
|
+
set_if_empty :rbenv_path, fetch(:rbenv_type) == :system ? '/usr/local/rbenv' : '$HOME/.rbenv'
|
25
|
+
|
26
|
+
# Set customs bins to create under rbenv
|
27
|
+
set_if_empty :rbenv_map_bins, %i[gem rake ruby rails bundle bundler]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
require_relative 'rbenv/setup_ruby'
|
33
|
+
require_relative 'rbenv/setup_bundler'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Capistrano
|
2
|
+
class Rbenv::SetupBundler < Plugin
|
3
|
+
def define_tasks
|
4
|
+
eval_rakefile File.expand_path('../tasks/setup_bundler.rake', __dir__)
|
5
|
+
end
|
6
|
+
|
7
|
+
def register_hooks
|
8
|
+
after 'rbenv:install_ruby', 'rbenv:install_bundler'
|
9
|
+
end
|
10
|
+
|
11
|
+
def set_defaults
|
12
|
+
# Set bundler version to use/install
|
13
|
+
set_if_empty :rbenv_bundler, '2.1.4'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Capistrano
|
2
|
+
class Rbenv::SetupRuby < Plugin
|
3
|
+
def define_tasks
|
4
|
+
eval_rakefile File.expand_path('../tasks/setup_ruby.rake', __dir__)
|
5
|
+
end
|
6
|
+
|
7
|
+
def register_hooks
|
8
|
+
after 'rbenv:map_bins', 'rbenv:install_ruby'
|
9
|
+
end
|
10
|
+
|
11
|
+
def set_defaults
|
12
|
+
# Set rbenv directory for installed ruby versions
|
13
|
+
set_if_empty :rbenv_ruby_dir, "#{fetch(:rbenv_path)}/versions/#{fetch(:rbenv_ruby)}"
|
14
|
+
|
15
|
+
# Set list of dependencies needed for ruby
|
16
|
+
set_if_empty :rbenv_ruby_deps, %w[libssl-dev zlib1g-dev libreadline-dev build-essential]
|
17
|
+
|
18
|
+
# Set dependencies installer
|
19
|
+
set_if_empty :rbenv_ruby_deps_installler, 'sudo apt-get install -y'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,59 +1,11 @@
|
|
1
1
|
namespace :rbenv do
|
2
|
-
|
3
|
-
|
2
|
+
desc 'Map binaries to rbenv path'
|
3
|
+
task :map_bins do
|
4
|
+
SSHKit.config.default_env.merge!({ rbenv_root: fetch(:rbenv_path), rbenv_version: fetch(:rbenv_ruby) })
|
5
|
+
SSHKit.config.command_map[:rbenv] = "#{fetch(:rbenv_path)}/bin/rbenv"
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
task :install do
|
8
|
-
on roles(fetch(:rbenv_role)) do
|
9
|
-
next if test "[ -d #{fetch(:rbenv_path)} ]"
|
10
|
-
|
11
|
-
execute :sudo, "#{fetch(:rbenv_deps_installler)} #{fetch(:rbenv_default_deps)} #{fetch(:rbenv_deps)}"
|
12
|
-
execute :git, "clone #{RBENV_REPO_URL} #{fetch(:rbenv_path)}"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
desc 'Install/Update ruby-build - rbenv plugin'
|
18
|
-
task :install_ruby_build do
|
19
|
-
on roles(fetch(:rbenv_role)) do
|
20
|
-
ruby_build_path = "#{fetch(:rbenv_path)}/plugins/ruby-build"
|
21
|
-
|
22
|
-
if test "[ -d #{ruby_build_path} ]"
|
23
|
-
execute :git, "-C #{ruby_build_path} pull"
|
24
|
-
else
|
25
|
-
invoke 'rbenv:install'
|
26
|
-
execute :git, "clone #{RUBY_BUILD_REPO_URL} #{ruby_build_path}"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
desc 'Install ruby'
|
33
|
-
task :install_ruby do
|
34
|
-
on roles(fetch(:rbenv_role)) do
|
35
|
-
next if test "[ -d #{fetch(:rbenv_ruby_dir)} ]"
|
36
|
-
|
37
|
-
invoke 'rbenv:install_ruby_build'
|
38
|
-
execute :rbenv, "install #{fetch(:rbenv_ruby)}"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
|
43
|
-
desc 'Install bundler'
|
44
|
-
task :install_bundler do
|
45
|
-
on roles(fetch(:rbenv_role)) do
|
46
|
-
next if test :gem, :query, "-q -i -n ^bundler$ -v #{fetch(:rbenv_bundler)}"
|
47
|
-
|
48
|
-
invoke 'rbenv:install_ruby'
|
49
|
-
execute "echo 'gem: --no-document' >> ~/.gemrc"
|
50
|
-
execute :gem, :install, :bundler, "-v #{fetch(:rbenv_bundler)}"
|
7
|
+
fetch(:rbenv_map_bins).uniq.each do |cmd|
|
8
|
+
SSHKit.config.command_map.prefix[cmd].unshift("#{fetch(:rbenv_path)}/bin/rbenv exec")
|
51
9
|
end
|
52
10
|
end
|
53
|
-
|
54
|
-
|
55
|
-
desc 'Setup rbenv, ruby-build, ruby and bundler'
|
56
|
-
task :setup do
|
57
|
-
invoke 'rbenv:install_bundler'
|
58
|
-
end
|
59
11
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
namespace :rbenv do
|
2
|
+
desc 'Install bundler'
|
3
|
+
task :install_bundler do
|
4
|
+
on roles(fetch(:rbenv_role)) do
|
5
|
+
next if test :gem, "query -q -i -n ^bundler$ -v #{fetch(:rbenv_bundler)}"
|
6
|
+
|
7
|
+
execute "echo 'gem: --no-document' >> ~/.gemrc"
|
8
|
+
execute :gem, "install bundler -v #{fetch(:rbenv_bundler)}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
namespace :rbenv do
|
2
|
+
RBENV_REPO_URL = 'https://github.com/rbenv/rbenv.git'.freeze
|
3
|
+
RUBY_BUILD_REPO_URL = 'https://github.com/rbenv/ruby-build.git'.freeze
|
4
|
+
|
5
|
+
desc 'Install ruby dependencies'
|
6
|
+
task :install_ruby_deps do
|
7
|
+
on roles(fetch(:rbenv_role)) do
|
8
|
+
execute "#{fetch(:rbenv_ruby_deps_installler)} #{fetch(:rbenv_ruby_deps).join(' ')}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'Install rbenv'
|
13
|
+
task :install do
|
14
|
+
on roles(fetch(:rbenv_role)) do
|
15
|
+
next if test "[ -d #{fetch(:rbenv_path)} ]"
|
16
|
+
|
17
|
+
invoke 'rbenv:install_ruby_deps'
|
18
|
+
execute :git, "clone #{RBENV_REPO_URL} #{fetch(:rbenv_path)}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Install/Update ruby-build - rbenv plugin'
|
23
|
+
task :install_ruby_build do
|
24
|
+
on roles(fetch(:rbenv_role)) do
|
25
|
+
ruby_build_path = "#{fetch(:rbenv_path)}/plugins/ruby-build"
|
26
|
+
|
27
|
+
if test "[ -d #{ruby_build_path} ]"
|
28
|
+
execute :git, "-C #{ruby_build_path} pull"
|
29
|
+
else
|
30
|
+
execute :git, "clone #{RUBY_BUILD_REPO_URL} #{ruby_build_path}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'Install ruby'
|
36
|
+
task :install_ruby do
|
37
|
+
on roles(fetch(:rbenv_role)) do
|
38
|
+
next if test "[ -d #{fetch(:rbenv_ruby_dir)} ]"
|
39
|
+
|
40
|
+
invoke 'rbenv:install'
|
41
|
+
invoke 'rbenv:install_ruby_build'
|
42
|
+
execute :rbenv, "install #{fetch(:rbenv_ruby)}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capify-rbenv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Muhammad Usman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -54,12 +54,12 @@ files:
|
|
54
54
|
- bin/setup
|
55
55
|
- capify-rbenv.gemspec
|
56
56
|
- lib/capistrano/rbenv.rb
|
57
|
+
- lib/capistrano/rbenv/setup_bundler.rb
|
58
|
+
- lib/capistrano/rbenv/setup_ruby.rb
|
57
59
|
- lib/capistrano/rbenv/version.rb
|
58
|
-
- lib/capistrano/rbenv/with_hooks.rb
|
59
|
-
- lib/capistrano/rbenv/without_hooks.rb
|
60
|
-
- lib/capistrano/tasks/defaults.rake
|
61
|
-
- lib/capistrano/tasks/deploy.rake
|
62
60
|
- lib/capistrano/tasks/rbenv.rake
|
61
|
+
- lib/capistrano/tasks/setup_bundler.rake
|
62
|
+
- lib/capistrano/tasks/setup_ruby.rake
|
63
63
|
homepage: https://github.com/uxxman/capify-rbenv
|
64
64
|
licenses:
|
65
65
|
- MIT
|
@@ -1,59 +0,0 @@
|
|
1
|
-
namespace :load do
|
2
|
-
task :defaults do
|
3
|
-
default_deps = %w[
|
4
|
-
libpq-dev
|
5
|
-
libssl-dev
|
6
|
-
zlib1g-dev
|
7
|
-
libreadline-dev
|
8
|
-
build-essential
|
9
|
-
]
|
10
|
-
|
11
|
-
default_bins = %w[
|
12
|
-
gem
|
13
|
-
rake
|
14
|
-
ruby
|
15
|
-
rails
|
16
|
-
bundle
|
17
|
-
]
|
18
|
-
|
19
|
-
# Set ruby version to install using rbenv (Required)
|
20
|
-
# set :rbenv_ruby, '2.7.1'
|
21
|
-
|
22
|
-
# Set bundler version to install using rbenv (Required)
|
23
|
-
# set :rbenv_bundler, '2.1.4'
|
24
|
-
|
25
|
-
# Set role on which rbenv setup will apply
|
26
|
-
set_if_empty :rbenv_role, :app
|
27
|
-
|
28
|
-
# Set rbenv installation type (user/system)
|
29
|
-
set_if_empty :rbenv_type, :user
|
30
|
-
|
31
|
-
# Set rbenv installation path
|
32
|
-
set_if_empty :rbenv_path, fetch(:rbenv_type) == :system ? '/usr/local/rbenv' : '$HOME/.rbenv'
|
33
|
-
|
34
|
-
# Set rbenv directory for installed ruby versions
|
35
|
-
set_if_empty :rbenv_ruby_dir, "#{fetch(:rbenv_path)}/versions/#{fetch(:rbenv_ruby)}"
|
36
|
-
|
37
|
-
# Set list of custom dependencies to install
|
38
|
-
set_if_empty :rbenv_deps, default_deps.join(' ')
|
39
|
-
|
40
|
-
# Set dependencies installer
|
41
|
-
set_if_empty :rbenv_deps_installler, 'apt-get install -y'
|
42
|
-
|
43
|
-
# Set customs bins to create under rbenv
|
44
|
-
set_if_empty :rbenv_map_bins, default_bins
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
Capistrano::DSL.stages.each do |stage|
|
50
|
-
after stage, :rbenv_map_bins do
|
51
|
-
SSHKit.config.default_env.merge!({ rbenv_root: fetch(:rbenv_path), rbenv_version: fetch(:rbenv_ruby) })
|
52
|
-
SSHKit.config.command_map[:rbenv] = "#{fetch(:rbenv_path)}/bin/rbenv"
|
53
|
-
rbenv_prefix = fetch(:rbenv_prefix, "#{fetch(:rbenv_path)}/bin/rbenv exec")
|
54
|
-
|
55
|
-
fetch(:rbenv_map_bins).uniq.each do |command|
|
56
|
-
SSHKit.config.command_map.prefix[command.to_sym].unshift(rbenv_prefix)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|