rails-health-checker 0.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.
@@ -0,0 +1,63 @@
1
+ namespace :health do
2
+ desc "Run comprehensive health check"
3
+ task check: :environment do
4
+ RailsHealthChecker.check
5
+ end
6
+
7
+ desc "Check gem dependencies"
8
+ task gems: :environment do
9
+ analyzer = RailsHealthChecker::GemAnalyzer.new
10
+ results = analyzer.analyze
11
+
12
+ puts "=== Gem Health Report ==="
13
+ puts "Total gems: #{results[:total]}"
14
+ puts "Outdated gems: #{results[:outdated]}"
15
+ puts "Vulnerable gems: #{results[:vulnerable]}"
16
+ puts "========================="
17
+ end
18
+
19
+ desc "Check database connectivity"
20
+ task database: :environment do
21
+ begin
22
+ ActiveRecord::Base.connection.active?
23
+ puts "āœ“ Database connection: healthy"
24
+ rescue => e
25
+ puts "āœ— Database connection: failed (#{e.message})"
26
+ end
27
+ end
28
+
29
+ desc "Check background jobs health"
30
+ task jobs: :environment do
31
+ analyzer = RailsHealthChecker::JobAnalyzer.new
32
+ results = analyzer.analyze
33
+
34
+ puts "=== Background Jobs Health ==="
35
+ puts "Overall Status: #{results[:status]}"
36
+
37
+ if results[:sidekiq][:available]
38
+ sidekiq = results[:sidekiq]
39
+ puts "\nSidekiq:"
40
+ puts " Status: #{sidekiq[:status]}"
41
+ puts " Enqueued: #{sidekiq[:enqueued]}" unless sidekiq[:error]
42
+ puts " Failed: #{sidekiq[:failed]}" unless sidekiq[:error]
43
+ end
44
+
45
+ if results[:resque][:available]
46
+ resque = results[:resque]
47
+ puts "\nResque:"
48
+ puts " Status: #{resque[:status]}"
49
+ puts " Pending: #{resque[:pending]}" unless resque[:error]
50
+ puts " Failed: #{resque[:failed]}" unless resque[:error]
51
+ end
52
+
53
+ puts "============================="
54
+ end
55
+
56
+ desc "Generate detailed health report file"
57
+ task report: :environment do
58
+ results = RailsHealthChecker::Checker.new.run
59
+ report_generator = RailsHealthChecker::ReportGenerator.new(results)
60
+ filename = report_generator.save_to_file
61
+ puts "šŸ“„ Health report updated: #{filename}"
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ module RailsHealthChecker
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "rails_health_checker/version"
2
+ require_relative "rails_health_checker/checker"
3
+ require_relative "rails_health_checker/gem_analyzer"
4
+ require_relative "rails_health_checker/job_analyzer"
5
+ require_relative "rails_health_checker/system_analyzer"
6
+ require_relative "rails_health_checker/health_middleware"
7
+ require_relative "rails_health_checker/dashboard_middleware"
8
+ require_relative "rails_health_checker/report_generator"
9
+ require_relative "rails_health_checker/railtie" if defined?(Rails)
10
+
11
+ module RailsHealthChecker
12
+ class Error < StandardError; end
13
+
14
+ def self.check
15
+ Checker.new.run
16
+ end
17
+ end
@@ -0,0 +1,33 @@
1
+ require_relative "lib/rails_health_checker/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "rails-health-checker"
5
+ spec.version = RailsHealthChecker::VERSION
6
+ spec.authors = ["Arshdeep Singh"]
7
+ spec.email = ["arsh199820@gmail.com"]
8
+
9
+ spec.summary = "Comprehensive health checker for Rails applications and dependencies"
10
+ spec.description = "A Ruby gem that provides comprehensive health checking for Rails applications, including database connectivity, gem dependencies, security vulnerabilities, and system health monitoring with a web dashboard."
11
+ spec.homepage = "https://rails-health-checker.netlify.app"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = ">= 2.6.0"
14
+
15
+ spec.metadata["homepage_uri"] = "https://rails-health-checker.netlify.app"
16
+ spec.metadata["source_code_uri"] = "https://github.com/ArshdeepGrover/rails-health-checker"
17
+ spec.metadata["changelog_uri"] = "https://github.com/ArshdeepGrover/rails-health-checker/blob/main/CHANGELOG.md"
18
+ spec.metadata["documentation_uri"] = "https://rails-health-checker.netlify.app"
19
+ spec.metadata["bug_tracker_uri"] = "https://github.com/ArshdeepGrover/rails-health-checker/issues"
20
+
21
+ spec.files = Dir.chdir(__dir__) do
22
+ `git ls-files -z`.split("\x0").reject do |f|
23
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
24
+ end
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_dependency "rails", ">= 6.0"
31
+ spec.add_dependency "bundler", ">= 2.0"
32
+ spec.add_development_dependency "rspec", "~> 3.0"
33
+ end
data/simple_test.rb ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative 'lib/rails_health_checker/version'
4
+ require_relative 'lib/rails_health_checker/gem_analyzer'
5
+
6
+ puts "=== Simple Gem Test ==="
7
+ puts "Version: #{RailsHealthChecker::VERSION}"
8
+
9
+ # Test gem analyzer with mocked Bundler
10
+ module Bundler
11
+ def self.load
12
+ MockBundler.new
13
+ end
14
+ end
15
+
16
+ class MockBundler
17
+ def specs
18
+ [
19
+ MockGem.new('rails', '7.0.0'),
20
+ MockGem.new('rspec', '3.12.0')
21
+ ]
22
+ end
23
+ end
24
+
25
+ class MockGem
26
+ attr_reader :name, :version
27
+
28
+ def initialize(name, version)
29
+ @name = name
30
+ @version = MockVersion.new(version)
31
+ end
32
+
33
+ def gem_dir
34
+ "/path/to/#{name}"
35
+ end
36
+ end
37
+
38
+ class MockVersion
39
+ def initialize(version)
40
+ @version = version
41
+ end
42
+
43
+ def to_s
44
+ @version
45
+ end
46
+ end
47
+
48
+ analyzer = RailsHealthChecker::GemAnalyzer.new
49
+ results = analyzer.analyze
50
+
51
+ puts "āœ“ Gem analysis: #{results[:total]} gems, #{results[:outdated]} outdated"
52
+ puts "āœ… Basic functionality works!"
data/test_gem.rb ADDED
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Simple test script to verify gem functionality
4
+ require_relative 'lib/rails_health_checker'
5
+
6
+ # Mock Rails and ActiveRecord for testing
7
+ module Rails
8
+ def self.version
9
+ "7.0.0"
10
+ end
11
+ end
12
+
13
+ module ActiveRecord
14
+ class Base
15
+ def self.connection
16
+ MockConnection.new
17
+ end
18
+ end
19
+ end
20
+
21
+ class MockConnection
22
+ def active?
23
+ true
24
+ end
25
+ end
26
+
27
+ class Time
28
+ def self.current
29
+ Time.now
30
+ end
31
+ end
32
+
33
+ # Mock Bundler
34
+ module Bundler
35
+ def self.load
36
+ MockBundler.new
37
+ end
38
+ end
39
+
40
+ class MockBundler
41
+ def specs
42
+ [
43
+ MockGem.new('rails', '7.0.0'),
44
+ MockGem.new('rspec', '3.12.0')
45
+ ]
46
+ end
47
+ end
48
+
49
+ class MockGem
50
+ attr_reader :name, :version
51
+
52
+ def initialize(name, version)
53
+ @name = name
54
+ @version = MockVersion.new(version)
55
+ end
56
+
57
+ def gem_dir
58
+ "/path/to/#{name}"
59
+ end
60
+ end
61
+
62
+ class MockVersion
63
+ def initialize(version)
64
+ @version = version
65
+ end
66
+
67
+ def to_s
68
+ @version
69
+ end
70
+ end
71
+
72
+ # Test the gem
73
+ puts "Testing RailsHealthChecker gem..."
74
+
75
+ begin
76
+ # Test version
77
+ puts "āœ“ Version: #{RailsHealthChecker::VERSION}"
78
+
79
+ # Test checker
80
+ checker = RailsHealthChecker::Checker.new
81
+ results = checker.run
82
+ puts "āœ“ Health check completed"
83
+
84
+ # Test gem analyzer
85
+ analyzer = RailsHealthChecker::GemAnalyzer.new
86
+ gem_results = analyzer.analyze
87
+ puts "āœ“ Gem analysis completed: #{gem_results[:total]} gems found"
88
+
89
+ # Test middleware
90
+ middleware = RailsHealthChecker::HealthMiddleware.new(nil)
91
+ env = { 'PATH_INFO' => '/health' }
92
+ response = middleware.call(env)
93
+ puts "āœ“ Health endpoint returns: #{response[0]} status"
94
+
95
+ puts "\nāœ… All tests passed!"
96
+
97
+ rescue => e
98
+ puts "āŒ Test failed: #{e.message}"
99
+ puts e.backtrace.first(3)
100
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-health-checker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Arshdeep Singh
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-11-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: A Ruby gem that provides comprehensive health checking for Rails applications,
56
+ including database connectivity, gem dependencies, security vulnerabilities, and
57
+ system health monitoring with a web dashboard.
58
+ email:
59
+ - arsh199820@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - CHANGELOG.md
65
+ - COMMANDS.md
66
+ - Gemfile
67
+ - Gemfile.lock
68
+ - LICENSE
69
+ - README.md
70
+ - Rakefile
71
+ - SECURITY.md
72
+ - TESTING.md
73
+ - TEST_RESULTS.md
74
+ - example_usage.rb
75
+ - lib/rails_health_checker.rb
76
+ - lib/rails_health_checker/checker.rb
77
+ - lib/rails_health_checker/dashboard_middleware.rb
78
+ - lib/rails_health_checker/gem_analyzer.rb
79
+ - lib/rails_health_checker/health_middleware.rb
80
+ - lib/rails_health_checker/job_analyzer.rb
81
+ - lib/rails_health_checker/railtie.rb
82
+ - lib/rails_health_checker/report_generator.rb
83
+ - lib/rails_health_checker/system_analyzer.rb
84
+ - lib/rails_health_checker/tasks.rb
85
+ - lib/rails_health_checker/version.rb
86
+ - rails_health_checker.gemspec
87
+ - simple_test.rb
88
+ - test_gem.rb
89
+ homepage: https://rails-health-checker.netlify.app
90
+ licenses:
91
+ - MIT
92
+ metadata:
93
+ homepage_uri: https://rails-health-checker.netlify.app
94
+ source_code_uri: https://github.com/ArshdeepGrover/rails-health-checker
95
+ changelog_uri: https://github.com/ArshdeepGrover/rails-health-checker/blob/main/CHANGELOG.md
96
+ documentation_uri: https://rails-health-checker.netlify.app
97
+ bug_tracker_uri: https://github.com/ArshdeepGrover/rails-health-checker/issues
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 2.6.0
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubygems_version: 3.5.16
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Comprehensive health checker for Rails applications and dependencies
117
+ test_files: []