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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82055cb61430917d0414d97abf253d26e360da3c975003f64e111e1f66e81b20
4
- data.tar.gz: 79bb5d6c88821086b93d1783a8e7e0d20484d088f2e2661fb82d14757d2f1c0b
3
+ metadata.gz: e5f8789b142f643a4d51ce7fefcbb84c961ba03cb0351e688aeffe4bb24bcc1b
4
+ data.tar.gz: 82fbbeef20d477e3398af9ac1a7150ffe66815db22b9174c5bf56fa3c346a87c
5
5
  SHA512:
6
- metadata.gz: 94c26ce0155b562fba6075312711c9db1cd6559d80e1111bb73b2c89661526be33e6fab689912bde301d8a0566680f68e793275fbfc39ec09fff8dcee6af6506
7
- data.tar.gz: 363dab56dd7f0f512949709bb9bfb172d5592294956adf74b87515d59615db31d76031f296bb4511b2e4a5f867d736951676d1dc4bb14389f35d1810bb08d005
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', '~> 1.0'
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 install (Required)
34
- set :rbenv_bundler, '2.1.4' # Set bundler version to install (Required)
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 :rbenv_deps, 'libsqlite3-dev', 'sqlite3'
60
+ append :rbenv_ruby_deps, 'libsqlite3-dev', 'sqlite3'
58
61
 
59
62
  # Set dependencies installer
60
- set :rbenv_deps_installler, 'apt-get install -y'
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 # Install rbenv
87
- rbenv:install_ruby # Install ruby
88
- rbenv:install_bundler # Install bundler gem
89
- rbenv:install_ruby_build # Install/Update ruby_build - rbenv plugin
90
- rbenv:setup # Setup rbenv, ruby-build, ruby and bundler
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
@@ -1 +1,33 @@
1
- require 'capistrano/rbenv/with_hooks'
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,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Rbenv
3
- VERSION = '4.0.1'.freeze
3
+ VERSION = '5.0.0'.freeze
4
4
  end
5
5
  end
@@ -1,59 +1,11 @@
1
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
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
- desc 'Install rbenv'
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.0.1
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-08 00:00:00.000000000 Z
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,3 +0,0 @@
1
- load File.expand_path('../tasks/defaults.rake', __dir__)
2
- load File.expand_path('../tasks/rbenv.rake', __dir__)
3
- load File.expand_path('../tasks/deploy.rake', __dir__)
@@ -1,2 +0,0 @@
1
- load File.expand_path('../tasks/defaults.rake', __dir__)
2
- load File.expand_path('../tasks/rbenv.rake', __dir__)
@@ -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
@@ -1,3 +0,0 @@
1
- Capistrano::DSL.stages.each do |stage|
2
- after stage, 'rbenv:setup'
3
- end