ndr_dev_support 7.2.6 → 7.3.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: 76f81b66bcf17c0e5e413814393d16bc99dd60dd8da6cde93ce57def7cb35e6a
4
- data.tar.gz: ceb801fe0ccbd025342f6a50d0ae7c079be834624339744862a9b6ce010a61a5
3
+ metadata.gz: 41d7ba2652d9fa563d40304d74636a120fabce678f2dac3247be956ab448e477
4
+ data.tar.gz: 52be1d6408975a0777733c5ab9007098ffe2128360b00f13857c591ac051a0db
5
5
  SHA512:
6
- metadata.gz: 27ca7a80b76b603d216e4d816aa73f4bfce98cb5fa148502c89df109bea215ed1ad97f94770405b049f2bbf057139cd32901c9019d71891faba069fe298254db
7
- data.tar.gz: a174a2fb75a30a8a716425ae6a9e7892a73827f8f2993df87bb33d4b5226651f38f5fba0cb14101db3aa5b603ed61c40fa8cdfca080b3cea7c30e35ea63ce022
6
+ metadata.gz: d83ee219968cfbffb0f3b2eb9615442c595d6013ba1e0c21f04421197cc68dd94df9338e152922b1e39a566dd4ce7a35543c9672eb6b21548f3f80688b82610a
7
+ data.tar.gz: fc6eb48554bd132c6bc9bf852ca5d708baaae03c61e36a0dfd8880665d3859418d3ba28a179939a801ba9262c956c41b5db06e5c8f11fd904da7870499c5138f
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  ## [Unreleased]
2
2
  *no unreleased changes*
3
3
 
4
+ ## 7.3.0 / 2024-12-19
5
+ ### Added
6
+ * Capistrano: install rbenv and ruby from /opt/rbenv.tar.gz or vendor/rbenv/
7
+
4
8
  ## 7.2.6 / 2024-11-13
5
9
  ### Fixed
6
10
  * Support Rails 7.2, 8.0, Ruby 3.3
@@ -4,8 +4,8 @@ Capistrano::Configuration.instance(:must_exist).load do
4
4
  task :configure_assets do
5
5
  asset_script = fetch(:asset_script, <<~SHELL)
6
6
  set -e
7
- ruby -ryaml -e "puts YAML.dump('production' => { 'secret_key_base' => 'compile_me' })" > config/secrets.yml
8
- ruby -ryaml -e "puts YAML.dump('production' => { 'adapter' => 'placeholder' })" > config/database.yml
7
+ ruby -e "require 'yaml'; puts YAML.dump('production' => { 'secret_key_base' => 'compile_me' })" > config/secrets.yml
8
+ ruby -e "require 'yaml'; puts YAML.dump('production' => { 'adapter' => 'placeholder' })" > config/database.yml
9
9
  RAILS_ENV=production bundle exec rake assets:clobber assets:precompile
10
10
  rm config/secrets.yml config/database.yml
11
11
  SHELL
