mail_stats 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/.rspec +2 -0
  2. data/.rvmrc +4 -0
  3. data/Gemfile +14 -0
  4. data/Gemfile.lock +124 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.rdoc +22 -0
  7. data/Rakefile +38 -0
  8. data/app/controllers/mail_stats/application_controller.rb +32 -0
  9. data/app/controllers/mail_stats/link_controller.rb +15 -0
  10. data/app/controllers/mail_stats/pixel_controller.rb +15 -0
  11. data/app/models/mail_stats/link.rb +10 -0
  12. data/app/models/mail_stats/pixel.rb +9 -0
  13. data/app/models/mail_stats/sent_mail.rb +7 -0
  14. data/app/models/mail_stats/visit.rb +6 -0
  15. data/config/routes.rb +4 -0
  16. data/db/migrate/20111006191933_create_mail_stats_links.rb +10 -0
  17. data/db/migrate/20111007095146_create_mail_stats_pixels.rb +9 -0
  18. data/db/migrate/20111011075844_create_mail_stats_sent_mails.rb +11 -0
  19. data/db/migrate/20111011080641_create_mail_stats_visits.rb +9 -0
  20. data/lib/generators/mail_stats/install/USAGE +8 -0
  21. data/lib/generators/mail_stats/install/install_generator.rb +11 -0
  22. data/lib/generators/mail_stats/install/templates/initializer.rb +5 -0
  23. data/lib/mail_stats.rb +9 -0
  24. data/lib/mail_stats/base.rb +7 -0
  25. data/lib/mail_stats/engine.rb +8 -0
  26. data/lib/mail_stats/interceptors/interceptor_prototype.rb +17 -0
  27. data/lib/mail_stats/interceptors/mail_stats_interceptor.rb +64 -0
  28. data/lib/mail_stats/version.rb +3 -0
  29. data/spec/controllers/mail_stats/link_controller_spec.rb +28 -0
  30. data/spec/controllers/mail_stats/pixel_controller_spec.rb +27 -0
  31. data/spec/dummy/Gemfile +30 -0
  32. data/spec/dummy/Gemfile.lock +112 -0
  33. data/spec/dummy/README +261 -0
  34. data/spec/dummy/Rakefile +7 -0
  35. data/spec/dummy/app/assets/images/rails.png +0 -0
  36. data/spec/dummy/app/assets/javascripts/application.js +7 -0
  37. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  38. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  39. data/spec/dummy/app/controllers/site_controller.rb +4 -0
  40. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  41. data/spec/dummy/app/mailers/article_mailer.rb +9 -0
  42. data/spec/dummy/app/views/article_mailer/new_article.html.erb +16 -0
  43. data/spec/dummy/app/views/article_mailer/new_article.text.erb +5 -0
  44. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  45. data/spec/dummy/config.ru +4 -0
  46. data/spec/dummy/config/application.rb +49 -0
  47. data/spec/dummy/config/boot.rb +6 -0
  48. data/spec/dummy/config/database.yml +25 -0
  49. data/spec/dummy/config/environment.rb +5 -0
  50. data/spec/dummy/config/environments/development.rb +30 -0
  51. data/spec/dummy/config/environments/production.rb +60 -0
  52. data/spec/dummy/config/environments/test.rb +42 -0
  53. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  54. data/spec/dummy/config/initializers/inflections.rb +10 -0
  55. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  56. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  57. data/spec/dummy/config/initializers/session_store.rb +8 -0
  58. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  59. data/spec/dummy/config/locales/en.yml +5 -0
  60. data/spec/dummy/config/routes.rb +58 -0
  61. data/spec/dummy/db/seeds.rb +0 -0
  62. data/spec/dummy/db/test.sqlite3 +0 -0
  63. data/spec/dummy/doc/README_FOR_APP +2 -0
  64. data/spec/dummy/log/development.log +0 -0
  65. data/spec/dummy/log/test.log +2909 -0
  66. data/spec/dummy/public/404.html +26 -0
  67. data/spec/dummy/public/422.html +26 -0
  68. data/spec/dummy/public/500.html +26 -0
  69. data/spec/dummy/public/favicon.ico +0 -0
  70. data/spec/dummy/public/index.html +241 -0
  71. data/spec/dummy/public/robots.txt +5 -0
  72. data/spec/dummy/script/rails +6 -0
  73. data/spec/mail_stats/interceptors/mail_stats_interceptor_spec.rb +28 -0
  74. data/spec/mail_stats/mail_stats_spec.rb +7 -0
  75. data/spec/models/mail_stats/link_spec.rb +10 -0
  76. data/spec/models/mail_stats/pixel_spec.rb +6 -0
  77. data/spec/models/mail_stats/sent_mail_spec.rb +11 -0
  78. data/spec/models/mail_stats/visit_spec.rb +7 -0
  79. data/spec/spec_helper.rb +33 -0
  80. data/spec/support/basic_model_behavior.rb +6 -0
  81. data/spec/support/code_not_found_behavior.rb +18 -0
  82. data/spec/support/model_with_visits_behavior.rb +8 -0
  83. data/spec/support/regex_constants.rb +2 -0
  84. metadata +235 -0
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples_for "Basic Model" do
4
+ it { should be_present }
5
+ it { should be_a(ActiveRecord::Base) }
6
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples_for "Code Not Found" do |type|
4
+ describe "without :code" do
5
+ it "should be redirect to /" do
6
+ get "process_#{type}"
7
+ response.should redirect_to "/"
8
+ end
9
+ it "should be redirect to root_url when map.root route is present"
10
+ end
11
+
12
+ it "should return 404 on unexistent :code" do
13
+ "MailStats::#{type.camelize}".constantize.stub!(:find).and_return false
14
+
15
+ get "process_#{type}", :code => 123
16
+ response.response_code.should eq 404
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ require "spec_helper"
2
+
3
+ shared_examples_for "SentMail Counting Model" do
4
+ it { should belong_to(:sent_mail) }
5
+ it { should have_many(:visits) }
6
+ it { should validate_presence_of(:visits_count) }
7
+ it { should have_readonly_attribute(:visits_count) }
8
+ end
@@ -0,0 +1,2 @@
1
+ PIXEL_IMAGE_REGEX = /img src=".+\/p\/[a-zA-Z0-9\-_]{1,64}" style="display: none">[\n]*<\/body>[\n]*<\/html>[\n]*$/im
2
+ REDIRECT_LINK_REGEX = /a href=".+\/r\/[a-zA-Z0-9\-_]{1,64}"/i
metadata ADDED
@@ -0,0 +1,235 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mail_stats
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Max Riveiro
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &70217325332840 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.1.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70217325332840
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ requirement: &70217325332340 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.5.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70217325332340
36
+ - !ruby/object:Gem::Dependency
37
+ name: base62
38
+ requirement: &70217325331880 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.1.4
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70217325331880
47
+ - !ruby/object:Gem::Dependency
48
+ name: sqlite3
49
+ requirement: &70217325331500 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70217325331500
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec-rails
60
+ requirement: &70217325330960 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 2.6.1
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70217325330960
69
+ - !ruby/object:Gem::Dependency
70
+ name: email_spec
71
+ requirement: &70217325330460 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.2.1
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70217325330460
80
+ - !ruby/object:Gem::Dependency
81
+ name: shoulda-matchers
82
+ requirement: &70217325329980 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.0.0.beta3
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70217325329980
91
+ - !ruby/object:Gem::Dependency
92
+ name: database_cleaner
93
+ requirement: &70217325329520 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 0.6.7
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70217325329520
102
+ - !ruby/object:Gem::Dependency
103
+ name: rcov
104
+ requirement: &70217325329060 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.9.1
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70217325329060
113
+ description: This is just PoC Rails Engine gem for collecting mail statistics with
114
+ a help of the redirect link and the hidden pixel in the body of the mail message.
115
+ email:
116
+ - kavu13@gmail.com
117
+ executables: []
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - app/controllers/mail_stats/application_controller.rb
122
+ - app/controllers/mail_stats/link_controller.rb
123
+ - app/controllers/mail_stats/pixel_controller.rb
124
+ - app/models/mail_stats/link.rb
125
+ - app/models/mail_stats/pixel.rb
126
+ - app/models/mail_stats/sent_mail.rb
127
+ - app/models/mail_stats/visit.rb
128
+ - config/routes.rb
129
+ - db/migrate/20111006191933_create_mail_stats_links.rb
130
+ - db/migrate/20111007095146_create_mail_stats_pixels.rb
131
+ - db/migrate/20111011075844_create_mail_stats_sent_mails.rb
132
+ - db/migrate/20111011080641_create_mail_stats_visits.rb
133
+ - lib/generators/mail_stats/install/install_generator.rb
134
+ - lib/generators/mail_stats/install/templates/initializer.rb
135
+ - lib/generators/mail_stats/install/USAGE
136
+ - lib/mail_stats/base.rb
137
+ - lib/mail_stats/engine.rb
138
+ - lib/mail_stats/interceptors/interceptor_prototype.rb
139
+ - lib/mail_stats/interceptors/mail_stats_interceptor.rb
140
+ - lib/mail_stats/version.rb
141
+ - lib/mail_stats.rb
142
+ - spec/controllers/mail_stats/link_controller_spec.rb
143
+ - spec/controllers/mail_stats/pixel_controller_spec.rb
144
+ - spec/dummy/app/assets/images/rails.png
145
+ - spec/dummy/app/assets/javascripts/application.js
146
+ - spec/dummy/app/assets/stylesheets/application.css
147
+ - spec/dummy/app/controllers/application_controller.rb
148
+ - spec/dummy/app/controllers/site_controller.rb
149
+ - spec/dummy/app/helpers/application_helper.rb
150
+ - spec/dummy/app/mailers/article_mailer.rb
151
+ - spec/dummy/app/views/article_mailer/new_article.html.erb
152
+ - spec/dummy/app/views/article_mailer/new_article.text.erb
153
+ - spec/dummy/app/views/layouts/application.html.erb
154
+ - spec/dummy/config/application.rb
155
+ - spec/dummy/config/boot.rb
156
+ - spec/dummy/config/database.yml
157
+ - spec/dummy/config/environment.rb
158
+ - spec/dummy/config/environments/development.rb
159
+ - spec/dummy/config/environments/production.rb
160
+ - spec/dummy/config/environments/test.rb
161
+ - spec/dummy/config/initializers/backtrace_silencers.rb
162
+ - spec/dummy/config/initializers/inflections.rb
163
+ - spec/dummy/config/initializers/mime_types.rb
164
+ - spec/dummy/config/initializers/secret_token.rb
165
+ - spec/dummy/config/initializers/session_store.rb
166
+ - spec/dummy/config/initializers/wrap_parameters.rb
167
+ - spec/dummy/config/locales/en.yml
168
+ - spec/dummy/config/routes.rb
169
+ - spec/dummy/config.ru
170
+ - spec/dummy/db/seeds.rb
171
+ - spec/dummy/db/test.sqlite3
172
+ - spec/dummy/doc/README_FOR_APP
173
+ - spec/dummy/Gemfile
174
+ - spec/dummy/Gemfile.lock
175
+ - spec/dummy/log/development.log
176
+ - spec/dummy/log/test.log
177
+ - spec/dummy/public/404.html
178
+ - spec/dummy/public/422.html
179
+ - spec/dummy/public/500.html
180
+ - spec/dummy/public/favicon.ico
181
+ - spec/dummy/public/index.html
182
+ - spec/dummy/public/robots.txt
183
+ - spec/dummy/Rakefile
184
+ - spec/dummy/README
185
+ - spec/dummy/script/rails
186
+ - spec/mail_stats/interceptors/mail_stats_interceptor_spec.rb
187
+ - spec/mail_stats/mail_stats_spec.rb
188
+ - spec/models/mail_stats/link_spec.rb
189
+ - spec/models/mail_stats/pixel_spec.rb
190
+ - spec/models/mail_stats/sent_mail_spec.rb
191
+ - spec/models/mail_stats/visit_spec.rb
192
+ - spec/spec_helper.rb
193
+ - spec/support/basic_model_behavior.rb
194
+ - spec/support/code_not_found_behavior.rb
195
+ - spec/support/model_with_visits_behavior.rb
196
+ - spec/support/regex_constants.rb
197
+ - .rvmrc
198
+ - .rspec
199
+ - MIT-LICENSE
200
+ - Rakefile
201
+ - README.rdoc
202
+ - Gemfile
203
+ - Gemfile.lock
204
+ homepage: http://github.com/kavu/mail_stats
205
+ licenses:
206
+ - MIT
207
+ post_install_message:
208
+ rdoc_options: []
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ segments:
218
+ - 0
219
+ hash: -3050709482281365651
220
+ required_rubygems_version: !ruby/object:Gem::Requirement
221
+ none: false
222
+ requirements:
223
+ - - ! '>='
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ segments:
227
+ - 0
228
+ hash: -3050709482281365651
229
+ requirements: []
230
+ rubyforge_project:
231
+ rubygems_version: 1.8.10
232
+ signing_key:
233
+ specification_version: 3
234
+ summary: Proof of Concept Rails Engine gem for mail statistics
235
+ test_files: []