visitors 0.0.1 → 0.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/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