serverlessgems 0.1.1 → 0.1.5

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: 6756e479ba86b9b25e086d1779911039ce33279054f0ecc968174195dd0a20b5
4
- data.tar.gz: 6d447ad46909e821ead5bc87d8099783503f73b7635883b4699fcac945581711
3
+ metadata.gz: 6ba1692da293a7e458a1262de1f0af1c865b1b78270283afe19a2d7aeca80ab5
4
+ data.tar.gz: 775351dec4c2837a265b7e553d6aac89f1e9bdc82b0a9130973285b355d58ad6
5
5
  SHA512:
6
- metadata.gz: 3b606e3d673fc0bceb0edfeac4010559714126cb1edf1506ce761dba5a7a88558a3a623e7cae94f591901aac00f01abd480a770a191ba6346e8ac740e30e21fb
7
- data.tar.gz: c35c1a8617de78772a415bed0c98ac52f94592b55848b1a0ba11cda0c746602e0b1f58cc471449ae17faf552d0835c3f440a4ab4331869ccc475ff0e810f532b
6
+ metadata.gz: 5ff0e504d6cbbcb817272e6f5dcceed8bdfc04498327f69db7e99c23644b7737c510ee207756b7bee6d101b96c4072472ee701711fe3f6ca3e0fc3de9240ba09
7
+ data.tar.gz: a41cc9dcf9dd3e227495d51f6cbf46b8bb9865dfce18f7ea75242a8f3894facd8d339d451fa669a551e2fdbd960d45c303d026eb6fdca13c2ddd8913f02d6675
data/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
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
+ ## [0.1.5] - 2021-08-31
7
+ - [#4](https://github.com/boltops-tools/serverlessgems/pull/4) Don't create a file if the download fails
8
+
9
+ ## [0.1.4] - 2021-07-15
10
+ - [#3](https://github.com/boltops-tools/serverlessgems/pull/3) gems/registered api
11
+
12
+ ## [0.1.3] - 2021-04-13
13
+ - update jets agree messaging
14
+
15
+ ## [0.1.2] - 2021-01-12
16
+ - [#2](https://github.com/boltops-tools/serverlessgems/pull/2) fix other_compiled_gems Jets.build_root
17
+
6
18
  ## [0.1.1] - 2021-01-12
7
19
  - [#1](https://github.com/boltops-tools/serverlessgems/pull/1) fix native gem detection
8
20
 
@@ -7,19 +7,32 @@ module Jets::Gems
7
7
  # Only prompts if hasnt prompted before and saved a ~/.jets/agree file
8
8
  def prompt
9
9
  return if bypass_prompt
10
- return if File.exist?(@agree_file)
10
+ return if File.exist?(@agree_file) && File.mtime(@agree_file) > Time.parse("2021-04-12")
11
11
 
12
12
  puts <<~EOL
13
- Jets sends data about your gems to serverlessgems.com so that it can build the necessary Lambda layer.
13
+ Jets uses pre-built binary gems from the serverlessgems.com service to
14
+ provide a user-friendly developer experience. The Serverless Gems Service
15
+ rate limits free gem download requests daily. You can upgrade to a paid plan
16
+ for unlimited gem download requests. Open Source projects may also qualify
17
+ for a free unlimited plan. More info:
14
18
 
15
- Reporting gems generally allows Serverless Gems to build new gems within a few minutes.
16
- So if you run into missing gems, you can try deploying again after a few minutes.
17
- Non-reported gems may take several days or longer.
19
+ https://www.serverlessgems.com/rate-limits
18
20
 
19
- Serverless Gems only collects the info it needs to run the service. More info: https://www.serverlessgems.com/privacy
21
+ If you do not want to use Serverless Gems, you can disable the Serverless
22
+ Gems service and provide your own custom Lambda Layer. More info:
20
23
 
24
+ https://rubyonjets.com/docs/serverlessgems/
25
+ https://rubyonjets.com/docs/extras/custom-lambda-layers/
26
+
27
+ Also, reporting gems to Serverless Gems allows it to build new gems typically
28
+ within a few minutes. So if you run into missing gems, you can try deploying
29
+ again after a few minutes. Non-reported gems may take several days or longer.
30
+ Serverless Gems only collects the info it needs to run the service.
31
+ More info: https://www.serverlessgems.com/privacy
21
32
  This message will only appear once on this machine.
22
- You can also automatically skip this message by setting JETS_AGREE=yes or JETS_AGREE=no
33
+
34
+ You can also automatically skip this message by setting:
35
+ JETS_AGREE=yes or JETS_AGREE=no
23
36
 
24
37
  Is it okay to send your gem data to Serverless Gems? (Y/n)?
25
38
  EOL
@@ -1,3 +1,7 @@
1
+ # Need 'open-uri' for exist.rb and regsitered.rb which uses
2
+ # rescue SocketError, OpenURI::HTTPError, OpenSSL::SSL::SSLError
3
+ require 'open-uri'
4
+
1
5
  class Jets::Gems::Api
2
6
  module Concern
3
7
  def api
data/lib/jets/gems/api.rb CHANGED
@@ -18,6 +18,10 @@ module Jets::Gems
18
18
  get("report/missing?gem_name=#{gem_name}&ruby_folder=#{ruby_folder}")
19
19
  end
20
20
 
21
+ def registered_gems
22
+ get("gems/registered")
23
+ end
24
+
21
25
  def ruby_folder
22
26
  Jets::Gems.ruby_folder
23
27
  end
@@ -12,7 +12,7 @@ module Jets::Gems
12
12
  end
13
13
 
14
14
  def run!
15
- puts "Gems source: #{gems_source}" if @options[:show_source]
15
+ puts "Gems source: #{gems_source}" if @options[:verbose]
16
16
  run(exit_early: true)
17
17
  end
18
18
 
@@ -22,9 +22,9 @@ module Jets::Gems
22
22
 
23
23
  # Checks whether the gem is found at the serverlessgems source.
24
24
  def run(exit_early: false)
25
- puts "Checking projects gems for binary Lambda gems..."
25
+ puts "Checking projects gems for binary serverlessgems..."
26
26
  compiled_gems.each do |gem_name|
27
- puts "Checking #{gem_name}..." if @options[:cli]
27
+ puts "Checking #{gem_name}..." if @options[:verbose]
28
28
  exist = Jets::Gems::Exist.new
29
29
  @missing_gems << gem_name unless exist.check(gem_name)
30
30
  end
@@ -133,6 +133,7 @@ EOL
133
133
  #
134
134
  gems = gemspec_compiled_gems
135
135
  gems += other_compiled_gems
136
+ gems += registered_compiled_gems
136
137
  gems.uniq
137
138
  end
138
139
  end
@@ -148,10 +149,22 @@ EOL
148
149
  # /tmp/jets/demo/stage/opt/ruby/gems/2.7.0/gems/nokogiri-1.11.1-x86_64-linux
149
150
  #
150
151
  def other_compiled_gems
151
- paths = Dir.glob("/tmp/jets/demo/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}/gems/*{-darwin,-linux}")
152
+ paths = Dir.glob("#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}/gems/*{-darwin,-linux}")
152
153
  paths.map { |p| File.basename(p).sub(/-x\d+.*-(darwin|linux)/,'') }
153
154
  end
154
155
 
156
+ def registered_compiled_gems
157
+ registered = Jets::Gems::Registered.new
158
+ registered_gems = registered.all # no version numbers in this list
159
+
160
+ paths = Dir.glob("#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}/gems/*")
161
+ project_gems = paths.map { |p| File.basename(p).sub(/-x\d+.*-(darwin|linux)/,'') }
162
+ project_gems.select do |name|
163
+ name_only = name.sub(/-\d+\.\d+\.\d+.*/,'')
164
+ registered_gems.include?(name_only)
165
+ end
166
+ end
167
+
155
168
  # Use pre-compiled gem because the gem could have development header shared
156
169
  # object file dependencies. The shared dependencies are packaged up as part
157
170
  # of the pre-compiled gem so it is available in the Lambda execution environment.
@@ -1,5 +1,3 @@
1
- require 'open-uri'
2
-
3
1
  module Jets::Gems
4
2
  class Exist
5
3
  include Jets::Gems::Api::Concern
@@ -41,13 +41,12 @@ module Jets::Gems::Extract
41
41
  end
42
42
 
43
43
  say "Downloading..."
44
+ downloaded = URI.open(url, 'rb') { |read_file| read_file.read }
45
+
44
46
  FileUtils.mkdir_p(File.dirname(dest)) # ensure parent folder exists
45
47
 
46
- File.open(dest, 'wb') do |saved_file|
47
- URI.open(url, 'rb') do |read_file|
48
- saved_file.write(read_file.read)
49
- end
50
- end
48
+ File.open(dest, 'wb') { |saved_file| saved_file.write(downloaded) }
49
+
51
50
  dest
52
51
  end
53
52
 
@@ -0,0 +1,12 @@
1
+ module Jets::Gems
2
+ class Registered
3
+ include Jets::Gems::Api::Concern
4
+
5
+ def all
6
+ data = api.registered_gems
7
+ data["gems"]
8
+ rescue SocketError, OpenURI::HTTPError, OpenSSL::SSL::SSLError
9
+ []
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,5 @@
1
1
  module Jets
2
2
  module Gems
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serverlessgems
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-12 00:00:00.000000000 Z
11
+ date: 2021-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gems
@@ -122,6 +122,7 @@ files:
122
122
  - lib/jets/gems/exist.rb
123
123
  - lib/jets/gems/extract/base.rb
124
124
  - lib/jets/gems/extract/gem.rb
125
+ - lib/jets/gems/registered.rb
125
126
  - lib/jets/gems/report.rb
126
127
  - lib/jets/gems/version.rb
127
128
  - lib/serverlessgems.rb