rack-analytics 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-analytics (0.0.1)
4
+ rack-analytics (0.0.2)
5
5
  activesupport
6
6
  bson_ext
7
7
  mongo
@@ -10,12 +10,11 @@ PATH
10
10
  GEM
11
11
  remote: http://rubygems.org/
12
12
  specs:
13
- activesupport (3.0.3)
14
- bson (1.2.0)
15
- bson_ext (1.2.0)
16
- mongo (1.2.0)
17
- bson (>= 1.2.0)
18
- nokogiri (1.4.4)
13
+ activesupport (3.0.4)
14
+ bson (1.2.2)
15
+ bson_ext (1.2.2)
16
+ mongo (1.2.2)
17
+ bson (>= 1.2.2)
19
18
  rack (1.2.1)
20
19
  rack-test (0.5.7)
21
20
  rack (>= 1.0)
@@ -28,21 +27,12 @@ GEM
28
27
  tilt (~> 1.2)
29
28
  term-ansicolor (1.0.5)
30
29
  tilt (1.2.1)
31
- webrat (0.7.3)
32
- nokogiri (>= 1.2.0)
33
- rack (>= 1.0)
34
- rack-test (>= 0.5.3)
35
30
 
36
31
  PLATFORMS
37
32
  ruby
38
33
 
39
34
  DEPENDENCIES
40
- activesupport
41
- bson_ext
42
- mongo
43
- rack
44
35
  rack-analytics!
45
36
  rack-test
46
37
  riot
47
38
  sinatra
48
- webrat
data/README.markdown CHANGED
@@ -4,9 +4,21 @@
4
4
 
5
5
  All requests are created on a separated thread, so it won't add a lot of overhead on each requests.
6
6
 
7
- ## Instalation ##
7
+ ## Installation on Rails 3 ##
8
8
 
9
- If you're using Bundler (like Rails 3, for example), you can add this line on your `Gemfile`:
9
+ Add this line on your `Gemfile`:
10
+
11
+ gem 'rack-analytics'
12
+
13
+ Run `rails generate rack:analytics:install` to install the initializer file on `config/initializers/rack-analytics.rb`. Some configuration options are highlighted on this file.
14
+
15
+ Then, on your `config/application.rb`, add the following line after inside your Application class:
16
+
17
+ config.middlewares.insert_after Rack::Lock, Rack::Analytics::RequestLogger
18
+
19
+ ## Installation on another Rack applications ##
20
+
21
+ If you're using Bundler, you can add this line on your `Gemfile`:
10
22
 
11
23
  gem 'rack-analytics'
12
24
 
@@ -72,7 +84,7 @@ The env is a hash with all the parameters of the request, and the data is the fi
72
84
  * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
73
85
  * Send me a pull request. Bonus points for topic branches.
74
86
 
75
- ## Licence ##
87
+ ## License ##
76
88
 
77
89
  Copyright (c) 2011, Cainã Costa <cainan.costa@gmail.com>
78
90
 
@@ -84,4 +96,4 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE
84
96
 
85
97
  Those are the people that helped me with this project, both with code and/or with guidance. Put your name here if you create a pull request and think you deserves it!
86
98
 
87
- * Rafael França <rafael.ufs@gmail.com>
99
+ * Rafael França <rafael.ufs@gmail.com>
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Analytics
3
+ module Generators
4
+ class InstallGenerator < Rails::Generators::Base
5
+ desc "Copy rack-analytics default initializers"
6
+ source_root ::File.expand_path('../templates', __FILE__)
7
+
8
+ def copy_initializers
9
+ copy_file 'rack-analytics.rb', 'config/initializers/rack-analytics.rb'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ # Config file for Rack::Analytics
2
+
3
+ Rack::Analytics.setup do |config|
4
+ # To change the database name only
5
+ # config.db_name = 'mydb'
6
+
7
+ # To change the database connection completely
8
+ # config.db = Mongo::Connection.new.db 'mydb'
9
+
10
+ # Parser configuration
11
+ # When this is active, only those fields will be logged
12
+ # config.parser.only = ['time', 'path', 'user_agent', 'referral']
13
+
14
+ # The fields that shouldn't be parsed
15
+ # config.parser.except = nil
16
+ end
@@ -2,6 +2,7 @@ require 'rack/analytics/request_logger'
2
2
  require 'rack/analytics/request_parser'
