dora_web_upgrader 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e791400a872e203332bc43b8774a627e8fa0cba69c80d3e88362eb71e3ba0a94
4
- data.tar.gz: b389c54da5b3a731f8130c93b0914032e0cf72ef302356ff0b3952cc0febd028
3
+ metadata.gz: 1bd3bf840de8b4de445ff80c114f26907480ff26ff1db983bb5b5e70df0626ad
4
+ data.tar.gz: dec86c33da28054d4b4125a3404c53e853cc159398263b450684650e68e8d7ef
5
5
  SHA512:
6
- metadata.gz: 19e8ee7bc819aec30175b86872dcf0a38382d02893cb866129e2207f2b61fc9b47a37c43c929c1e359296e57b4c7b2f9215b1c9206edad906d85fed6d6f7b1c2
7
- data.tar.gz: 7c141b2c5401c4cd108fe32c8e8a70734e0e7af5a4bcf67cd30839fe004efc05e39e82e2f23bf881c62621bcc3991ce487c4b78ec529b172fd074f206290d627
6
+ metadata.gz: '05128108627afeba66ddeffc7805d3765854865693b52c8565ba7840fa89865bfc14f4df1b6e7a591bc9a2c4a0163dae7884359b01ba7ecf6783e9fa88d1cb81'
7
+ data.tar.gz: d4e3dd88d9229165bbb8c1d5e9cdc0089a5ebab3beef144025237a5b84191c57fcd08e3f7538065c457119d0837c52584fc23791bbb58a0ca6def04ba071f9b7
data/CHANGELOG.md ADDED
@@ -0,0 +1,25 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.0.0] -- 2023-01-20
9
+
10
+ - Require Ruby 3.1
11
+ - Require Rails 6-7.
12
+
13
+ ## [1.0.1] -- 2023-01-19
14
+
15
+ ### Fixed
16
+
17
+ - The e-mail report did not work reliably.
18
+ - Fixed "invalid authenticity token" errors
19
+ - Fixed several typos in the gemspec file.
20
+
21
+ ## [1.0.0] -- 2021-05-13
22
+
23
+ - Initial release.
24
+
25
+ [1.0.0]: https://github.com/bovender/dora_web_upgrader/releases/tag/v1.0.0
data/README.md CHANGED
@@ -20,7 +20,7 @@ e-mail is also send, but no further action is triggered.
20
20
  Add this line to your application's Gemfile:
21
21
 
22
22
  ```ruby
23
- gem 'dora_web_upgrader', github: 'bovender/dora_web_upgrader', branch: 'main'
23
+ gem 'dora_web_upgrader', '~> 1.0'
24
24
  ```
25
25
 
26
26
  And then execute:
@@ -74,7 +74,7 @@ in the Rails container and run the tests like so:
74
74
 
75
75
  ```bash
76
76
  $ cd dora_web_upgrader/
77
- $ docker-compose -f ../dora/docker-compose.yml up -d
77
+ $ docker compose -f ../dora/docker-compose.yml --env-file .env up -d
78
78
  Creating network "dora_default" with the default driver
79
79
  Creating dora_selenium_1 ... done
80
80
  Creating dora_db_1 ... done
@@ -94,6 +94,11 @@ Finished in 0.180743s, 33.1962 runs/s, 94.0560 assertions/s.
94
94
  6 runs, 17 assertions, 0 failures, 0 errors, 0 skips
95
95
  ```
96
96
 
97
+ Note that with recent versions of docker compose, the `.env` file is no longer
98
+ read from the current working directory, but from the directory where the
99
+ `docker-compose.yml` file resides. Therefore, you must add the `--env-file`
100
+ option.
101
+
97
102
  (There are several containers included in the `docker-compose.yml` file that
98
103
  are not needed to test DoraWebUpgrader, but are part of [dora].)
99
104
 
@@ -2,22 +2,18 @@
2
2
 
3
3
  module DoraWebUpgrader
4
4
  class UpgradeController < ApplicationController
5
+ protect_from_forgery with: :null_session
5
6
  layout false
6
7
 
7
8
  def upgrade
8
9
  secret = DoraWebUpgrader.config.secret
9
- raise 'DoraWebUpgrader.secret is not configured!' if secret.blank?
10
+ raise 'DoraWebUpgrader.config.secret is not configured!' if secret.blank?
10
11
 
11
12
  @payload = JSON.parse(request.raw_post)
12
- if @payload['secret'] == secret
13
- @message = 'ok'
14
- UpgradeJob.perform_later
15
- else
16
- @message = 'invalid secret'
17
- end
18
-
19
- UpgradeMailer.upgrade_started(@message, @payload).deliver_later
20
-
13
+ ok = @payload['secret'] == secret
14
+ @message = ok ? 'ok' : 'invalid secret'
15
+ UpgradeMailer.upgrade_started(@message, @payload).deliver_now
16
+ UpgradeJob.perform_now if ok
21
17
  render json: { message: @message }
22
18
  end
23
19
  end
@@ -8,16 +8,17 @@ module DoraWebUpgrader
8
8
  # Do not upgrade developement environemnts as this might inadvertently
9
9
  # overwrite uncommitted changes.
10
10
  if %w[production staging].include? Rails.env
11
- logger.warn '******** PERFORMING APPLICATION UPGRADE ********'
12
- output = `/usr/local/bin/upgrade-app.sh 2>&1`
13
- logger.warn output
14
- result = $CHILD_STATUS.exitstatus
11
+ logger.warn '******** DoraWebUpgrader: PERFORMING APPLICATION UPGRADE ********'
12
+ tempfile = Tempfile.new 'dora_web_upgrader_'
13
+ begin
14
+ tempfile.close
15
+ exec "/usr/local/bin/upgrade-app.sh '#{tempfile.path}'"
16
+ ensure
17
+ tempfile.unlink
18
+ end
15
19
  else
