diff --git a/Gemfile b/Gemfile index c84b457..3b0d565 100644 --- a/Gemfile +++ b/Gemfile @@ -10,3 +10,5 @@ gem "rake", "~> 13.0" gem "minitest", "~> 5.0" gem "standard", "~> 1.3" + +gem "actionmailer", ">= 7.0" diff --git a/Gemfile.lock b/Gemfile.lock index 9a997c5..9d721de 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,6 @@ PATH remote: . specs: solid_errors (0.6.1) - actionmailer (>= 7.0) actionpack (>= 7.0) actionview (>= 7.0) activerecord (>= 7.0) @@ -63,7 +62,7 @@ GEM concurrent-ruby (1.3.4) connection_pool (2.4.1) crass (1.0.6) - date (3.3.4) + date (3.4.1) drb (2.2.1) erubi (1.13.0) globalid (1.2.1) @@ -88,14 +87,14 @@ GEM net-smtp mini_mime (1.1.5) minitest (5.25.1) - net-imap (0.4.14) + net-imap (0.5.6) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.2) timeout - net-smtp (0.5.0) + net-smtp (0.5.1) net-protocol nokogiri (1.16.7-arm64-darwin) racc (~> 1.4) @@ -188,6 +187,7 @@ PLATFORMS x86_64-linux DEPENDENCIES + actionmailer (>= 7.0) minitest (~> 5.0) rake (~> 13.0) solid_errors! diff --git a/app/mailers/solid_errors/error_mailer.rb b/app/mailers/solid_errors/error_mailer.rb index b413da2..59ae375 100644 --- a/app/mailers/solid_errors/error_mailer.rb +++ b/app/mailers/solid_errors/error_mailer.rb @@ -1,7 +1,10 @@ module SolidErrors # adapted from: https://github.com/codergeek121/email_error_reporter/blob/main/lib/email_error_reporter/error_mailer.rb - class ErrorMailer < ActionMailer::Base + class ErrorMailer < (defined?(ActionMailer::Base) ? ActionMailer::Base : Object) def error_occurred(occurrence) + unless defined?(ActionMailer::Base) + raise "ActionMailer is not available. Make sure that you require \"action_mailer/railtie\" in application.rb" + end @occurrence = occurrence @error = occurrence.error subject = "#{@error.severity_emoji} #{@error.exception_class}" diff --git a/lib/solid_errors/engine.rb b/lib/solid_errors/engine.rb index 596eeb2..1a92aa5 100644 --- a/lib/solid_errors/engine.rb +++ b/lib/solid_errors/engine.rb @@ -10,6 +10,11 @@ class Engine < ::Rails::Engine config.solid_errors.each do |name, value| SolidErrors.public_send(:"#{name}=", value) end + + if SolidErrors.send_emails? && !defined?(ActionMailer) + raise "You have configured solid_errors.send_emails = true but ActionMailer is not available." \ + "Make sure that you require \"action_mailer/railtie\" in application.rb or set solid_errors.send_emails = false." + end end initializer "solid_errors.active_record.error_subscriber" do diff --git a/solid_errors.gemspec b/solid_errors.gemspec index 67e2228..acc5024 100644 --- a/solid_errors.gemspec +++ b/solid_errors.gemspec @@ -21,7 +21,6 @@ Gem::Specification.new do |spec| end ">= 7.0".tap do |rails_version| - spec.add_dependency "actionmailer", rails_version spec.add_dependency "actionpack", rails_version spec.add_dependency "actionview", rails_version spec.add_dependency "activerecord", rails_version