vanity 1.9.3 → 2.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/.gitignore +0 -1
  2. data/.travis.yml +2 -53
  3. data/Appraisals +3 -12
  4. data/CHANGELOG +1 -5
  5. data/Gemfile +0 -10
  6. data/Gemfile.lock +3 -38
  7. data/README.rdoc +2 -13
  8. data/Rakefile +7 -13
  9. data/bin/vanity +0 -1
  10. data/doc/rails.textile +0 -12
  11. data/gemfiles/rails32.gemfile +2 -4
  12. data/gemfiles/rails32.gemfile.lock +6 -14
  13. data/gemfiles/rails4.gemfile +1 -4
  14. data/gemfiles/rails4.gemfile.lock +5 -15
  15. data/lib/vanity/adapters/active_record_adapter.rb +14 -10
  16. data/lib/vanity/experiment/ab_test.rb +1 -1
  17. data/lib/vanity/frameworks/rails.rb +11 -17
  18. data/lib/vanity/frameworks.rb +3 -10
  19. data/lib/vanity/metric/active_record.rb +20 -19
  20. data/lib/vanity/playground.rb +1 -3
  21. data/lib/vanity/version.rb +1 -1
  22. data/test/adapters/redis_adapter_test.rb +26 -27
  23. data/test/autoconnect_test.rb +19 -17
  24. data/test/cli_test.rb +19 -26
  25. data/test/experiment/ab_test.rb +2 -15
  26. data/test/experiment/base_test.rb +18 -22
  27. data/test/frameworks/rails/action_controller_test.rb +184 -0
  28. data/test/frameworks/rails/action_mailer_test.rb +65 -0
  29. data/test/{rails_helper_test.rb → frameworks/rails/action_view_test.rb} +1 -1
  30. data/test/frameworks/rails/rails_test.rb +285 -0
  31. data/test/helper_test.rb +13 -10
  32. data/test/metric/active_record_test.rb +50 -66
  33. data/test/metric/base_test.rb +39 -41
  34. data/test/metric/google_analytics_test.rb +13 -16
  35. data/test/metric/remote_test.rb +18 -19
  36. data/test/playground_test.rb +1 -1
  37. data/test/test_helper.rb +25 -43
  38. data/test/{rails_dashboard_test.rb → web/rails/dashboard_test.rb} +2 -1
  39. data/vanity.gemspec +3 -2
  40. metadata +33 -33
  41. data/gemfiles/rails3.gemfile +0 -32
  42. data/gemfiles/rails3.gemfile.lock +0 -172
  43. data/gemfiles/rails31.gemfile +0 -32
  44. data/gemfiles/rails31.gemfile.lock +0 -181
  45. data/generators/templates/vanity_migration.rb +0 -54
  46. data/generators/vanity_generator.rb +0 -8
  47. data/test/myapp/app/controllers/application_controller.rb +0 -2
  48. data/test/myapp/app/controllers/main_controller.rb +0 -7
  49. data/test/myapp/config/boot.rb +0 -110
  50. data/test/myapp/config/environment.rb +0 -10
  51. data/test/myapp/config/environments/production.rb +0 -0
  52. data/test/myapp/config/routes.rb +0 -3
  53. data/test/passenger_test.rb +0 -52
  54. data/test/rails_test.rb +0 -554
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  vendor
2
2
  log/*
3
- test/myapp/log/
4
3
  test/dummy/db/*.sqlite3
5
4
  test/dummy/log/*.log
6
5
  test/dummy/tmp/
data/.travis.yml CHANGED
@@ -5,71 +5,20 @@ services:
5
5
  - mongodb
6
6
  - redis-server
7
7
  rvm:
8
- - 1.8.7
9
8
  - 1.9.3
10
9
  - 2.0.0
10
+ - 2.1.0
11
+ - ruby-head
11
12
  env:
12
13
  - DB=mongodb
13
14
  - DB=redis
14
15
  - DB=active_record
15
16
  gemfile:
16
- - Gemfile
17
- - gemfiles/rails3.gemfile
18
- - gemfiles/rails31.gemfile
19
17
  - gemfiles/rails32.gemfile
20
18
  - gemfiles/rails4.gemfile
21
19
  before_script:
22
20
  - 'echo ''gem: --no-ri --no-rdoc'' > ~/.gemrc' # skip installing docs for gems
23
- - if [[ "`basename $BUNDLE_GEMFILE`" == "Gemfile" ]]; then rvm rubygems 1.8.25; fi # Rubygems 2.0.x fails with Rails 2.3
24
21
  matrix:
25
22
  exclude:
26
- # Rails 2 is not officially supported on Ruby 1.9.3
27
- - rvm: 1.9.3
28
- env: DB=mongodb
29
- gemfile: Gemfile
30
- - rvm: 1.9.3
31
- env: DB=redis
32
- gemfile: Gemfile
33
- - rvm: 1.9.3
34
- env: DB=active_record
35
- gemfile: Gemfile
36
- # Rails <= 3.2 is not officially supported on Ruby 2.0.0
37
- - rvm: 2.0.0
38
- env: DB=mongodb
39
- gemfile: Gemfile
40
- - rvm: 2.0.0
41
- env: DB=redis
42
- gemfile: Gemfile
43
- - rvm: 2.0.0
44
- env: DB=active_record
45
- gemfile: Gemfile
46
- - rvm: 2.0.0
47
- env: DB=mongodb
48
- gemfile: gemfiles/rails3.gemfile
49
- - rvm: 2.0.0
50
- env: DB=redis
51
- gemfile: gemfiles/rails3.gemfile
52
- - rvm: 2.0.0
53
- env: DB=active_record
54
- gemfile: gemfiles/rails3.gemfile
55
- # Rails >=4 officially supports >= Ruby 1.9.3
56
- - rvm: 1.8.7
57
- env: DB=mongodb
58
- gemfile: gemfiles/rails4.gemfile
59
- - rvm: 1.8.7
60
- env: DB=redis
61
- gemfile: gemfiles/rails4.gemfile
62
- - rvm: 1.8.7
63
- env: DB=active_record
64
- gemfile: gemfiles/rails4.gemfile
65
23
  allow_failures:
66
24
  - rvm: ruby-head
67
- - rvm: 2.0.0
68
- env: DB=mongodb
69
- gemfile: gemfiles/rails31.gemfile
70
- - rvm: 2.0.0
71
- env: DB=redis
72
- gemfile: gemfiles/rails31.gemfile
73
- - rvm: 2.0.0
74
- env: DB=active_record
75
- gemfile: gemfiles/rails31.gemfile
data/Appraisals CHANGED
@@ -1,22 +1,13 @@
1
- appraise "rails3" do
2
- gem "rails", "3.0.11"
3
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
4
- gem "passenger", "~>3.0"
5
- end
6
-
7
- appraise "rails31" do
8
- gem "rails", "3.1.3"
9
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
10
- gem "passenger", "~>3.0"
11
- end
12
-
13
1
  appraise "rails32" do
2
+ gem "mocha", "~> 0.12.8", :require=>false
3
+ gem "minitest", "~>4.2.0"
14
4
  gem "rails", "3.2.1"
15
5
  gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
16
6
  gem "passenger", "~>3.0"
17
7
  end
18
8
 
19
9
  appraise "rails4" do
10
+ gem "mocha", "~> 1.0", :require=>false
20
11
  gem "rails", "4.0.0"
21
12
  gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
22
13
  gem "passenger", "~>3.0"
data/CHANGELOG CHANGED
@@ -1,8 +1,4 @@
1
- == 1.9.3 (2015-10-04)
2
-
3
- Cherry-pick fix for ruby 2.2.
4
-
5
- == 1.9.1 (2014-04-20)
1
+ == 1.9.0 (2014-04-20)
6
2
 
7
3
  Include db:reset in blacklist for autoconnect. (@phillbaker)
8
4
  Add grace period to Vanity::Metric updated_at (@stangel)
data/Gemfile CHANGED
@@ -3,10 +3,6 @@ gemspec
3
3
 
4
4
  # Frameworks
5
5
  gem "rack"
6
- gem "rails", "~>2.3.8"
7
-
8
- # Servers
9
- gem "passenger", "~>2.0"
10
6
 
11
7
  # Persistence
12
8
  gem "redis", ">= 2.1"
@@ -16,19 +12,13 @@ gem "mongo"
16
12
  gem "sqlite3"
17
13
 
18
14
  # Math libraries
19
- gem "backports", :platforms => :mri_18
20
15
  gem "integration"
21
16
  gem "rubystats"
22
17
 
23
18
  # APIs
24
19
  gem "garb"
25
20
 
26
- # Compatibility
27
- gem "SystemTimer", "1.2.3", :platforms => :mri_18
28
-
29
21
  # Testing
30
- gem "mocha", :require=>false
31
- gem "shoulda", :require=>false # Requires test/unit
32
22
  gem "timecop", :require=>false
33
23
  gem "webmock", :require=>false
34
24
 
data/Gemfile.lock CHANGED
@@ -1,22 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vanity (1.9.3)
4
+ vanity (2.0.0.beta)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  RedCloth (4.2.9)
10
- SystemTimer (1.2.3)
11
- actionmailer (2.3.14)
12
- actionpack (= 2.3.14)
13
- actionpack (2.3.14)
14
- activesupport (= 2.3.14)
15
- rack (~> 1.1.0)
16
- activerecord (2.3.14)
17
- activesupport (= 2.3.14)
18
- activeresource (2.3.14)
19
- activesupport (= 2.3.14)
20
10
  activesupport (2.3.14)
21
11
  addressable (2.2.7)
22
12
  albino (1.3.3)
@@ -25,7 +15,6 @@ GEM
25
15
  bundler
26
16
  rake
27
17
  thor (>= 0.14.0)
28
- backports (3.3.5)
29
18
  bson (1.6.0)
30
19
  bson_ext (1.6.0)
31
20
  bson (= 1.6.0)
@@ -34,7 +23,6 @@ GEM
34
23
  crack (0.3.1)
35
24
  directory_watcher (1.4.1)
36
25
  fast-stemmer (1.0.0)
37
- fastthread (1.0.7)
38
26
  garb (0.9.1)
39
27
  activesupport (>= 2.2.0)
40
28
  crack (>= 0.1.6)
@@ -50,34 +38,16 @@ GEM
50
38
  liquid (2.3.0)
51
39
  maruku (0.6.0)
52
40
  syntax (>= 1.0.0)
53
- metaclass (0.0.1)
54
- mocha (0.10.5)
55
- metaclass (~> 0.0.1)
41
+ minitest (4.7.5)
56
42
  mongo (1.6.0)
57
43
  bson (= 1.6.0)
58
- passenger (2.2.15)
59
- fastthread (>= 1.0.1)
60
- rack
61
- rake (>= 0.8.1)
62
44
  posix-spawn (0.3.6)
63
45
  rack (1.1.3)
64
- rails (2.3.14)
65
- actionmailer (= 2.3.14)
66
- actionpack (= 2.3.14)
67
- activerecord (= 2.3.14)
68
- activeresource (= 2.3.14)
69
- activesupport (= 2.3.14)
70
- rake (>= 0.8.3)
71
46
  rake (10.1.0)
72
47
  redis (3.0.6)
73
48
  redis-namespace (1.3.2)
74
49
  redis (~> 3.0.4)
75
50
  rubystats (0.2.3)
76
- shoulda (3.0.1)
77
- shoulda-context (~> 1.0.0)
78
- shoulda-matchers (~> 1.0.0)
79
- shoulda-context (1.0.0)
80
- shoulda-matchers (1.0.0)
81
51
  sqlite3 (1.3.8)
82
52
  syntax (1.0.0)
83
53
  thor (0.18.1)
@@ -92,24 +62,19 @@ PLATFORMS
92
62
 
93
63
  DEPENDENCIES
94
64
  RedCloth
95
- SystemTimer (= 1.2.3)
96
65
  appraisal (>= 1.0.0.beta2)
97
- backports
98
66
  bson_ext
99
67
  bundler (>= 1.0.0)
100
68
  garb
101
69
  integration
102
70
  jekyll
103
- mocha
71
+ minitest (>= 4.2)
104
72
  mongo
105
- passenger (~> 2.0)
106
73
  rack
107
- rails (~> 2.3.8)
108
74
  rake
109
75
  redis (>= 2.1)
110
76
  redis-namespace (>= 1.1.0)
111
77
  rubystats
112
- shoulda
113
78
  sqlite3
114
79
  timecop
115
80
  vanity!
data/README.rdoc CHANGED
@@ -21,15 +21,7 @@ Add to your Gemfile:
21
21
 
22
22
  gem "vanity"
23
23
 
24
- ===== Rails 2.x installation
25
-
26
- Rails::Initializer.run do |config|
27
- gem.config "vanity"
28
-
29
- config.after_initialize do
30
- require "vanity"
31
- end
32
- end
24
+ (For support for older versions of Rails and Ruby 1.8, please see the {1.9.x branch}[https://github.com/assaf/vanity/tree/1-9-stable].)
33
25
 
34
26
  ==== Step 1.2
35
27
 
@@ -168,12 +160,9 @@ To set this up simply do the following:
168
160
 
169
161
  Here's what's tested and known to work:
170
162
 
171
- Ruby 1.8.7
172
- Persistence: Redis, Mongo, ActiveRecord
173
- Rails: 2.3, 3, 3.1, 3.2
174
163
  Ruby 1.9.3
175
164
  Persistence: Redis, Mongo, ActiveRecord
176
- Rails: 3, 3.1, 3.2, 4.0
165
+ Rails: 3.2, 4.0
177
166
  Ruby 2.0
178
167
  Persistence: Redis, Mongo, ActiveRecord
179
168
  Rails: 3.2, 4.0
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ desc "Test everything"
8
8
  task "test:all"=>"test:adapters"
9
9
 
10
10
  # Ruby versions we're testing with.
11
- RUBIES = %w{1.8.7 1.9.2 2.0.0}
11
+ RUBIES = %w{1.9.3 2.0.0}
12
12
 
13
13
  # Use rake test:rubies to run all combination of tests (see test:adapters) using
14
14
  # all the versions of Ruby specified in RUBIES. Or to test a specific version of
@@ -64,21 +64,15 @@ task "test:adapters", :adapter do |t, args|
64
64
  end
65
65
 
66
66
  # Run the test suit.
67
+ Rake::TestTask.new(:test) do |task|
68
+ task.libs << "lib"
69
+ task.libs << "test"
70
+ task.pattern = "test/**/*_test.rb"
71
+ task.verbose = false
72
+ end
67
73
 
68
74
  task :default=>:test
69
75
  desc "Run all tests"
70
- Rake::TestTask.new do |task|
71
- task.test_files = FileList['test/**/*_test.rb']
72
- if Rake.application.options.trace
73
- #task.warning = true
74
- task.verbose = true
75
- elsif Rake.application.options.silent
76
- task.ruby_opts << "-W0"
77
- else
78
- task.verbose = true
79
- end
80
- task.ruby_opts << "-I."
81
- end
82
76
 
83
77
  task(:clobber) { rm_rf "tmp" }
84
78
 
data/bin/vanity CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # Is there a better way to detect Rails?
3
2
  if File.exist?("config/boot.rb") && File.exist?("config/environment.rb")
4
3
  require "./config/environment"
5
4
  else
data/doc/rails.textile CHANGED
@@ -20,18 +20,6 @@ Add Vanity to your Gemfile:
20
20
  gem "vanity"
21
21
  </pre>
22
22
 
23
- <em>Rails 2.x:</em>
24
-
25
- <pre>
26
- Rails::Initializer.run do |config|
27
- gem.config "vanity"
28
-
29
- config.after_initialize do
30
- require "vanity"
31
- end
32
- end
33
- </pre>
34
-
35
23
  h3(#config). Configuring Vanity
36
24
 
37
25
  h4. Configuring identity
@@ -8,15 +8,13 @@ gem "redis-namespace", ">= 1.1.0"
8
8
  gem "bson_ext"
9
9
  gem "mongo"
10
10
  gem "sqlite3"
11
- gem "backports", :platforms=>:mri_18
12
11
  gem "integration"
13
12
  gem "rubystats"
14
13
  gem "garb"
15
- gem "SystemTimer", "1.2.3", :platforms=>:mri_18
16
- gem "mocha", :require=>false
17
- gem "shoulda", :require=>false
18
14
  gem "timecop", :require=>false
19
15
  gem "webmock", :require=>false
16
+ gem "mocha", "~> 0.12.8", :require=>false
17
+ gem "minitest", "~>4.2.0"
20
18
  gem "rails", "3.2.1"
21
19
  gem "fastthread", :git=>"git://github.com/zoltankiss/fastthread.git", :platforms=>:mri_20
22
20
  gem "passenger", "~>3.0"
@@ -7,13 +7,12 @@ GIT
7
7
  PATH
8
8
  remote: ..
9
9
  specs:
10
- vanity (1.9.3)
10
+ vanity (2.0.0.beta)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
15
  RedCloth (4.2.9)
16
- SystemTimer (1.2.3)
17
16
  actionmailer (3.2.1)
18
17
  actionpack (= 3.2.1)
19
18
  mail (~> 2.4.0)
@@ -49,7 +48,6 @@ GEM
49
48
  rake
50
49
  thor (>= 0.14.0)
51
50
  arel (3.0.2)
52
- backports (3.3.5)
53
51
  bson (1.6.0)
54
52
  bson_ext (1.6.0)
55
53
  bson (= 1.6.0)
@@ -84,9 +82,10 @@ GEM
84
82
  treetop (~> 1.4.8)
85
83
  maruku (0.6.0)
86
84
  syntax (>= 1.0.0)
87
- metaclass (0.0.1)
85
+ metaclass (0.0.4)
88
86
  mime-types (1.17.2)
89
- mocha (0.10.5)
87
+ minitest (4.2.0)
88
+ mocha (0.12.10)
90
89
  metaclass (~> 0.0.1)
91
90
  mongo (1.6.0)
92
91
  bson (= 1.6.0)
@@ -127,11 +126,6 @@ GEM
127
126
  redis-namespace (1.3.2)
128
127
  redis (~> 3.0.4)
129
128
  rubystats (0.2.3)
130
- shoulda (3.0.1)
131
- shoulda-context (~> 1.0.0)
132
- shoulda-matchers (~> 1.0.0)
133
- shoulda-context (1.0.0)
134
- shoulda-matchers (1.0.0)
135
129
  sprockets (2.1.2)
136
130
  hike (~> 1.2)
137
131
  rack (~> 1.0)
@@ -155,16 +149,15 @@ PLATFORMS
155
149
 
156
150
  DEPENDENCIES
157
151
  RedCloth
158
- SystemTimer (= 1.2.3)
159
152
  appraisal (>= 1.0.0.beta2)
160
- backports
161
153
  bson_ext
162
154
  bundler (>= 1.0.0)
163
155
  fastthread!
164
156
  garb
165
157
  integration
166
158
  jekyll
167
- mocha
159
+ minitest (~> 4.2.0)
160
+ mocha (~> 0.12.8)
168
161
  mongo
169
162
  passenger (~> 3.0)
170
163
  rack
@@ -173,7 +166,6 @@ DEPENDENCIES
173
166
  redis (>= 2.1)
174
167
  redis-namespace (>= 1.1.0)
175
168
  rubystats
176
- shoulda
177
169
  sqlite3
178
170
  timecop
179
171
  vanity!
@@ -8,15 +8,12 @@ gem "redis-namespace", ">= 1.1.0"
8
8
  gem "bson_ext"
9
9
  gem "mongo"
10
10
  gem "sqlite3"
11
- gem "backports", :platforms=>:mri_18
12
11
  gem "integration"
13
12
  gem "rubystats"
14
13
  gem "garb"
15
- gem "SystemTimer", "1.2.3", :platforms=>:mri_18
16
- gem "mocha", :require=>false
17
- gem "shoulda", :require=>false
18
14
  gem "timecop", :require=>false
19
15
  gem "webmock", :require=>false
16
+ gem "mocha", "~> 1.0", :require=>false
20
17
  gem "rails", "4.0.0"
21
18
  gem "fastthread", :git=>"git://github.com/zoltankiss/fastthread.git", :platforms=>:mri_20
22
19
  gem "passenger", "~>3.0"
@@ -7,13 +7,12 @@ GIT
7
7
  PATH
8
8
  remote: ..
9
9
  specs:
10
- vanity (1.9.3)
10
+ vanity (2.0.0.beta)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
15
  RedCloth (4.2.9)
16
- SystemTimer (1.2.3)
17
16
  actionmailer (4.0.0)
18
17
  actionpack (= 4.0.0)
19
18
  mail (~> 2.5.3)
@@ -47,7 +46,6 @@ GEM
47
46
  thor (>= 0.14.0)
48
47
  arel (4.0.1)
49
48
  atomic (1.1.14)
50
- backports (3.3.5)
51
49
  bson (1.9.2)
52
50
  bson_ext (1.9.2)
53
51
  bson (~> 1.9.2)
@@ -80,10 +78,10 @@ GEM
80
78
  treetop (~> 1.4.8)
81
79
  maruku (0.6.0)
82
80
  syntax (>= 1.0.0)
83
- metaclass (0.0.1)
81
+ metaclass (0.0.4)
84
82
  mime-types (1.25)
85
83
  minitest (4.7.5)
86
- mocha (0.14.0)
84
+ mocha (1.0.0)
87
85
  metaclass (~> 0.0.1)
88
86
  mongo (1.9.2)
89
87
  bson (~> 1.9.2)
@@ -117,12 +115,6 @@ GEM
117
115
  redis (~> 3.0.4)
118
116
  rubystats (0.2.3)
119
117
  safe_yaml (0.9.7)
120
- shoulda (3.5.0)
121
- shoulda-context (~> 1.0, >= 1.0.1)
122
- shoulda-matchers (>= 1.4.1, < 3.0)
123
- shoulda-context (1.1.6)
124
- shoulda-matchers (2.4.0)
125
- activesupport (>= 3.0.0)
126
118
  sprockets (2.10.0)
127
119
  hike (~> 1.2)
128
120
  multi_json (~> 1.0)
@@ -153,16 +145,15 @@ PLATFORMS
153
145
 
154
146
  DEPENDENCIES
155
147
  RedCloth
156
- SystemTimer (= 1.2.3)
157
148
  appraisal (>= 1.0.0.beta2)
158
- backports
159
149
  bson_ext
160
150
  bundler (>= 1.0.0)
161
151
  fastthread!
162
152
  garb
163
153
  integration
164
154
  jekyll
165
- mocha
155
+ minitest (>= 4.2)
156
+ mocha (~> 1.0)
166
157
  mongo
167
158
  passenger (~> 3.0)
168
159
  rack
@@ -171,7 +162,6 @@ DEPENDENCIES
171
162
  redis (>= 2.1)
172
163
  redis-namespace (>= 1.1.0)
173
164
  rubystats
174
- shoulda
175
165
  sqlite3
176
166
  timecop
177
167
  vanity!
@@ -15,7 +15,7 @@ module Vanity
15
15
  self.abstract_class = true
16
16
 
17
17
  def self.needs_attr_accessible?
18
- respond_to?(:attr_accessible) && !defined?(ActionController::StrongParameters)
18
+ respond_to?(:attr_accessible) && (!defined?(ActionController::StrongParameters) || defined?(ProtectedAttributes))
19
19
  end
20
20
 
21
21
  def self.rails_agnostic_find_or_create_by(method, value)
@@ -25,6 +25,14 @@ module Vanity
25
25
  send :"find_or_create_by_#{method}", value
26
26
  end
27
27
  end
28
+
29
+ def self.rails_agnostic_find_first(conditions)
30
+ if respond_to? :where
31
+ where(conditions).first
32
+ else
33
+ find(:first, :conditions => conditions)
34
+ end
35
+ end
28
36
  end
29
37
 
30
38
  # Schema model
@@ -36,8 +44,7 @@ module Vanity
36
44
  class VanityMetric < VanityRecord
37
45
  UPDATED_AT_GRACE_PERIOD = 1.minute
38
46
  self.table_name = :vanity_metrics
39
- has_many :vanity_metric_values,
40
- :class_name => 'Vanity::Adapters::ActiveRecordAdapter::VanityMetricValue'
47
+ has_many :vanity_metric_values
41
48
 
42
49
  def self.retrieve(metric)
43
50
  rails_agnostic_find_or_create_by(:metric_id, metric.to_s)
@@ -60,15 +67,13 @@ module Vanity
60
67
  attr_accessible :date, :index, :value if needs_attr_accessible?
61
68
 
62
69
  self.table_name = :vanity_metric_values
63
- belongs_to :vanity_metric,
64
- :class_name => 'Vanity::Adapters::ActiveRecordAdapter::VanityMetric'
70
+ belongs_to :vanity_metric
65
71
  end
66
72
 
67
73
  # Experiment model
68
74
  class VanityExperiment < VanityRecord
69
75
  self.table_name = :vanity_experiments
70
- has_many :vanity_conversions, :dependent => :destroy,
71
- :class_name => 'Vanity::Adapters::ActiveRecordAdapter::VanityConversion'
76
+ has_many :vanity_conversions, :dependent => :destroy
72
77
  attr_accessible :experiment_id if needs_attr_accessible?
73
78
 
74
79
  # Finds or creates the experiment
@@ -85,8 +90,7 @@ module Vanity
85
90
  # Conversion model
86
91
  class VanityConversion < VanityRecord
87
92
  self.table_name = :vanity_conversions
88
- belongs_to :vanity_experiment,
89
- :class_name => 'Vanity::Adapters::ActiveRecordAdapter::VanityExperiment'
93
+ belongs_to :vanity_experiment
90
94
  end
91
95
 
92
96
  # Participant model
@@ -99,7 +103,7 @@ module Vanity
99
103
  # passed then this will be passed to create if creating, or will be
100
104
  # used to update the found participant.
101
105
  def self.retrieve(experiment, identity, create = true, update_with = nil)
102
- if record = VanityParticipant.first(:conditions=>{ :experiment_id=>experiment.to_s, :identity=>identity.to_s })
106
+ if record = VanityParticipant.rails_agnostic_find_first(:experiment_id=>experiment.to_s, :identity=>identity.to_s)
103
107
  record.update_attributes(update_with) if update_with
104
108
  elsif create
105
109
  record = VanityParticipant.create({ :experiment_id=>experiment.to_s, :identity=>identity.to_s }.merge(update_with || {}))
@@ -302,7 +302,7 @@ module Vanity
302
302
 
303
303
  # Use the result of #score or #bayes_bandit_score to derive a conclusion. Returns an
304
304
  # array of claims.
305
- def conclusion(score = score())
305
+ def conclusion(score = score)
306
306
  claims = []
307
307
  participants = score.alts.inject(0) { |t,alt| t + alt.participants }
308
308
  claims << case participants
@@ -59,13 +59,10 @@ module Vanity
59
59
  elsif symbol && object = send(symbol)
60
60
  @vanity_identity = object.id
61
61
  elsif response # everyday use
62
- #conditional for Rails2 support
63
- secure_random = defined?(SecureRandom) ? SecureRandom : ActiveSupport::SecureRandom
64
- @vanity_identity = cookies["vanity_id"] || secure_random.hex(16)
62
+ @vanity_identity = cookies["vanity_id"] || SecureRandom.hex(16)
65
63
  cookie = { :value=>@vanity_identity, :expires=>1.month.from_now }
66
64
  # Useful if application and admin console are on separate domains.
67
- # This only works in Rails 3.x.
68
- cookie[:domain] ||= ::Rails.application.config.session_options[:domain] if ::Rails.respond_to?(:application)
65
+ cookie[:domain] ||= ::Rails.application.config.session_options[:domain]
69
66
  cookies["vanity_id"] = cookie
70
67
  @vanity_identity
71
68
  else # during functional testing
@@ -95,8 +92,7 @@ module Vanity
95
92
  else
96
93
  class << self
97
94
  define_method :vanity_identity do
98
- secure_random = defined?(SecureRandom) ? SecureRandom : ActiveSupport::SecureRandom
99
- @vanity_identity = @vanity_identity || secure_random.hex(16)
95
+ @vanity_identity = @vanity_identity || SecureRandom.hex(16)
100
96
  end
101
97
  end
102
98
  end
@@ -104,7 +100,6 @@ module Vanity
104
100
  protected :use_vanity_mailer
105
101
  end
106
102
 
107
-
108
103
  # Vanity needs these filters. They are includes in ActionController and
109
104
  # automatically added when you use #use_vanity in your controller.
110
105
  module Filters
@@ -221,7 +216,7 @@ module Vanity
221
216
  def vanity_js
222
217
  return if @_vanity_experiments.nil? || @_vanity_experiments.empty?
223
218
  javascript_tag do
224
- render :file => Vanity.template("_vanity.js.erb")
219
+ render :file => Vanity.template("_vanity"), :formats => [:js]
225
220
  end
226
221
  end
227
222
 
@@ -346,7 +341,7 @@ end
346
341
 
347
342
 
348
343
  # Enhance ActionController with use_vanity, filters and helper methods.
349
- if defined?(ActionController)
344
+ ActiveSupport.on_load(:action_controller) do
350
345
  # Include in controller, add view helper methods.
351
346
  ActionController::Base.class_eval do
352
347
  extend Vanity::Rails::UseVanity
@@ -355,13 +350,12 @@ if defined?(ActionController)
355
350
  end
356
351
  end
357
352
 
358
- if defined?(ActionMailer)
359
- # Include in mailer, add view helper methods.
360
- ActionMailer::Base.class_eval do
361
- include Vanity::Rails::UseVanityMailer
362
- include Vanity::Rails::Filters
363
- helper Vanity::Rails::Helpers
364
- end
353
+
354
+ # Include in mailer, add view helper methods.
355
+ ActiveSupport.on_load(:action_mailer) do
356
+ include Vanity::Rails::UseVanityMailer
357
+ include Vanity::Rails::Filters
358
+ helper Vanity::Rails::Helpers
365
359
  end
366
360
 
367
361
  # Reconnect whenever we fork under Passenger.