Sha256: fda36834e3334f4ef0bd842fe3cc47b3ec44a1e8a7fe42416791ef3a3f582ae1
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true require 'active_support' # Controller helper concern module AwsCron module Controller extend ActiveSupport::Concern class_methods do def timezone(name) @aws_time_provider = ActiveSupport::TimeZone.new(name) end def aws_time_provider @aws_time_provider end end # Runs block and ensures error logging and proper JSON return def run(&block) yield rescue => exception AwsCron::log(:error, exception) ensure return_object end # Runs block using defined timezone for cron scheduling # and ensures error logging and proper JSON return # # For tasks that call this method, make sure to have # cron.yaml call this task in way that allows it to # check programmatically if it needs to be triggered def run_in_tz(cron_str, &block) run do CronRunner.new(cron_str, self.class.aws_time_provider || time_provider || Time).run do yield end end end protected def return_object if respond_to?(:render) # Check for ActionController::Rendering render :json => {message: 'ok'} else raise SecurityError('You must implement return_object with a 200 HTTP response using your preferred web framework') end end # Please use <tt>timezone</tt>, unless you need a custom time provider. def time_provider end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
aws_cron-0.1.4 | lib/aws_cron/controller.rb |