class RooOnRails::Checks::Base
Attributes
context[R]
options[R]
shell[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 18 def initialize(options = {}) @options = options.dup @fix = @options.delete(:fix) { false } @context = @options.delete(:context) { Hashie::Mash.new } @shell = @options.delete(:shell) { Shell.new } @dry_run = options.fetch(:dry_run, false) end
requires(*dependencies)
click to toggle source
Add `dependencies` to the list of prerequisites for this check. If none are specified, return the list of dependencies.
# File lib/roo_on_rails/checks/base.rb, line 13 def self.requires(*dependencies) @requires ||= Set.new dependencies.any? ? @requires.merge(dependencies) : @requires end
Public Instance Methods
run()
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 26 def run dependency_status = resolve dependencies say intro unless dependency_status final_fail! 'Unmet dependencies.' return end return true if @dry_run begin call rescue Failure return false unless @fix say "\t· attempting to fix", %i[yellow] fix @fix = false say "\t· re-checking", %i[yellow] retry end true rescue FinalFailure false end
Protected Instance Methods
call()
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 68 def call final_fail! "this check wasn't implemented" end
dependencies()
click to toggle source
Returns prerequisite checks. Can be overriden.
# File lib/roo_on_rails/checks/base.rb, line 58 def dependencies @dependencies ||= self.class.requires.map { |k| k.new(fix: @fix, context: @context, shell: @shell, **@options) } end
fail!(msg)
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 80 def fail!(msg) say "\t✘ #{msg}", :red raise Failure, msg end
final_fail!(msg)
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 85 def final_fail!(msg) say "\t✘ #{msg}", :red raise FinalFailure, msg end
fix()
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 72 def fix final_fail! "can't fix this on my own" end
intro()
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 64 def intro self.class.name end
pass(msg)
click to toggle source
# File lib/roo_on_rails/checks/base.rb, line 76 def pass(msg) say "\t✔ #{msg}", :green end
signature()
click to toggle source
Return a unique signature for this check
# File lib/roo_on_rails/checks/base.rb, line 91 def signature [self.class.name] end
Private Instance Methods
resolve(deps)
click to toggle source
Run each dependency, then mark them as run.
# File lib/roo_on_rails/checks/base.rb, line 98 def resolve(deps) context.deps ||= {} deps.map { |dep| sig = dep.signature.join('/') if context.deps.key?(sig) context.deps[sig] else context.deps[sig] = dep.run end }.to_a.all? end