Browse Source

Account for data that can't be cached

Andrew Kane 8 years ago
parent
commit
c20364611b
3 changed files with 9 additions and 5 deletions
  1. 1 0
      blazer.gemspec
  2. 2 1
      lib/blazer.rb
  3. 6 4
      lib/blazer/data_source.rb

+ 1 - 0
blazer.gemspec

@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
 
   spec.add_dependency "rails"
   spec.add_dependency "chartkick"
+  spec.add_dependency "safely_block", ">= 0.1.1"
 
   spec.add_development_dependency "bundler", "~> 1.7"
   spec.add_development_dependency "rake", "~> 10.0"

+ 2 - 1
lib/blazer.rb

@@ -4,6 +4,7 @@ require "chartkick"
 require "blazer/version"
 require "blazer/data_source"
 require "blazer/engine"
+require "safely/core"
 
 module Blazer
   class Error < StandardError; end
@@ -67,7 +68,7 @@ module Blazer
     checks = Blazer::Check.includes(:query)
     checks = checks.where(schedule: schedule) if schedule
     checks.find_each do |check|
-      run_check(check)
+      Safely.safely { run_check(check) }
     end
   end
 

+ 6 - 4
lib/blazer/data_source.rb

@@ -237,13 +237,15 @@ module Blazer
         end
       end
 
-      just_cached = false
+      cache_data = nil
       if !error && (cache_mode == "all" || (cache_mode == "slow" && duration >= cache_slow_threshold))
-        Blazer.cache.write(cache_key(statement), Marshal.dump([columns, rows, Time.now]), expires_in: cache_expires_in.to_f * 60)
-        just_cached = true
+        cache_data = Marshal.dump([columns, rows, Time.now]) rescue nil
+        if cache_data
+          Blazer.cache.write(cache_key(statement), cache_data, expires_in: cache_expires_in.to_f * 60)
+        end
       end
 
-      [columns, rows, error, just_cached]
+      [columns, rows, error, !cache_data.nil?]
     end
 
     def adapter_name