mole 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mole/models/mole_feature.rb +22 -9
- data/lib/mole/models/mole_log.rb +6 -5
- data/lib/mole/version.rb +1 -1
- data/spec/models/mole_feature_spec.rb +12 -1
- data/spec/models/mole_log_spec.rb +3 -2
- metadata +1 -1
@@ -17,19 +17,28 @@ class MoleFeature < ActiveRecord::Base
|
|
17
17
|
def find_exception_feature( app_name )
|
18
18
|
find_or_create_feature( exception, app_name )
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
|
+
# Find the all feature ( wildcard feature for given app )
|
21
22
|
def find_all_feature( app_name )
|
22
23
|
find_or_create_feature( all, app_name )
|
23
24
|
end
|
24
|
-
|
25
|
+
|
26
|
+
# Find all the MOled applications
|
27
|
+
def find_moled_application_names
|
28
|
+
res = find( :all,
|
29
|
+
:select => "distinct( app_name )",
|
30
|
+
:order => "name asc" )
|
31
|
+
res.map(&:app_name)
|
32
|
+
end
|
33
|
+
|
25
34
|
# Finds all the features available for a given application
|
26
35
|
def find_features( app_name )
|
27
36
|
# Creates the all feature if necessary
|
28
37
|
find_all_feature( app_name )
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
38
|
+
find( :all,
|
39
|
+
:conditions => ["app_name = ?", app_name],
|
40
|
+
:select => "id, name, context",
|
41
|
+
:order => "name asc" )
|
33
42
|
end
|
34
43
|
|
35
44
|
# locates an existing feature or create a new one if it does not exist.
|
@@ -37,9 +46,13 @@ class MoleFeature < ActiveRecord::Base
|
|
37
46
|
if name.nil? or name.empty?
|
38
47
|
::Mole.logger.error( "--- MOLE ERROR - Invalid feature. Empty or nil" )
|
39
48
|
return nil
|
40
|
-
end
|
41
|
-
|
42
|
-
|
49
|
+
end
|
50
|
+
if ctx_name
|
51
|
+
res = find_by_name_and_context_and_app_name( name, ctx_name, app_name )
|
52
|
+
else
|
53
|
+
res = find_by_name_and_app_name( name, app_name )
|
54
|
+
end
|
55
|
+
res || create(:name => name,:context => ctx_name, :app_name => app_name )
|
43
56
|
end
|
44
57
|
end
|
45
58
|
end
|
data/lib/mole/models/mole_log.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
class MoleLog < ActiveRecord::Base
|
5
5
|
belongs_to :mole_feature
|
6
6
|
|
7
|
-
class << self
|
7
|
+
class << self
|
8
8
|
# mole the bastard - create db entry into mole logs
|
9
9
|
def log_it( context, feature, user_id, args )
|
10
10
|
args ||= "no args"
|
@@ -16,8 +16,8 @@ class MoleLog < ActiveRecord::Base
|
|
16
16
|
:params => args.to_yaml,
|
17
17
|
:ip_address => ip_addr,
|
18
18
|
:browser_type => browser_type )
|
19
|
-
end
|
20
|
-
|
19
|
+
end
|
20
|
+
|
21
21
|
# extract orginating ip address and browser type
|
22
22
|
def log_details( context ) #:nodoc:
|
23
23
|
ip_addr, browser_type = nil
|
@@ -25,6 +25,7 @@ class MoleLog < ActiveRecord::Base
|
|
25
25
|
ip_addr, browser_type = context.request.env['REMOTE_ADDR'], context.request.env['HTTP_USER_AGENT']
|
26
26
|
end
|
27
27
|
return ip_addr, browser_type
|
28
|
-
end
|
29
|
-
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
30
31
|
end
|
data/lib/mole/version.rb
CHANGED
@@ -3,7 +3,10 @@ require File.join(File.dirname(__FILE__), "..", "spec_helper" )
|
|
3
3
|
describe MoleFeature do
|
4
4
|
before( :each ) do
|
5
5
|
::Mole.reset_configuration!
|
6
|
-
::Mole.initialize( :
|
6
|
+
::Mole.initialize( :application => "Test",
|
7
|
+
:mode => :persistent,
|
8
|
+
:log_level => :debug,
|
9
|
+
:moleable => true )
|
7
10
|
end
|
8
11
|
|
9
12
|
it "should find or create known features correctly" do
|
@@ -33,5 +36,13 @@ describe MoleFeature do
|
|
33
36
|
MoleFeature.find_or_create_feature( "Fred", ::Mole.application, self.class.name )
|
34
37
|
features = MoleFeature.find_features( ::Mole.application )
|
35
38
|
features.should have(4).mole_features
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should find moled application names correctly" do
|
42
|
+
MoleFeature.find_moled_application_names.should be_empty
|
43
|
+
%w[ all performance exception].each do |f|
|
44
|
+
feature = MoleFeature.send( "find_#{f}_feature".to_sym, ::Mole.application )
|
45
|
+
end
|
46
|
+
MoleFeature.find_moled_application_names.should == ["Test"]
|
36
47
|
end
|
37
48
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "spec_helper" )
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
describe MoleLog do
|
4
5
|
before( :each ) do
|
@@ -42,8 +43,8 @@ describe MoleLog do
|
|
42
43
|
log = check_it( feature, 400, @args )
|
43
44
|
log.ip_address.should == "1.1.1.1"
|
44
45
|
log.browser_type.should == "GodZilla"
|
45
|
-
end
|
46
|
-
|
46
|
+
end
|
47
|
+
|
47
48
|
module Moled
|
48
49
|
class Controller
|
49
50
|
class Request
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mole
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
6
|
+
version: 1.0.2
|
7
7
|
date: 2008-03-02 00:00:00 -07:00
|
8
8
|
summary: A flexible way to track user's interactions within your ruby web applications
|
9
9
|
require_paths:
|