Sha256: 6aeefd9f897ba3fd5949326556adb82c8b2a5354fabb73b75ff5cbbad3823066

Contents?: true

Size: 1.35 KB

Versions: 5

Compression:

Stored size: 1.35 KB

Contents

require 'date'
require 'logger'

require_relative 'vedeu/repository/command_repository'
require_relative 'vedeu/repository/interface_repository'
require_relative 'vedeu/support/exit'
require_relative 'vedeu/launcher'
require_relative 'vedeu/version'

module Vedeu
  # :nocov:
  module ClassMethods
    def command(name, options = {})
      CommandRepository.create({ name: stringify_symbols(name) }
                       .merge!(options))
    end

    def interface(name, options = {})
      InterfaceRepository.create({ name: stringify_symbols(name) }
                         .merge!(options))
    end

    private

    def stringify_symbols(value)
      value.is_a?(::Symbol) ? value.to_s : value
    end
  end

  def self.logger
    @logger ||= Logger.new(root_path + '/logs/vedeu.log').tap do |log|
      log.formatter = proc do |_, time, _, msg|
        "\n#{time.iso8601}: #{msg}\n"
      end
    end
  end

  def self.debug(filename = 'profile.html', &block)
    RubyProf.start

    yield

    result = RubyProf.stop
    result.eliminate_methods!([/^Array/, /^Hash/])

    File.open(Vedeu.root_path + '/tmp/' + filename, 'w') do |file|
      RubyProf::CallStackPrinter.new(result).print(file)
    end
  end

  def self.included(receiver)
    receiver.extend(ClassMethods)
  end

  private

  def self.root_path
    File.expand_path('../..', __FILE__)
  end
  # :nocov:
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vedeu-0.0.30 lib/vedeu.rb
vedeu-0.0.29 lib/vedeu.rb
vedeu-0.0.28 lib/vedeu.rb
vedeu-0.0.27 lib/vedeu.rb
vedeu-0.0.26 lib/vedeu.rb