oyencov 0.0.7 → 0.0.9

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: d3e5ee7aa1684c38b97b8e6ee22616c2aed628ac615c5957cb90a210c3ff6aee
4
- data.tar.gz: 9b3f27e56cc9ba41de77a4ff60363d03a30130e5dc3fe9d6071e12f46b39b14a
3
+ metadata.gz: 284aeba7dff7bdcad7911b65bf24a3cf2126730ab050e1468e35d68c42241e01
4
+ data.tar.gz: e88b831a197f736e59f6912d9083d6885b5adb811d80a092bd143f36dcee92f8
5
5
  SHA512:
6
- metadata.gz: e716dfd3bdcf079207bd5d35788ead90636cabe1adb787e512fc6e773746aa1dd90588e669f9b3385d8c5998fa938ea253cccfbcd72cbbdad061673432e3aebf
7
- data.tar.gz: 7d5ae1f08f69014ab759b1bf4b8a59f517efd8bd44d9f9e6ac25f1fd0024e767e744eabc3e58eec2f948136be9eecaed136a21dd85ab34a287a78e2c28c74c93
6
+ metadata.gz: fc0857d3ba42f0fcbb5dcc1806ed19e19577cbafef96f814baaed18e4a8da4fcce0b9d2a75a1408410407e0e55534140b3ed1aeac7ed0fc574b8cfb397daaabd
7
+ data.tar.gz: d4e63b3c9f0837996ef371509b8935e1ed20b72fd7d7bffd2892e1e276f19241af18763985db8186a8ddbcdec9697e9eee63e1d0449df31af4118570c567d144
@@ -28,9 +28,9 @@ module OyenCov
28
28
  response = get("/v1/data_submission_clearance")
29
29
 
30
30
  if Hash === response.body && response.body["status"] == "ok"
31
- return response.body
31
+ response.body
32
32
  else
33
- return false
33
+ false
34
34
  end
35
35
  rescue Faraday::Error => e
36
36
  OyenCov::Logger.log(e, 2)
@@ -1,6 +1,7 @@
1
1
  require "securerandom"
2
2
  require "singleton"
3
3
  require_relative "api_connection"
4
+ require_relative "controller_tracking"
4
5
  require_relative "coverage_peek_delta"
5
6
  require_relative "logger"
6
7
 
@@ -26,8 +27,9 @@ module OyenCov
26
27
  def self.start
27
28
  OyenCov::Logger.log(<<~TXT)
28
29
  Env: #{@config.mode}
29
- $PROGRAM_NAME: #{$PROGRAM_NAME || "nil"}
30
- @process_type: #{@config.process_type}
30
+ program_name: #{$PROGRAM_NAME || "nil"}
31
+ process_type: #{@config.process_type}
32
+ release/git_commit_sha: #{@config.release}
31
33
  Env vars set: #{ENV.keys.grep(/^OYENCOV_/)}
32
34
  TXT
33
35
 
@@ -46,13 +46,27 @@ module OyenCov
46
46
 
47
47
  if release == "" || release.nil?
48
48
  [".source_version", "REVISION"].each do |version_clue|
49
- if File.exist?(Rails.root.join(version_clue))
50
- release = File.read(Rails.root.join(version_clue)).strip
51
- return release
49
+ version_clue_path = if defined?(Rails.root) && Rails.root
50
+ Rails.root.join(version_clue)
51
+ elsif defined?(Bundler.root) && Bundler.root
52
+ Bundler.root.join(version_clue)
53
+ elsif defined?(Pathname.pwd) && Pathname.pwd
54
+ Pathname.pwd.join(version_clue)
55
+ else
56
+ next
57
+ end
58
+
59
+ if File.exist?(version_clue_path)
60
+ return File.read(version_clue_path).strip
52
61
  end
53
62
  end
54
63
  end
55
64
 
65
+ # Last resort, prevent null value.
66
+ if release == "" || release.nil?
67
+ release = "-"
68
+ end
69
+
56
70
  release
57
71
  end
58
72
 
@@ -72,10 +86,13 @@ module OyenCov
72
86
  end
73
87
  end
74
88
 
