modulorails 1.0.0 → 1.1.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 +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +239 -17
- data/Appraisals +6 -6
- data/CHANGELOG.md +19 -0
- data/app/helpers/modulorails/application_helper.rb +4 -2
- data/gemfiles/rails_52.gemfile +5 -5
- data/gemfiles/rails_60.gemfile +5 -5
- data/gemfiles/rails_61.gemfile +5 -5
- data/gemfiles/rails_70.gemfile +5 -5
- data/lib/generators/modulorails/docker/docker_generator.rb +10 -1
- data/lib/generators/modulorails/docker/templates/Dockerfile.prod.tt +4 -0
- data/lib/generators/modulorails/docker/templates/Dockerfile.tt +3 -0
- data/lib/generators/modulorails/docker/templates/config/database.yml.tt +1 -1
- data/lib/generators/modulorails/docker/templates/docker-compose.yml.tt +6 -1
- data/lib/generators/modulorails/docker/templates/entrypoints/docker-entrypoint.sh.tt +2 -2
- data/lib/generators/modulorails/gitlabci/gitlabci_generator.rb +4 -2
- data/lib/generators/modulorails/healthcheck/health_check_generator.rb +8 -5
- data/lib/generators/modulorails/rubocop/rubocop_generator.rb +8 -6
- data/lib/generators/modulorails/self_update/self_update_generator.rb +6 -3
- data/lib/generators/modulorails/service/service_generator.rb +3 -1
- data/lib/modulorails/configuration.rb +4 -0
- data/lib/modulorails/data.rb +113 -62
- data/lib/modulorails/error_data.rb +2 -0
- data/lib/modulorails/errors/invalid_format_error.rb +2 -0
- data/lib/modulorails/errors/invalid_value_error.rb +2 -0
- data/lib/modulorails/railtie.rb +5 -1
- data/lib/modulorails/services/base_service.rb +20 -18
- data/lib/modulorails/services/logs_for_method_service.rb +1 -0
- data/lib/modulorails/success_data.rb +2 -0
- data/lib/modulorails/validators/database_configuration.rb +19 -9
- data/lib/modulorails/version.rb +3 -1
- data/lib/modulorails.rb +40 -33
- data/modulorails.gemspec +8 -7
- metadata +32 -33
- data/lib/generators/modulorails/gitlabci/templates/config/database-ci.yml.tt +0 -8
data/lib/modulorails.rb
CHANGED
@@ -17,11 +17,13 @@ require 'modulorails/services/services'
|
|
17
17
|
# The entry point of the gem. It exposes the configurator, the gathered data and the method to
|
18
18
|
# send those data to the intranet.
|
19
19
|
module Modulorails
|
20
|
+
|
20
21
|
# Author: Matthieu 'ciappa_m' Ciappara
|
21
22
|
# The error class of the gem. Allow to identify all functional errors raised by the gem.
|
22
23
|
class Error < StandardError; end
|
23
24
|
|
24
25
|
class << self
|
26
|
+
|
25
27
|
# Useful to update the configuration
|
26
28
|
attr_writer :configuration
|
27
29
|
|
@@ -73,38 +75,38 @@ module Modulorails
|
|
73
75
|
# If no endpoint and/or no API key is configured, it is impossible to send the data to the
|
74
76
|
# intranet and thus we raise an error: it is the only error we want to raise since it goes
|
75
77
|
# against one of the main goals of the gem and the gem's user is responsible.
|
76
|
-
|
77
|
-
# Define the headers of the request ; sending JSON and API key to authenticate the gem on
|
78
|
-
# the intranet
|
79
|
-
headers = {
|
80
|
-
'Content-Type' => 'application/json', 'X-MODULORAILS-TOKEN' => configuration.api_key
|
81
|
-
}
|
82
|
-
|
83
|
-
# Define the JSON body of the request
|
84
|
-
body = data.to_params.to_json
|
85
|
-
|
86
|
-
# Prevent HTTParty to raise error and crash the server in dev
|
87
|
-
begin
|
88
|
-
# Post to the configured endpoint on the Intranet
|
89
|
-
response = HTTParty.post(configuration.endpoint, headers: headers, body: body)
|
90
|
-
|
91
|
-
# According to the API specification, on a "Bad request" response, the server explicits what
|
92
|
-
# went wrong with an `errors` field. We do not want to raise since the gem's user is not
|
93
|
-
# (necessarily) responsible for the error but we still need to display it somewhere to warn
|
94
|
-
# the user something went wrong.
|
95
|
-
puts("[Modulorails] Error: #{response['errors'].join(', ')}") if response.code == 400
|
96
|
-
|
97
|
-
# Return the response to allow users to do some more
|
98
|
-
response
|
99
|
-
rescue StandardError => e
|
100
|
-
# Still need to notify the user
|
101
|
-
puts("[Modulorails] Error: Could not post to #{configuration.endpoint}")
|
102
|
-
puts e.message
|
103
|
-
nil
|
104
|
-
end
|
105
|
-
else
|
78
|
+
unless configuration.endpoint && configuration.api_key
|
106
79
|
raise Error.new('No endpoint or api key')
|
107
80
|
end
|
81
|
+
|
82
|
+
# Define the headers of the request ; sending JSON and API key to authenticate the gem on
|
83
|
+
# the intranet
|
84
|
+
headers = {
|
85
|
+
'Content-Type' => 'application/json', 'X-MODULORAILS-TOKEN' => configuration.api_key
|
86
|
+
}
|
87
|
+
|
88
|
+
# Define the JSON body of the request
|
89
|
+
body = data.to_params.to_json
|
90
|
+
|
91
|
+
# Prevent HTTParty to raise error and crash the server in dev
|
92
|
+
begin
|
93
|
+
# Post to the configured endpoint on the Intranet
|
94
|
+
response = HTTParty.post(configuration.endpoint, headers: headers, body: body)
|
95
|
+
|
96
|
+
# According to the API specification, on a "Bad request" response, the server explicits what
|
97
|
+
# went wrong with an `errors` field. We do not want to raise since the gem's user is not
|
98
|
+
# (necessarily) responsible for the error but we still need to display it somewhere to warn
|
99
|
+
# the user something went wrong.
|
100
|
+
puts("[Modulorails] Error: #{response['errors'].join(', ')}") if response.code == 400
|
101
|
+
|
102
|
+
# Return the response to allow users to do some more
|
103
|
+
response
|
104
|
+
rescue StandardError => e
|
105
|
+
# Still need to notify the user
|
106
|
+
puts("[Modulorails] Error: Could not post to #{configuration.endpoint}")
|
107
|
+
puts e.message
|
108
|
+
nil
|
109
|
+
end
|
108
110
|
end
|
109
111
|
|
110
112
|
# @author Matthieu 'ciappa_m' Ciappara
|
@@ -112,7 +114,7 @@ module Modulorails
|
|
112
114
|
# Generate a CI/CD template unless it was already done.
|
113
115
|
# The check is done using a 'keepfile'.
|
114
116
|
def generate_ci_template
|
115
|
-
return if File.
|
117
|
+
return if File.exist?(Rails.root.join('.modulorails-gitlab-ci'))
|
116
118
|
|
117
119
|
Modulorails::GitlabciGenerator.new([], {}, {}).invoke_all
|
118
120
|
end
|
@@ -138,7 +140,10 @@ module Modulorails
|
|
138
140
|
# Check the last version of Modulorails available on rubygems and update if there was a
|
139
141
|
# publication
|
140
142
|
def self_update
|
141
|
-
|
143
|
+
unless configuration.no_auto_update
|
144
|
+
Modulorails::SelfUpdateGenerator.new([], {},
|
145
|
+
{}).invoke_all
|
146
|
+
end
|
142
147
|
rescue StandardError => e
|
143
148
|
puts("[Modulorails] An error occured: #{e.class} - #{e.message}")
|
144
149
|
end
|
@@ -148,7 +153,7 @@ module Modulorails
|
|
148
153
|
# Generate a health_check configuration unless it was already done.
|
149
154
|
# The check is done using a 'keepfile'.
|
150
155
|
def generate_healthcheck_template
|
151
|
-
return if File.
|
156
|
+
return if File.exist?(Rails.root.join('.modulorails-health_check'))
|
152
157
|
|
153
158
|
Modulorails::HealthCheckGenerator.new([], {}, {}).invoke_all
|
154
159
|
end
|
@@ -159,5 +164,7 @@ module Modulorails
|
|
159
164
|
def generate_rubocop_template
|
160
165
|
Modulorails::RubocopGenerator.new([], {}, {}).invoke_all
|
161
166
|
end
|
167
|
+
|
162
168
|
end
|
169
|
+
|
163
170
|
end
|
data/modulorails.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.email = ['ciappa_m@modulotech.fr']
|
8
8
|
|
9
9
|
spec.summary = 'Common base for Ruby on Rails projects at Modulotech'
|
10
|
-
spec.description
|
10
|
+
spec.description = <<~END_OF_TEXT
|
11
11
|
Modulorails is the common base for the Ruby on Rails project at Modulotech
|
12
12
|
(https://www.modulotech.fr/).
|
13
13
|
|
@@ -24,19 +24,20 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
# Specify which files should be added to the gem when it is released.
|
26
26
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
|
-
spec.files
|
27
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
28
28
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
29
29
|
end
|
30
30
|
spec.require_paths = ['lib']
|
31
31
|
|
32
|
-
spec.add_runtime_dependency 'railties', '>= 4.2.0'
|
33
32
|
spec.add_runtime_dependency 'git', '~> 1.7', '>= 1.7.0'
|
34
|
-
spec.add_runtime_dependency 'httparty'
|
35
|
-
spec.add_runtime_dependency 'i18n'
|
36
33
|
spec.add_runtime_dependency 'health_check', '~> 3.1'
|
37
|
-
spec.add_runtime_dependency '
|
38
|
-
spec.add_runtime_dependency '
|
34
|
+
spec.add_runtime_dependency 'httparty', '>= 0.13.3'
|
35
|
+
spec.add_runtime_dependency 'i18n', '>= 0.9.5'
|
36
|
+
spec.add_runtime_dependency 'railties', '>= 4.2.0'
|
37
|
+
spec.add_runtime_dependency 'rubocop', '>= 1.28.2'
|
38
|
+
spec.add_runtime_dependency 'rubocop-rails', '>= 2.14.2'
|
39
39
|
|
40
40
|
spec.add_development_dependency 'activerecord', '>= 4.2.0'
|
41
41
|
spec.add_development_dependency 'appraisal'
|
42
|
+
# spec.metadata['rubygems_mfa_required'] = 'true'
|
42
43
|
end
|
metadata
CHANGED
@@ -1,119 +1,119 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modulorails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthieu Ciappara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: git
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.7.0
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.7'
|
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
|
-
version:
|
29
|
+
version: 1.7.0
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.7'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: health_check
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.7.0
|
34
37
|
- - "~>"
|
35
38
|
- !ruby/object:Gem::Version
|
36
|
-
version: '1
|
39
|
+
version: '3.1'
|
37
40
|
type: :runtime
|
38
41
|
prerelease: false
|
39
42
|
version_requirements: !ruby/object:Gem::Requirement
|
40
43
|
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.7.0
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '1
|
46
|
+
version: '3.1'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: httparty
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 0.13.3
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
60
|
+
version: 0.13.3
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: i18n
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
67
|
+
version: 0.9.5
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
74
|
+
version: 0.9.5
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
76
|
+
name: railties
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: 4.2.0
|
82
82
|
type: :runtime
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
88
|
+
version: 4.2.0
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rubocop
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- -
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 1.
|
95
|
+
version: 1.28.2
|
96
96
|
type: :runtime
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- -
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 1.
|
102
|
+
version: 1.28.2
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rubocop-rails
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 2.
|
109
|
+
version: 2.14.2
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- -
|
114
|
+
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: 2.
|
116
|
+
version: 2.14.2
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: activerecord
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -195,7 +195,6 @@ files:
|
|
195
195
|
- lib/generators/modulorails/gitlabci/gitlabci_generator.rb
|
196
196
|
- lib/generators/modulorails/gitlabci/templates/.gitlab-ci.yml.tt
|
197
197
|
- lib/generators/modulorails/gitlabci/templates/.modulorails-gitlab-ci
|
198
|
-
- lib/generators/modulorails/gitlabci/templates/config/database-ci.yml.tt
|
199
198
|
- lib/generators/modulorails/healthcheck/health_check_generator.rb
|
200
199
|
- lib/generators/modulorails/healthcheck/templates/.modulorails-health_check
|
201
200
|
- lib/generators/modulorails/healthcheck/templates/config/initializers/health_check.rb.tt
|
@@ -242,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
241
|
- !ruby/object:Gem::Version
|
243
242
|
version: '0'
|
244
243
|
requirements: []
|
245
|
-
rubygems_version: 3.0.3
|
244
|
+
rubygems_version: 3.0.3.1
|
246
245
|
signing_key:
|
247
246
|
specification_version: 4
|
248
247
|
summary: Common base for Ruby on Rails projects at Modulotech
|