dora_web_upgrader 1.0.0 → 2.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: 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