Class: Railswatch::Gems::RakeExt
- Inherits:
-
Object
- Object
- Railswatch::Gems::RakeExt
- Defined in:
- lib/railswatch/gems/rake_ext.rb
Class Method Summary collapse
- .build_rake_record(task, args, started_at, status) ⇒ Object
- .find_task_name(*args) ⇒ Object
-
.init ⇒ Object
rubocop:disable Metrics/MethodLength.
- .monitoring_storage_available? ⇒ Boolean
- .resolved_task_name(task, args) ⇒ Object
- .store_invocation(task, args, started_at, status) ⇒ Object
Class Method Details
.build_rake_record(task, args, started_at, status) ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/railswatch/gems/rake_ext.rb', line 57 def build_rake_record(task, args, started_at, status) Railswatch::Models::RakeRecord.new( task: resolved_task_name(task, args), datetime: started_at.strftime(Railswatch::FORMAT), datetimei: started_at.to_i, duration: (Railswatch::Utils.time - started_at) * 1000, status: status ) end |
.find_task_name(*args) ⇒ Object
31 32 33 |
# File 'lib/railswatch/gems/rake_ext.rb', line 31 def find_task_name(*args) (ARGV + args).compact end |
.init ⇒ Object
rubocop:disable Metrics/MethodLength
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/railswatch/gems/rake_ext.rb', line 7 def init # rubocop:disable Metrics/MethodLength ::Rake::Task.class_eval do next if method_defined?(:invoke_with_railswatch) def invoke_with_railswatch(*args) now = Railswatch::Utils.time status = 'success' invoke_without_new_railswatch(*args) rescue Exception => e # rubocop:disable Lint/RescueException status = 'error' raise(e) ensure Railswatch::Gems::RakeExt.store_invocation(self, args, now, status) end alias_method :invoke_without_new_railswatch, :invoke alias_method :invoke, :invoke_with_railswatch def invoke(*args) # rubocop:disable Lint/DuplicateMethods invoke_with_railswatch(*args) end end end |
.monitoring_storage_available? ⇒ Boolean
49 50 51 52 53 54 55 |
# File 'lib/railswatch/gems/rake_ext.rb', line 49 def monitoring_storage_available? Railswatch::Models::RakeRecord.connection.data_source_exists?( Railswatch::Models::RakeRecord.table_name ) rescue ActiveRecord::NoDatabaseError, ActiveRecord::StatementInvalid false end |
.resolved_task_name(task, args) ⇒ Object
44 45 46 47 |
# File 'lib/railswatch/gems/rake_ext.rb', line 44 def resolved_task_name(task, args) task_info = find_task_name(*args) task_info.empty? ? [task.name] : task_info end |
.store_invocation(task, args, started_at, status) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/railswatch/gems/rake_ext.rb', line 35 def store_invocation(task, args, started_at, status) return if Railswatch.skipable_rake_tasks.include?(task.name) return unless monitoring_storage_available? build_rake_record(task, args, started_at, status).save ensure CurrentRequest.cleanup end |