@@ -0,0 +1,103 @@
1
+ Capistrano::Configuration.instance(:must_exist).load do
2
+ namespace :ndr_dev_support do
3
+ desc <<~DESC
4
+ Ensure that the required ruby version is installed.
5
+
6
+ This can be installed from /opt/rbenv.tar.gz (first installation only) or vendor/rbenv/
7
+
8
+ To place an offline copy of rbenv in /opt/rbenv.tar.gz
9
+ For ruby 3.1.6, run the following commands:
10
+ $ mkdir clone_rbenv
11
+ $ git clone https://github.com/rbenv/rbenv.git clone_rbenv/.rbenv
12
+ $ git clone https://github.com/rbenv/ruby-build.git clone_rbenv/.rbenv/plugins/ruby-build
13
+ $ mkdir clone_rbenv/.rbenv/cache
14
+ $ (cd clone_rbenv/.rbenv/cache; curl -O https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.6.tar.gz)
15
+ $ (cd clone_rbenv; rm -f ../rbenv.tar.gz; tar czf ../rbenv.tar.gz .rbenv)
16
+ $ rm -rf clone_rbenv
17
+ $ scp -p rbenv.tar.gz app-server:/opt/rbenv.tar.gz
18
+
19
+ To add rbenv, ruby-build and additional ruby versions to the application vendor directory
20
+ For ruby 3.2.6:
21
+ $ mkdir clone_rbenv
22
+ $ git clone https://github.com/rbenv/rbenv.git clone_rbenv/.rbenv
23
+ $ mkdir -p vendor/rbenv; rm -f vendor/rbenv/rbenv.tar.gz
24
+ $ tar czf vendor/rbenv/rbenv.tar.gz -C clone_rbenv .rbenv
25
+ $ rm -rf clone_rbenv
26
+ $ mkdir clone_ruby-build
27
+ $ git clone https://github.com/rbenv/ruby-build.git clone_ruby-build/ruby-build
28
+ $ mkdir -p vendor/rbenv/cache; rm -f vendor/rbenv/ruby-build.tar.gz
29
+ $ tar czf vendor/rbenv/ruby-build.tar.gz -C clone_ruby-build ruby-build
30
+ $ rm -rf clone_ruby-build
31
+ $ (cd vendor/rbenv/cache; curl -O https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.tar.gz)
32
+ $ git add vendor/rbenv/{rbenv,ruby-build}.tar.gz vendor/rbenv/cache/*
33
+ DESC
34
+ task :install_ruby do
35
+ version = fetch(:ruby)
36
+ # Note that ruby 3.1.x on CentOS 7 generally installs successfully but then reports an error:
37
+ # ERROR: While executing gem ... (URI::InvalidURIError)
38
+ # bad URI(is not URI?): "bundler\r"
39
+ # For this reason, we ignore the exit status, and run our own test.
40
+ #
41
+ # For some reason, SSH keepalive options have no effect with capistrano 2 and net-ssh 7.
42
+ # So we run a poor-man's keepalive, because this installation can take over 10 minutes
43
+ # and some of our SSH servers disconnect inactive sessions after 5 minutes.
44
+ # We have a keepalive time limit of 40 minutes in case the installation fails unexpectedly.
45
+ #
46
+ # We remove ~/.rbenv paths from capistrano-defined PATH when running `rbenv init`
47
+ # so that it knows the path is needed in ~/.bash_profile
48
+ #
49
+ # We use latest_release: this is broadly well-defined, and will point to the in-progress
50
+ # release if we're part way through a deployment, or the most recent release if run
51
+ # after a deployment has happened, or be blank if attempted after cap deploy:setup
52
+ run <<~SHELL
53
+ set -e;
54
+ if ! rbenv versions --bare 2> /dev/null | grep -q ^#{Regexp.escape(version)}$; then
55
+ echo Installing ruby #{version};
56
+ { sleep 10; for i in `seq 1 80`; do echo -n '.'; sleep 30; done & } 2> /dev/null;
57
+ sudo -i -n -u #{fetch(:application_user)} sh -c "
58
+ if [ ! -e .rbenv ] && [ -e /opt/rbenv.tar.gz ]; then
59
+ tar xf /opt/rbenv.tar.gz .rbenv;
60
+ PATH=\\`echo \\"\\$PATH\\"|sed -e \\"s_[^:=]*/[.]rbenv[^:]*:__g\\"\\` .rbenv/bin/rbenv init bash;
61
+ fi;
62
+ if [ ! -e .rbenv ] && [ -f #{latest_release}/vendor/rbenv/rbenv.tar.gz ]; then
63
+ tar xf #{latest_release}/vendor/rbenv/rbenv.tar.gz .rbenv;
64
+ PATH=\\`echo \\"\\$PATH\\"|sed -e \\"s_[^:=]*/[.]rbenv[^:]*:__g\\"\\` .rbenv/bin/rbenv init bash;
65
+ fi;
66
+ if [ ! -e .rbenv ]; then
67
+ echo rbenv not installed: aborting;
68
+ else
69
+ if [ -d #{latest_release}/vendor/rbenv/cache ] && [ -n \\"\\`ls #{latest_release}/vendor/rbenv/cache\\`\\" ]; then
70
+ mkdir -p .rbenv/cache/;
71
+ cp -nvp #{latest_release}/vendor/rbenv/cache/* .rbenv/cache/;
72
+ fi;
73
+ if [ -f #{latest_release}/vendor/rbenv/ruby-build.tar.gz ]; then
74
+ mkdir -p .rbenv/plugins/;
75
+ tar xf #{latest_release}/vendor/rbenv/ruby-build.tar.gz -C .rbenv/plugins/ ruby-build;
76
+ fi;
77
+ eval \\"\\$(.rbenv/bin/rbenv init - --no-rehash bash)\\";
78
+ export TMPDIR=\\`mktemp -d \\"\\$HOME\\"/rbenv_tmp_XXXX\\`;
79
+ if rbenv install #{version} --skip-existing 2>&1; then
80
+ RBENV_VERSION=#{version} ruby --version;
81
+ rm -rf \\"\\`printenv TMPDIR\\`\\";
82
+ rbenv global #{version};
83
+ fi;
84
+ fi;
85
+ ";
86
+ { kill % && wait; } 2> /dev/null;
87
+ set -e;
88
+ if [ "`RBENV_VERSION=#{version} gem list --exact --installed bundler`" == "true" ]; then
89
+ echo 'Please ignore the following error above:';
90
+ echo '> ERROR: While executing gem ... (URI::InvalidURIError)';
91
+ echo '> bad URI(is not URI?): "bundler\\r"';
92
+ echo Successfully installed ruby #{version};
93
+ else
94
+ echo ERROR: Failure installing ruby #{version}: aborting;
95
+ exit 1;
96
+ fi;
97
+ fi
98
+ SHELL
99
+ end
100
+ end
101
+
102
+ before 'bundle:install', 'ndr_dev_support:install_ruby'
103
+ end
@@ -2,6 +2,7 @@ require 'rainbow'
2
2
 
3
3
  # Discrete bits of functionality we use automatically:
4
4
  require_relative 'assets'
5
+ require_relative 'install_ruby'
5
6
  require_relative 'restart'
6
7
  require_relative 'revision_logger'
7
8
  require_relative 'ruby_version'
@@ -172,7 +173,7 @@ Capistrano::Configuration.instance(:must_exist).load do
172
173
  end
173
174
 
174
175
  def release_config_for(env)
175
- branches = YAML.load_file('config/deployments.yml')
176
+ branches = YAML.safe_load_file('config/deployments.yml', permitted_classes: [Date])
176
177
  branches.fetch(env.to_s) { raise 'Unknown release branch!' }
177
178
  end
178
179
 
@@ -2,5 +2,5 @@
2
2
  # This defines the NdrDevSupport version. If you change it, rebuild and commit the gem.
3
3
  # Use "rake build" to build the gem, see rake -T for all bundler rake tasks (and our own).
4
4
  module NdrDevSupport
5
- VERSION = '7.2.6'
5
+ VERSION = '7.3.0'
6
6
  end
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency 'pry'
26
26
 
27
27
  # Audit dependencies:
28
+ spec.add_dependency 'csv'
28
29
  spec.add_dependency 'highline', '>= 1.6.0'
29
30
 
30
31
  # Rubocop dependencies:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndr_dev_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.6
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-13 00:00:00.000000000 Z
11
+ date: 2024-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: csv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: highline
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -395,6 +409,7 @@ files:
395
409
  - lib/minitest/rake_ci_plugin.rb
396
410
  - lib/ndr_dev_support.rb
397
411
  - lib/ndr_dev_support/capistrano/assets.rb
412
+ - lib/ndr_dev_support/capistrano/install_ruby.rb
398
413
  - lib/ndr_dev_support/capistrano/ndr_model.rb
399
414
  - lib/ndr_dev_support/capistrano/restart.rb
400
415
  - lib/ndr_dev_support/capistrano/revision_logger.rb