jets 5.0.14 → 5.0.15
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/CHANGELOG.md +8 -0
- data/jets.gemspec +4 -1
- data/lib/jets/builders/ruby_packager.rb +15 -15
- data/lib/jets/cfn/template.rb +9 -5
- data/lib/jets/cfn/upload.rb +23 -23
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +2 -0
- metadata +46 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 793eaf384ef1ef578d47e79c46a137f04ff2734a8dbde8219a2da73e6d4a1750
|
4
|
+
data.tar.gz: d6d253a3cebc683cb876f513c042bdf443d73adc5b4d61b130e807234bd2c06c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2546975115d9471875543b795c480c85086bad4d04ecfb827b56e08afd4626f669d339919e74a051d516e088c87f157b8c40cffbe3896d233fc511714e4fceb5
|
7
|
+
data.tar.gz: 2a964324f5596564081fc61741ae3c992395dafd02fe841d2dae31488398a9d6c765b7d300869154202842f102f35d6dae50a179634b9b62c5887fa9b3c82be7
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [5.0.15] - 2025-10-11
|
7
|
+
- update jets-api 0.2.1 dependency
|
8
|
+
- require logger super early
|
9
|
+
- require logger and mutex_m dependency
|
10
|
+
- add activemodel 7.0.8 dependency
|
11
|
+
- update to transfer manager upload file to remove deprecation warning
|
12
|
+
- update GEM_REGEXP match -gnu for Gemfile.lock rewrite
|
13
|
+
|
6
14
|
## [5.0.14] - 2024-05-20
|
7
15
|
- [#719](https://github.com/rubyonjets/jets/pull/719) Support for s3 event sns configuration
|
8
16
|
- [#722](https://github.com/rubyonjets/jets/pull/722) Sets config.cache_classes to true in test env
|
data/jets.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_dependency "actionmailer", "~> 7.0.8"
|
29
29
|
spec.add_dependency "actionpack", "~> 7.0.8"
|
30
30
|
spec.add_dependency "actionview", "~> 7.0.8"
|
31
|
+
spec.add_dependency "activemodel", "~> 7.0.8"
|
31
32
|
spec.add_dependency "activerecord", "~> 7.0.8"
|
32
33
|
spec.add_dependency "activesupport", "~> 7.0.8"
|
33
34
|
spec.add_dependency "railties", "~> 7.0.8" # for ActiveRecord database_tasks.rb
|
@@ -52,12 +53,14 @@ Gem::Specification.new do |spec|
|
|
52
53
|
spec.add_dependency "dsl_evaluator", ">= 0.3.0" # for DslEvaluator.print_code
|
53
54
|
spec.add_dependency "gems"
|
54
55
|
spec.add_dependency "hashie"
|
55
|
-
spec.add_dependency "
|
56
|
+
spec.add_dependency "logger"
|
57
|
+
spec.add_dependency "jets-api", ">= 0.2.1"
|
56
58
|
spec.add_dependency "jets-git"
|
57
59
|
spec.add_dependency "jets-html-sanitizer"
|
58
60
|
spec.add_dependency "kramdown"
|
59
61
|
spec.add_dependency "memoist"
|
60
62
|
spec.add_dependency "mini_mime"
|
63
|
+
spec.add_dependency "mutex_m"
|
61
64
|
spec.add_dependency "rack"
|
62
65
|
spec.add_dependency "rainbow"
|
63
66
|
spec.add_dependency "recursive-open-struct"
|
@@ -4,7 +4,7 @@ module Jets::Builders
|
|
4
4
|
class RubyPackager
|
5
5
|
include Util
|
6
6
|
|
7
|
-
GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
|
7
|
+
GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux|gnu)|-(aarch64|x86_64|arm64|i386|powerpc|sparc|mips|riscv|loongarch|sw_64|hppa|ia64|s390).*-(darwin|linux|gnu)/
|
8
8
|
|
9
9
|
attr_reader :full_app_root
|
10
10
|
def initialize(relative_app_root)
|
@@ -77,7 +77,7 @@ module Jets::Builders
|
|
77
77
|
# For example we add the jets-rails to the Gemfile.
|
78
78
|
copy_back_gemfile_lock
|
79
79
|
|
80
|
-
puts
|
80
|
+
puts "Bundle install completed"
|
81
81
|
end
|
82
82
|
|
83
83
|
# Example `bundle check` error:
|
@@ -92,7 +92,7 @@ module Jets::Builders
|
|
92
92
|
# The Gemfile's dependencies are satisfied
|
93
93
|
#
|
94
94
|
def bundle_check
|
95
|
-
out =
|
95
|
+
out = ""
|
96
96
|
Bundler.with_unbundled_env do
|
97
97
|
out = `cd #{cache_area} && bundle check 2>&1`
|
98
98
|
end
|
@@ -124,7 +124,7 @@ module Jets::Builders
|
|
124
124
|
puts "Tidying project: removing ignored files to reduce package size."
|
125
125
|
tidy_project(@full_app_root)
|
126
126
|
# The rack sub project has it's own gitignore.
|
127
|
-
tidy_project(@full_app_root+"/rack")
|
127
|
+
tidy_project(@full_app_root + "/rack")
|
128
128
|
end
|
129
129
|
|
130
130
|
def tidy_project(path)
|
@@ -158,7 +158,7 @@ module Jets::Builders
|
|
158
158
|
|
159
159
|
# IE: /tmp/jets/demo/cache/vendor/gems/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
|
160
160
|
Dir.glob("#{cache_area}/vendor/gems/ruby/2.5.0/bundler/gems/*").each do |path|
|
161
|
-
sha = path.split(
|
161
|
+
sha = path.split("-").last[0..6] # only first 7 chars of the git sha
|
162
162
|
unless git_shas.include?(sha)
|
163
163
|
FileUtils.rm_rf(path) # REMOVE old submodule directory
|
164
164
|
end
|
@@ -202,7 +202,7 @@ module Jets::Builders
|
|
202
202
|
# amount is the number of lines to remove
|
203
203
|
new_lines, capture, count, amount = [], true, 0, 2
|
204
204
|
lines.each do |l|
|
205
|
-
capture = false if l.include?(
|
205
|
+
capture = false if l.include?("BUNDLED WITH")
|
206
206
|
if capture
|
207
207
|
new_lines << l
|
208
208
|
end
|
@@ -215,7 +215,7 @@ module Jets::Builders
|
|
215
215
|
# Replace things like nokogiri (1.11.1-x86_64-darwin) => nokogiri (1.11.1)
|
216
216
|
lines, new_lines = new_lines, []
|
217
217
|
lines.each do |l|
|
218
|
-
l.sub!(GEM_REGEXP,
|
218
|
+
l.sub!(GEM_REGEXP, "") if GEM_REGEXP.match?(l)
|
219
219
|
new_lines << l
|
220
220
|
end
|
221
221
|
|
@@ -236,11 +236,11 @@ module Jets::Builders
|
|
236
236
|
next
|
237
237
|
end
|
238
238
|
|
239
|
-
in_platforms_section = l.include?(
|
239
|
+
in_platforms_section = l.include?("PLATFORMS")
|
240
240
|
new_lines << l
|
241
241
|
end
|
242
242
|
|
243
|
-
content = new_lines.join(
|
243
|
+
content = new_lines.join("")
|
244
244
|
IO.write(gemfile_lock, content)
|
245
245
|
end
|
246
246
|
|
@@ -261,12 +261,12 @@ module Jets::Builders
|
|
261
261
|
# Dont know why this is the case.
|
262
262
|
def create_bundle_config(frozen: false)
|
263
263
|
FileUtils.rm_rf("#{cache_area}/.bundle")
|
264
|
-
frozen_line = %
|
265
|
-
text
|
266
|
-
---
|
267
|
-
#{frozen_line}BUNDLE_PATH: "vendor/gems"
|
268
|
-
BUNDLE_WITHOUT: "development:test"
|
269
|
-
EOL
|
264
|
+
frozen_line = %(BUNDLE_FROZEN: "true"\n) if frozen
|
265
|
+
text = <<~EOL
|
266
|
+
---
|
267
|
+
#{frozen_line}BUNDLE_PATH: "vendor/gems"
|
268
|
+
BUNDLE_WITHOUT: "development:test"
|
269
|
+
EOL
|
270
270
|
bundle_config = "#{cache_area}/.bundle/config"
|
271
271
|
FileUtils.mkdir_p(File.dirname(bundle_config))
|
272
272
|
IO.write(bundle_config, text)
|
data/lib/jets/cfn/template.rb
CHANGED
@@ -4,7 +4,7 @@ module Jets::Cfn
|
|
4
4
|
|
5
5
|
attr_reader :path
|
6
6
|
|
7
|
-
def initialize(path, options={})
|
7
|
+
def initialize(path, options = {})
|
8
8
|
@path = path
|
9
9
|
@options = options
|
10
10
|
end
|
@@ -25,7 +25,8 @@ module Jets::Cfn
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
private
|
29
|
+
|
29
30
|
def upload_to_s3?
|
30
31
|
return false if @options[:stack_type] == :minimal # bucket not yet available
|
31
32
|
bucket_name.present?
|
@@ -48,8 +49,7 @@ module Jets::Cfn
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def upload_file_to_s3
|
51
|
-
|
52
|
-
obj.upload_file(path)
|
52
|
+
transfer_manager.upload_file(path, bucket: bucket_name, key: s3_key)
|
53
53
|
|
54
54
|
"https://s3.amazonaws.com/#{bucket_name}/#{s3_key}"
|
55
55
|
end
|
@@ -58,6 +58,10 @@ module Jets::Cfn
|
|
58
58
|
@s3_key ||= "jets/cfn-templates/#{File.basename(path)}"
|
59
59
|
end
|
60
60
|
|
61
|
+
def transfer_manager
|
62
|
+
@transfer_manager ||= Aws::S3::TransferManager.new
|
63
|
+
end
|
64
|
+
|
61
65
|
class << self
|
62
66
|
# Caches reduce filesystem IO calls
|
63
67
|
@@cache = {}
|
@@ -81,7 +85,7 @@ module Jets::Cfn
|
|
81
85
|
template[:Outputs].keys.include?(key.to_sym)
|
82
86
|
end
|
83
87
|
|
84
|
-
name = File.basename(found_template).sub(/\.yml$/,
|
88
|
+
name = File.basename(found_template).sub(/\.yml$/, "")
|
85
89
|
name.underscore.camelize # IE: ApiResources1
|
86
90
|
end
|
87
91
|
end
|
data/lib/jets/cfn/upload.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "active_support/number_helper"
|
2
|
+
require "digest"
|
3
|
+
require "rack/mime"
|
4
4
|
|
5
5
|
module Jets::Cfn
|
6
6
|
class Upload
|
7
7
|
include Jets::AwsServices
|
8
8
|
include ActiveSupport::NumberHelper # number_to_human_size
|
9
9
|
|
10
|
+
def transfer_manager
|
11
|
+
@transfer_manager ||= Aws::S3::TransferManager.new
|
12
|
+
end
|
13
|
+
|
10
14
|
def upload
|
11
15
|
upload_cfn_templates
|
12
16
|
upload_zip_files
|
@@ -17,7 +21,7 @@ module Jets::Cfn
|
|
17
21
|
Jets.s3_bucket
|
18
22
|
end
|
19
23
|
|
20
|
-
def upload_cfn_templates(version=nil)
|
24
|
+
def upload_cfn_templates(version = nil)
|
21
25
|
puts "Uploading CloudFormation templates to S3." unless version # hide message when version is passed in
|
22
26
|
expression = "#{Jets::Names.templates_folder}/*"
|
23
27
|
if version # outside of each loop to avoid repeating
|
@@ -26,13 +30,11 @@ module Jets::Cfn
|
|
26
30
|
checksum = Jets::Builders::Md5.checksums["stage/code"]
|
27
31
|
version = "shas/#{checksum}"
|
28
32
|
end
|
29
|
-
checksum = Jets::Builders::Md5.checksums["stage/code"]
|
30
33
|
Dir.glob(expression).each do |path|
|
31
34
|
next unless File.file?(path)
|
32
|
-
key = ["jets/cfn-templates", version, File.basename(path)].compact.join(
|
33
|
-
|
34
|
-
|
35
|
-
obj.upload_file(path)
|
35
|
+
key = ["jets/cfn-templates", version, File.basename(path)].compact.join("/")
|
36
|
+
puts "Uploading #{path} to s3://#{bucket_name}/#{key}".color(:green) if ENV["JETS_DEBUG"]
|
37
|
+
transfer_manager.upload_file(path, bucket: bucket_name, key: key)
|
36
38
|
end
|
37
39
|
end
|
38
40
|
|
@@ -50,17 +52,16 @@ module Jets::Cfn
|
|
50
52
|
puts "Uploading #{path} (#{file_size}) to S3"
|
51
53
|
start_time = Time.now
|
52
54
|
s3_key = "jets/code/#{File.basename(path)}"
|
53
|
-
|
54
|
-
obj.upload_file(path)
|
55
|
+
transfer_manager.upload_file(path, bucket: bucket_name, key: s3_key)
|
55
56
|
puts "Uploaded to s3://#{bucket_name}/#{s3_key}".color(:green)
|
56
|
-
puts "Time to upload code to s3: #{pretty_time(Time.now-start_time).color(:green)}"
|
57
|
+
puts "Time to upload code to s3: #{pretty_time(Time.now - start_time).color(:green)}"
|
57
58
|
end
|
58
59
|
|
59
60
|
def upload_assets
|
60
61
|
puts "Checking for modified public assets and uploading to S3."
|
61
62
|
start_time = Time.now
|
62
63
|
upload_public_assets
|
63
|
-
puts "Time for public assets to s3: #{pretty_time(Time.now-start_time).color(:green)}"
|
64
|
+
puts "Time for public assets to s3: #{pretty_time(Time.now - start_time).color(:green)}"
|
64
65
|
end
|
65
66
|
|
66
67
|
def upload_public_assets
|
@@ -87,37 +88,36 @@ module Jets::Cfn
|
|
87
88
|
end
|
88
89
|
|
89
90
|
def upload_to_s3(full_path)
|
90
|
-
if identical_on_s3?(full_path) && !ENV[
|
91
|
-
puts "Asset is identical on s3: #{full_path}" if ENV[
|
91
|
+
if identical_on_s3?(full_path) && !ENV["JETS_ASSET_UPLOAD_FORCE"]
|
92
|
+
puts "Asset is identical on s3: #{full_path}" if ENV["JETS_DEBUG_ASSETS"]
|
92
93
|
return
|
93
94
|
end
|
94
95
|
|
95
96
|
key = s3_key(full_path)
|
96
|
-
obj = s3_resource.bucket(bucket_name).object(key)
|
97
97
|
content_type = content_type_headers(full_path)
|
98
|
-
if ENV[
|
98
|
+
if ENV["JETS_DEBUG_ASSETS"]
|
99
99
|
puts "Uploading and setting content type for s3://#{bucket_name}/#{key} content_type #{content_type[:content_type].inspect}"
|
100
100
|
end
|
101
|
-
|
101
|
+
transfer_manager.upload_file(full_path, bucket: bucket_name, key: key, acl: "public-read", cache_control: cache_control, **content_type)
|
102
102
|
end
|
103
103
|
|
104
104
|
CONTENT_TYPES_BY_EXTENSION = {
|
105
|
-
|
106
|
-
|
107
|
-
|
105
|
+
".css" => "text/css",
|
106
|
+
".html" => "text/html",
|
107
|
+
".js" => "application/javascript"
|
108
108
|
}
|
109
109
|
def content_type_headers(full_path)
|
110
110
|
ext = File.extname(full_path)
|
111
111
|
content_type = CONTENT_TYPES_BY_EXTENSION[ext] || Rack::Mime.mime_type(ext)
|
112
112
|
if content_type
|
113
|
-
{
|
113
|
+
{content_type: content_type}
|
114
114
|
else
|
115
115
|
{}
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
119
|
def s3_key(full_path)
|
120
|
-
relative_path = full_path.sub("#{Jets.root}/",
|
120
|
+
relative_path = full_path.sub("#{Jets.root}/", "")
|
121
121
|
"jets/#{relative_path}"
|
122
122
|
end
|
123
123
|
|
data/lib/jets/version.rb
CHANGED
data/lib/jets.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 7.0.8
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activemodel
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 7.0.8
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 7.0.8
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: activerecord
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -374,20 +388,34 @@ dependencies:
|
|
374
388
|
- - ">="
|
375
389
|
- !ruby/object:Gem::Version
|
376
390
|
version: '0'
|
391
|
+
- !ruby/object:Gem::Dependency
|
392
|
+
name: logger
|
393
|
+
requirement: !ruby/object:Gem::Requirement
|
394
|
+
requirements:
|
395
|
+
- - ">="
|
396
|
+
- !ruby/object:Gem::Version
|
397
|
+
version: '0'
|
398
|
+
type: :runtime
|
399
|
+
prerelease: false
|
400
|
+
version_requirements: !ruby/object:Gem::Requirement
|
401
|
+
requirements:
|
402
|
+
- - ">="
|
403
|
+
- !ruby/object:Gem::Version
|
404
|
+
version: '0'
|
377
405
|
- !ruby/object:Gem::Dependency
|
378
406
|
name: jets-api
|
379
407
|
requirement: !ruby/object:Gem::Requirement
|
380
408
|
requirements:
|
381
409
|
- - ">="
|
382
410
|
- !ruby/object:Gem::Version
|
383
|
-
version: 0.1
|
411
|
+
version: 0.2.1
|
384
412
|
type: :runtime
|
385
413
|
prerelease: false
|
386
414
|
version_requirements: !ruby/object:Gem::Requirement
|
387
415
|
requirements:
|
388
416
|
- - ">="
|
389
417
|
- !ruby/object:Gem::Version
|
390
|
-
version: 0.1
|
418
|
+
version: 0.2.1
|
391
419
|
- !ruby/object:Gem::Dependency
|
392
420
|
name: jets-git
|
393
421
|
requirement: !ruby/object:Gem::Requirement
|
@@ -458,6 +486,20 @@ dependencies:
|
|
458
486
|
- - ">="
|
459
487
|
- !ruby/object:Gem::Version
|
460
488
|
version: '0'
|
489
|
+
- !ruby/object:Gem::Dependency
|
490
|
+
name: mutex_m
|
491
|
+
requirement: !ruby/object:Gem::Requirement
|
492
|
+
requirements:
|
493
|
+
- - ">="
|
494
|
+
- !ruby/object:Gem::Version
|
495
|
+
version: '0'
|
496
|
+
type: :runtime
|
497
|
+
prerelease: false
|
498
|
+
version_requirements: !ruby/object:Gem::Requirement
|
499
|
+
requirements:
|
500
|
+
- - ">="
|
501
|
+
- !ruby/object:Gem::Version
|
502
|
+
version: '0'
|
461
503
|
- !ruby/object:Gem::Dependency
|
462
504
|
name: rack
|
463
505
|
requirement: !ruby/object:Gem::Requirement
|