Class: MongodbLogger::ServerModel::Analytic
- Inherits:
-
Object
- Object
- MongodbLogger::ServerModel::Analytic
- Defined in:
- lib/mongodb_logger/server/model/analytic.rb
Constant Summary
- FIXED_PARAMS_ON_FORM =
['type', 'start_date', 'end_date']
- ANALYTIC_TYPES =
[[0, "Count of requests"], [1, "Count of errors"]]
- ANALYTIC_HEADERS =
[ { :key => ["year", "month", "day"], :value => ["count"] }, { :key => ["year", "month", "day"], :value => ["count"] } ]
- FORM_NAME =
"analytic"
Instance Attribute Summary (collapse)
-
- (Object) collection
readonly
Returns the value of attribute collection.
-
- (Object) params
readonly
Returns the value of attribute params.
Instance Method Summary (collapse)
- - (Object) count_of_requests(conditions, is_errors = false)
- - (Object) create_variable(k, v)
- - (Object) form_name
- - (Object) get_data
-
- (Analytic) initialize(collection, params)
constructor
A new instance of Analytic.
Constructor Details
- (Analytic) initialize(collection, params)
A new instance of Analytic
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 21 def initialize(collection, params) FIXED_PARAMS_ON_FORM.each do |key| create_variable(key, nil) end @collection = collection @params = params @params.each do |k,v| self.send("#{k}=", v) if self.respond_to?(k) && v && !v.blank? end unless @params.blank? # def values self.start_date ||= Time.now.strftime('%Y-%m-%d') self.end_date ||= Time.now.strftime('%Y-%m-%d') end |
Instance Attribute Details
- (Object) collection (readonly)
Returns the value of attribute collection
17 18 19 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 17 def collection @collection end |
- (Object) params (readonly)
Returns the value of attribute params
17 18 19 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 17 def params @params end |
Instance Method Details
- (Object) count_of_requests(conditions, is_errors = false)
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 46 def count_of_requests(conditions, is_errors = false) collection_name = "mongodb_logger_count_of_requests" map = "function() { var key = {year: this.request_time.getFullYear(), month: this.request_time.getMonth(), day: this.request_time.getDate()}; emit(key, {count: 1});}" reduce_count = "function(key, values) { var sum = 0; values.forEach(function(f) { sum += f.count; }); return {count: sum};}" if is_errors collection_name = "mongodb_logger_count_of_errors" conditions.merge!({:is_exception => true}) end @collection.map_reduce(map, reduce_count, {:out => collection_name, :query => conditions, :sort => ['$natural', -1]}) end |
- (Object) create_variable(k, v)
36 37 38 39 40 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 36 def create_variable(k, v) self.instance_variable_set("@#{k}", v) ## create instance variable self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")}) ## method to return instance variable self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)}) ## method to set instance variable end |
- (Object) form_name
42 43 44 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 42 def form_name FORM_NAME end |
- (Object) get_data
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/mongodb_logger/server/model/analytic.rb', line 57 def get_data m_start= Date.parse(self.start_date) rescue nil m_start = Date.today if m_start.nil? m_end = Date.parse(self.end_date) rescue nil m_end = Date.today if m_end.nil? conditions = { :request_time => { '$gte' => Time.utc(m_start.year, m_start.month, m_start.day, 0, 0, 0), '$lte' => Time.utc(m_end.year, m_end.month, m_end.day, 23, 59, 59) }} mapreduce_collection = case self.type.to_i when 0 count_of_requests(conditions) when 1 count_of_requests(conditions, true) else count_of_requests(conditions) end {:data => mapreduce_collection.find(), :headers => ANALYTIC_HEADERS[self.type.to_i]} end |