visitors 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/config.ru ADDED
@@ -0,0 +1,2 @@
1
+ require File.expand_path('../lib/visitors/server', __FILE__)
2
+ run Visitors::Server
data/lib/visitors/cli.rb CHANGED
@@ -8,6 +8,7 @@ class Visitors::CLI < Thor
8
8
 
9
9
  desc 'web', 'start the web console (NOT IMPLEMENTED)'
10
10
  def web
11
- say 'Not implemented yet', :red
11
+ require 'vegas'
12
+ Vegas::Runner.new(Visitors::Server, 'visitors_app')
12
13
  end
13
14
  end
@@ -0,0 +1,3 @@
1
+ %form{ :action => '/', :method => 'post', :id => 'lookup' }
2
+ %input{ :type => 'text', :id => 'resource_id', :placeholder => 'id', :value => @resource_id }
3
+ %input{ :type => 'submit', :value => 'Get' }
@@ -0,0 +1 @@
1
+ = haml :_form
@@ -0,0 +1,20 @@
1
+ %html
2
+ %head
3
+ %title Stats
4
+
5
+ %link{ :rel => 'stylesheet', :href => '/stylesheets/stats.css' }
6
+ %script{ :src => 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js', :type => 'text/javascript' }
7
+ %body
8
+ #container
9
+ %h1
10
+ %a{ :href => '/' } Stats
11
+ = yield
12
+
13
+ :javascript
14
+ $(function() {
15
+ $('#lookup').submit(function(e) {
16
+ e.preventDefault();
17
+ location.href = '/' + $('#resource_id').val();
18
+ return false;
19
+ });
20
+ });
@@ -0,0 +1,13 @@
1
+ = haml :_form
2
+
3
+ #stats
4
+ - MONTHS.each_with_index do |month, index|
5
+ .month
6
+ .name= month
7
+
8
+ %ul.hits
9
+ - hits = @visits[index + 1]
10
+ - FIELDS.map do |field|
11
+ %li{ :class => field }
12
+ %span.key= field
13
+ %span.value= hits[field.to_s] || 0
@@ -0,0 +1,113 @@
1
+ body
2
+ font: 12px/14px 'helvetica neue', sans-serif
3
+ color: #444
4
+ background-color: #eee
5
+
6
+ h1
7
+ text-transform: uppercase
8
+ font-size: 48px
9
+ letter-spacing: -0.05em
10
+
11
+ a
12
+ color: #444
13
+ text-decoration: none
14
+
15
+ &:hover
16
+ color: #b30000
17
+
18
+ #container
19
+ width: 800px
20
+ margin: 0 auto
21
+ padding: 20px
22
+ background-color: #fff
23
+ border: 1px solid #ccc
24
+ box-shadow: 0 1px 3px rgba(#000, 0.2)
25
+
26
+ #lookup
27
+ input[type="text"]
28
+ border: 1px solid #ccc
29
+ width: 710px
30
+ margin: 0
31
+ padding: 5px
32
+ font: 20px 'helvetica neue', sans-serif
33
+
34
+ input[type="submit"]
35
+ width: 85px
36
+ margin: 0
37
+ padding: 5px
38
+ background-color: #eee
39
+ border: 1px solid #ccc
40
+ border-radius: 5px
41
+ font: 20px 'helvetica neue', sans-serif
42
+
43
+ &:hover
44
+ background-color: #444
45
+ color: #fff
46
+ cursor: pointer
47
+ border-color: #444
48
+
49
+ #stats
50
+ margin-top: 20px
51
+
52
+ .month
53
+ padding: 0 0 10px
54
+ margin: 0 0 10px
55
+ overflow: hidden
56
+ border-bottom: 1px solid #eee
57
+
58
+ &:last-child
59
+ border-bottom: 0 none
60
+ margin-bottom: 0
61
+ padding-bottom: 0
62
+
63
+ .name
64
+ float: left
65
+ width: 150px
66
+ font-size: 14px
67
+ font-weight: bold
68
+ line-height: 26px
69
+
70
+ ul.hits
71
+ float: left
72
+ margin: 0
73
+ padding: 0
74
+
75
+ li
76
+ float: left
77
+ margin-right: 30px
78
+ background: url(/images/show.png) no-repeat 75px center
79
+ width: 70px
80
+ padding: 2px 25px 2px 5px
81
+ border: 1px solid #eee
82
+ background-color: #f9f9f9
83
+ border-radius: 3px
84
+
85
+ &.email
86
+ background-image: url(/images/email.png)
87
+
88
+ &.website
89
+ background-image: url(/images/website.png)
90
+
91
+ &.search
92
+ background-image: url(/images/search.png)
93
+
94
+ &:last-child
95
+ margin-right: 0
96
+
97
+ span
98
+ float: left
99
+ display: inline-block
100
+
101
+ span.key
102
+ line-height: 20px
103
+ color: #ccc
104
+ padding-right: 5px
105
+ width: 30px
106
+ overflow: ellipsis
107
+
108
+ span.value
109
+ font-size: 16px
110
+ line-height: 20px
111
+ font-weight: bold
112
+ text-align: right
113
+ width: 30px
@@ -0,0 +1,49 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'sinatra'
5
+ require 'haml'
6
+ require File.expand_path('../../visitors', __FILE__)
7
+
8
+ class Visitors::Server < Sinatra::Base
9
+ MONTHS = %w[
10
+ January
11
+ February
12
+ March
13
+ April
14
+ May
15
+ June
16
+ July
17
+ August
18
+ September
19
+ October
20
+ November
21
+ December
22
+ ]
23
+
24
+ FIELDS = Visitors::Resource.fields
25
+
26
+ dir = File.expand_path('..', __FILE__)
27
+
28
+ set :views, "#{dir}/server/views"
29
+ set :public, "#{dir}/server/public"
30
+ set :static, true
31
+
32
+ get '/' do
33
+ haml :home
34
+ end
35
+
36
+ post '/' do
37
+ redirect params[:resource_id]
38
+ end
39
+
40
+ get '/:id' do
41
+ @resource_id = params[:id]
42
+ @visits = Visitors::Resource.find(params[:id])
43
+ haml :show
44
+ end
45
+
46
+ get '/stylesheets/stats.css' do
47
+ sass :stats
48
+ end
49
+ end
@@ -1,3 +1,3 @@
1
1
  module Visitors
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/visitors.rb CHANGED
@@ -4,6 +4,7 @@ require 'visitors/helpers'
4
4
  module Visitors
5
5
  extend self
6
6
 
7
+ autoload :Server, 'visitors/server'
7
8
  autoload :Config, 'visitors/config'
8
9
  autoload :Resource, 'visitors/resource'
9
10
 
data/visitors.gemspec CHANGED
@@ -26,12 +26,15 @@ Gem::Specification.new do |s|
26
26
  'dm-migrations' => '1.0.2',
27
27
  'dm-postgres-adapter' => '1.0.2',
28
28
  'sinatra' => '1.1.3',
29
- 'thor' => '0.14.6'
29
+ 'thor' => '0.14.6',
30
+ 'haml' => '3.0.25',
31
+ 'vegas' => '0.1.8'
30
32
  }.each { |gem, version| s.add_dependency gem, "~> #{version}" }
31
33
 
32
34
  {
33
35
  'rspec' => '2.5.0',
34
36
  'guard-rspec' => '0.1.9',
35
- 'rb-fsevent' => '0.3.10'
37
+ 'rb-fsevent' => '0.3.10',
38
+ 'shotgun' => '0.9'
36
39
  }.each { |gem, version| s.add_development_dependency gem, "~> #{version}" }
37
40
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: visitors
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Conroy-Finn
@@ -91,38 +91,71 @@ dependencies:
91
91
  type: :runtime
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
- name: rspec
94
+ name: haml
95
95
  prerelease: false
96
96
  requirement: &id008 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 3.0.25
102
+ type: :runtime
103
+ version_requirements: *id008
104
+ - !ruby/object:Gem::Dependency
105
+ name: vegas
106
+ prerelease: false
107
+ requirement: &id009 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ~>
111
+ - !ruby/object:Gem::Version
112
+ version: 0.1.8
113
+ type: :runtime
114
+ version_requirements: *id009
115
+ - !ruby/object:Gem::Dependency
116
+ name: rspec
117
+ prerelease: false
118
+ requirement: &id010 !ruby/object:Gem::Requirement
97
119
  none: false
98
120
  requirements:
99
121
  - - ~>
100
122
  - !ruby/object:Gem::Version
101
123
  version: 2.5.0
102
124
  type: :development
103
- version_requirements: *id008
125
+ version_requirements: *id010
104
126
  - !ruby/object:Gem::Dependency
105
127
  name: guard-rspec
106
128
  prerelease: false
107
- requirement: &id009 !ruby/object:Gem::Requirement
129
+ requirement: &id011 !ruby/object:Gem::Requirement
108
130
  none: false
109
131
  requirements:
110
132
  - - ~>
111
133
  - !ruby/object:Gem::Version
112
134
  version: 0.1.9
113
135
  type: :development
114
- version_requirements: *id009
136
+ version_requirements: *id011
115
137
  - !ruby/object:Gem::Dependency
116
138
  name: rb-fsevent
117
139
  prerelease: false
118
- requirement: &id010 !ruby/object:Gem::Requirement
140
+ requirement: &id012 !ruby/object:Gem::Requirement
119
141
  none: false
120
142
  requirements:
121
143
  - - ~>
122
144
  - !ruby/object:Gem::Version
123
145
  version: 0.3.10
124
146
  type: :development
125
- version_requirements: *id010
147
+ version_requirements: *id012
148
+ - !ruby/object:Gem::Dependency
149
+ name: shotgun
150
+ prerelease: false
151
+ requirement: &id013 !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ~>
155
+ - !ruby/object:Gem::Version
156
+ version: "0.9"
157
+ type: :development
158
+ version_requirements: *id013
126
159
  description: Redis-backed activity storage to track visits to different parts of your Ruby web app in real-time.
127
160
  email:
128
161
  - james@logi.cl
@@ -141,6 +174,7 @@ files:
141
174
  - README.md
142
175
  - Rakefile
143
176
  - bin/visitors
177
+ - config.ru
144
178
  - config.yml
145
179
  - lib/visitors.rb
146
180
  - lib/visitors/archiver.rb
@@ -149,6 +183,17 @@ files:
149
183
  - lib/visitors/helpers.rb
150
184
  - lib/visitors/models.rb
151
185
  - lib/visitors/resource.rb
186
+ - lib/visitors/server.rb
187
+ - lib/visitors/server/public/images/email.png
188
+ - lib/visitors/server/public/images/phone.png
189
+ - lib/visitors/server/public/images/search.png
190
+ - lib/visitors/server/public/images/show.png
191
+ - lib/visitors/server/public/images/website.png
192
+ - lib/visitors/server/views/_form.haml
193
+ - lib/visitors/server/views/home.haml
194
+ - lib/visitors/server/views/layout.haml
195
+ - lib/visitors/server/views/show.haml
196
+ - lib/visitors/server/views/stats.sass
152
197
  - lib/visitors/version.rb
153
198
  - spec/spec_helper.rb
154
199
  - spec/visitors/config_spec.rb