Module: Statlysis::Utils

Defined in:
lib/statlysis/utils.rb

Class Method Summary collapse

Class Method Details

.is_activerecord?(data) ⇒ Boolean

Returns:

  • (Boolean)


6
# File 'lib/statlysis/utils.rb', line 6

def is_activerecord?(data); data.is_a?(ActiveRecordDataset) || !!((data.respond_to?(:included_modules) ? data.included_modules : []).index(ActiveRecord::Store)) end

.is_mongoid?(data) ⇒ Boolean

Returns:

  • (Boolean)


7
# File 'lib/statlysis/utils.rb', line 7

def is_mongoid?(data); data.is_a?(MongoidDataset) || !!((data.respond_to?(:included_modules) ? data.included_modules : []).index(Mongoid::Document)) end

.name(data) ⇒ Object



8
9
10
11
# File 'lib/statlysis/utils.rb', line 8

def name(data)
  return :collection_name if Utils.is_mongoid?(data)
  return :table_name      if Utils.is_activerecord?(data)
end

.normalise_name(*name) ⇒ Object



38
39
40
# File 'lib/statlysis/utils.rb', line 38

def normalise_name *name
  Array(name).flatten.compact.map {|s| s.to_s.gsub('_','') }.reject {|s| s.blank? }.join('_').downcase
end

.setup_pattern_table_and_model(tn) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/statlysis/utils.rb', line 13

def setup_pattern_table_and_model tn
  # ensure statlysis table
  tn = tn.pluralize
  if not Statlysis.sequel.table_exists?(tn)
    Statlysis.sequel.create_table tn, DefaultTableOpts.merge(:engine => "InnoDB") do
      primary_key :id
      String :pattern
      index  :pattern
    end
    Statlysis.sequel.add_column tn, :result, String, :text => true
  end

  # generate a statlysis kv model
  str = tn.to_s.singularize.camelize
  class_eval <<-MODEL, __FILE__, __LINE__ + 1
    class ::#{str} < Sequel::Model;
      self.set_dataset :#{tn}
      def self.[] item_id
        JSON.parse(find_or_create(:pattern => item_id).result) rescue []
      end
    end;
  MODEL
  {:table => tn, :model => str.constantize}
end

.sha1_name(name) ⇒ Object



42
# File 'lib/statlysis/utils.rb', line 42

def sha1_name name; Digest::SHA1.hexdigest Array(name).map(&:to_s).join end