16
- output = "Rails environment: #{Rails.env} -- not upgrading..."
17
- logger.warn output
18
- result = -1
20
+ logger.warn "Rails environment: #{Rails.env} -- not upgrading..."
19
21
  end
20
- UpgradeMailer.upgrade_performed(output, result).deliver_now
21
22
  end
22
23
  end
23
24
  end
@@ -0,0 +1,19 @@
1
+ module DoraWebUpgrader
2
+ # Sends an e-mail report of the upgrade process
3
+ # This is invoked by Dora's upgrade-app.sh script via rails runner.
4
+ class Reporter
5
+ class << self
6
+ def run(message, log_file)
7
+ log = File.read(log_file).sanitize
8
+ message = message.sanitize
9
+ UpgradeMailer.upgrade_performed(message, log).deliver_now
10
+ end
11
+
12
+ private
13
+
14
+ def sanitize(str)
15
+ str.to_s.html_safe
16
+ end
17
+ end
18
+ end
19
+ end
@@ -9,17 +9,9 @@ module DoraWebUpgrader
9
9
  mail subject: "[#{app_identifier} #{Rails.env}] upgrade started"
10
10
  end
11
11
 
12
- def upgrade_performed(output, result)
13
- @output = output
14
- s = case result
15
- when -1
16
- 'dry run'
17
- when 0
18
- 'succeeded'
19
- else
20
- 'failed'
21
- end
22
- mail subject: "[#{app_identifier} #{Rails.env}] upgrade #{s}"
12
+ def upgrade_performed(message, log)
13
+ @message, @log = message, log
14
+ mail subject: "[#{app_identifier} #{Rails.env}] upgrade: #{message}"
23
15
  end
24
16
 
25
17
  private
@@ -1,5 +1,7 @@
1
1
  # Upgrade performed
2
2
 
3
+ <%= @message %>
4
+
3
5
  ```bash
4
- <%= @output %>
6
+ <%= @log %>
5
7
  ```
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DoraWebUpgrader
4
- VERSION = '1.0.0'
4
+ VERSION = '2.0.0'
5
5
  end
metadata CHANGED
@@ -1,36 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dora_web_upgrader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Kraus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-13 00:00:00.000000000 Z
11
+ date: 2023-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '6.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '6.0'
27
- description: Make use of web hooks that are triggered by pushing codeto a repository
28
- and have your application taking care ofupgrading itself.
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8.0'
33
+ description: Make use of web hooks that are triggered by pushing code to a repository
34
+ and have your application taking care of upgrading itself.
29
35
  email: bovender@bovender.de
30
36
  executables: []
31
37
  extensions: []
32
38
  extra_rdoc_files: []
33
39
  files:
40
+ - CHANGELOG.md
34
41
  - MIT-LICENSE
35
42
  - README.md
36
43
  - Rakefile
@@ -40,6 +47,7 @@ files:
40
47
  - app/controllers/dora_web_upgrader/upgrade_controller.rb
41
48
  - app/jobs/dora_web_upgrader/application_job.rb
42
49
  - app/jobs/dora_web_upgrader/upgrade_job.rb
50
+ - app/lib/reporter.rb
43
51
  - app/mailers/dora_web_upgrader/application_mailer.rb
44
52
  - app/mailers/dora_web_upgrader/upgrade_mailer.rb
45
53
  - app/views/dora_web_upgrader/upgrade_mailer/upgrade_performed.text.erb
@@ -53,14 +61,14 @@ files:
53
61
  - lib/dora_web_upgrader/version.rb
54
62
  - lib/generators/dora_web_upgrader/install_generator.rb
55
63
  - lib/generators/dora_web_upgrader/templates/config/initializers/dora_web_upgrader.rb
56
- homepage: https://gibhub.com/bovender/dora_web_upgrader
64
+ homepage: https://github.com/bovender/dora_web_upgrader
57
65
  licenses:
58
66
  - MIT
59
67
  metadata:
60
68
  allowed_push_host: https://rubygems.org
61
- homepage_uri: https://gibhub.com/bovender/dora_web_upgrader
62
- source_code_uri: https://gibhub.com/bovender/dora_web_upgrader
63
- changelog_uri: https://gibhub.com/bovender/dora_web_upgrader/blob/main/CHANGELOG.md
69
+ homepage_uri: https://github.com/bovender/dora_web_upgrader
70
+ source_code_uri: https://github.com/bovender/dora_web_upgrader
71
+ changelog_uri: https://github.com/bovender/dora_web_upgrader/blob/main/CHANGELOG.md
64
72
  post_install_message:
65
73
  rdoc_options: []
66
74
  require_paths:
@@ -69,14 +77,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
77
  requirements:
70
78
  - - ">="
71
79
  - !ruby/object:Gem::Version
72
- version: '2.6'
80
+ version: '3.1'
73
81
  required_rubygems_version: !ruby/object:Gem::Requirement
74
82
  requirements:
75
83
  - - ">="
76
84
  - !ruby/object:Gem::Version
77
85
  version: '0'
78
86
  requirements: []
79
- rubygems_version: 3.1.2
87
+ rubygems_version: 3.3.5
80
88
  signing_key:
81
89
  specification_version: 4
82
90
  summary: Dora Web Upgrader is a Rails engine that facilitates upgrading a dora-powered