mail_stats 0.0.3

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.
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: []