3
3
 
4
4
  require 'active_support/core_ext/module/attribute_accessors'
5
+ require 'mongo'
5
6
 
6
7
  module Rack
7
8
  module Analytics
@@ -33,5 +34,9 @@ module Rack
33
34
 
34
35
  thread
35
36
  end
37
+
38
+ def self.setup
39
+ yield self
40
+ end
36
41
  end
37
- end
42
+ end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Analytics
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
data/test.watchr ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ watch( 'test/.*_test\.rb' ) {|md| system("rake test") }
4
+ watch( 'lib/.*\.rb' ) {|md| system("rake test") }
@@ -0,0 +1,19 @@
1
+ require 'teststrap'
2
+
3
+ context Rack::Analytics do
4
+ context "it should change configuration when setup'ing" do
5
+ helper(:object) { Object.new }
6
+
7
+ context "db_name" do
8
+ setup do
9
+ Rack::Analytics.setup do |config|
10
+ config.db_name = "foo"
11
+ end
12
+
13
+ Rack::Analytics
14
+ end
15
+
16
+ asserts('should set db name correctly') { topic.db_name }.equals "foo"
17
+ end
18
+ end
19
+ end
@@ -55,16 +55,11 @@ context "Rack::Analytics::RequestLogger" do
55
55
  asserts("counter hasn't incremented") { db['views'].count }.equals 0
56
56
  end
57
57
 
58
- context "should save the path of the access" do
59
- setup { get '/' }
60
-
61
- asserts('it should have a time key') { db['views'].find_one }.includes 'path'
62
- asserts('it should have a time set') { db['views'].find_one['path'] }.equals '/'
63
- end
64
-
65
- context "should save the time of the access" do
58
+ context "should save the path and the time of the access" do
66
59
  setup { get '/' }
67
60
 
61
+ asserts('it should have a path key') { db['views'].find_one }.includes 'path'
62
+ asserts('it should have a path set') { db['views'].find_one['path'] }.equals '/'
68
63
  asserts('it should have a time key') { db['views'].find_one }.includes 'time'
69
64
  asserts('it should have a time set') { db['views'].find_one['time'] }.kind_of Time
70
65
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-analytics
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
4
+ hash: 25
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Cain\xC3\xA3 Costa"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-04 00:00:00 -02:00
18
+ date: 2011-02-19 00:00:00 -02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -131,12 +131,16 @@ files:
131
131
  - Gemfile.lock
132
132
  - README.markdown
133
133
  - Rakefile
134
+ - lib/generators/rack/analytics/install_generator.rb
135
+ - lib/generators/rack/analytics/templates/rack-analytics.rb
134
136
  - lib/rack-analytics.rb
135
137
  - lib/rack/analytics.rb
136
138
  - lib/rack/analytics/request_logger.rb
137
139
  - lib/rack/analytics/request_parser.rb
138
140
  - lib/rack/analytics/version.rb
139
141
  - rack-analytics.gemspec
142
+ - test.watchr
143
+ - test/rack-analytics_test.rb
140
144
  - test/request_logger_test.rb
141
145
  - test/request_parser_test.rb
142
146
  - test/support/dummy_app.rb
@@ -172,11 +176,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
176
  requirements: []
173
177
 
174
178
  rubyforge_project: rack-analytics
175
- rubygems_version: 1.3.7
179
+ rubygems_version: 1.5.2
176
180
  signing_key:
177
181
  specification_version: 3
178
182
  summary: A rack middleware that collects access statistics
179
183
  test_files:
184
+ - test/rack-analytics_test.rb
180
185
  - test/request_logger_test.rb
181
186
  - test/request_parser_test.rb
182
187
  - test/support/dummy_app.rb