75
- if /^puma/.match?($PROGRAM_NAME)
76
- if defined?(Rails)
77
- return "rails-server"
78
- end
89
+ # If its cluster mode & we are in worker process, puma is at the beginning.
90
+ # If it's `bundle exec puma` then it comes in the end
91
+ #
92
+ # If it's booted up by puma not rails server, `Rails` module wont be defined.
93
+ # We will just assume puma = rails-server
94
+ if /^puma/.match?($0) || sliced_program_name == "puma"
95
+ return "rails-server"
79
96
  end
80
97
 
81
98
  # Rails can be server or rake task
@@ -2,15 +2,30 @@ require "puma/plugin"
2
2
  require_relative "../../background"
3
3
  require_relative "../../logger"
4
4
 
5
- Puma::Plugin.create do
5
+ defined?(Puma::Plugin.create) && Puma::Plugin.create do
6
6
  OyenCov::Logger.log("Puma::Plugin.create running...")
7
7
 
8
8
  def config(c)
9
9
  OyenCov::Logger.log("Puma::Plugin.create config(c) running...")
10
10
 
11
+ c.on_booted do
12
+ OyenCov::Logger.log("Puma::Plugin.create config on_booted called")
13
+ OyenCov::Background.start
14
+ if defined?(Rails::Railtie)
15
+ load(File.expand_path("../../railtie.rb", File.dirname(__FILE__)))
16
+ else
17
+ OyenCov::Logger.log("on_booted: Railtie undefined 😭")
18
+ end
19
+ end
20
+
11
21
  c.on_worker_boot do
12
22
  OyenCov::Logger.log("Puma::Plugin.create config on_worker_boot called")
13
23
  OyenCov::Background.start
24
+ if defined?(Rails::Railtie)
25
+ load(File.expand_path("../../railtie.rb", File.dirname(__FILE__)))
26
+ else
27
+ OyenCov::Logger.log("on_worker_boot: Railtie undefined 😭")
28
+ end
14
29
  end
15
30
  end
16
31
  end
@@ -5,6 +5,7 @@ require_relative "logger"
5
5
 
6
6
  module OyenCov
7
7
  class Railtie < Rails::Railtie
8
+ # This is only useful when `rails s` is run in lieu of webserver command first.
8
9
  def install_puma_hooks
9
10
  return unless defined?(Puma)
10
11
  OyenCov::Logger.log("Puma defined, installing puma hooks")
@@ -15,7 +16,7 @@ module OyenCov
15
16
  OyenCov::Logger.log("Load errors: #{e}")
16
17
  end
17
18
 
18
- # # Cluster mode
19
+ # Cluster mode
19
20
  if defined?(Puma::Plugin)
20
21
  OyenCov::Logger.log("Puma::Plugin defined, installing hooks for CLUSTER MODE")
21
22
  require_relative "puma/plugin/oyencov"
@@ -1,3 +1,3 @@
1
1
  module OyenCov
2
- VERSION = "0.0.7".freeze
2
+ VERSION = "0.0.9".freeze
3
3
  end
data/lib/oyencov.rb CHANGED
@@ -3,15 +3,27 @@ require_relative "oyencov/simplecov_resultset_translator"
3
3
  require_relative "oyencov/version"
4
4
  require_relative "oyencov/logger"
5
5
 
6
- # For now, support only Rails. We bootstrap from Railtie.
6
+ # For now, support only Rails. We bootstrap background thread and controller tracking from Railtie.
7
7
  module OyenCov
8
8
  def self.config
9
9
  @config ||= OyenCov::Configuration.new
10
10
  end
11
11
 
12
+ # Sometimes oyencov cant start on their own, maybe when oyencov is loaded
13
+ # before Rails did.
14
+ #
15
+ # For Rails, put `OyenCov.start!` in `config/initializers/oyencov.rb`.
16
+ def self.start!
17
+ require_relative "oyencov/railtie"
18
+ end
19
+
20
+ OyenCov::Logger.log("Hello! Booting from #{__FILE__}")
12
21
  OyenCov::Logger.log("Checking Rails existence")
22
+
13
23
  if defined?(Rails::Railtie) # && ENV["OYENCOV_API_KEY"]
14
- OyenCov::Logger.log("Starting Railtie")
24
+ OyenCov::Logger.log("Rails::Railtie already present, starting oyencov/railtie")
15
25
  require_relative "oyencov/railtie"
26
+ else
27
+ OyenCov::Logger.log("Rails::Railtie absent, cannot start tracking & reporting yet.")
16
28
  end
17
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oyencov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anonoz Chong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-11 00:00:00.000000000 Z
11
+ date: 2024-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday