vanity 2.2.10 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +55 -0
  3. data/Appraisals +24 -20
  4. data/CHANGELOG +19 -1
  5. data/Gemfile +2 -1
  6. data/Gemfile.lock +23 -15
  7. data/README.md +14 -16
  8. data/gemfiles/rails42.gemfile +6 -6
  9. data/gemfiles/rails42.gemfile.lock +95 -86
  10. data/gemfiles/rails42_protected_attributes.gemfile +6 -6
  11. data/gemfiles/rails42_protected_attributes.gemfile.lock +90 -81
  12. data/gemfiles/{rails5.gemfile → rails51.gemfile} +6 -6
  13. data/gemfiles/rails51.gemfile.lock +285 -0
  14. data/gemfiles/{rails41.gemfile → rails52.gemfile} +6 -6
  15. data/gemfiles/rails52.gemfile.lock +295 -0
  16. data/gemfiles/{rails32.gemfile → rails60.gemfile} +6 -9
  17. data/gemfiles/rails60.gemfile.lock +293 -0
  18. data/gemfiles/rails61.gemfile +33 -0
  19. data/gemfiles/rails61.gemfile.lock +293 -0
  20. data/lib/generators/templates/{add_participants_unique_index_migration.rb → add_participants_unique_index_migration.rb.erb} +1 -1
  21. data/lib/generators/templates/{add_unique_indexes_migration.rb → add_unique_indexes_migration.rb.erb} +1 -1
  22. data/lib/generators/templates/{vanity_migration.rb → vanity_migration.rb.erb} +1 -1
  23. data/lib/generators/vanity/migration_generator.rb +34 -0
  24. data/lib/vanity/adapters/active_record_adapter.rb +1 -1
  25. data/lib/vanity/adapters/redis_adapter.rb +20 -20
  26. data/lib/vanity/commands/report.rb +4 -3
  27. data/lib/vanity/configuration.rb +4 -0
  28. data/lib/vanity/experiment/ab_test.rb +16 -11
  29. data/lib/vanity/frameworks/rails.rb +20 -9
  30. data/lib/vanity/locales/vanity.ru.yml +50 -0
  31. data/lib/vanity/templates/_experiment.erb +3 -3
  32. data/lib/vanity/templates/_experiments.erb +1 -1
  33. data/lib/vanity/templates/_metrics.erb +1 -1
  34. data/lib/vanity/templates/_report.erb +2 -2
  35. data/lib/vanity/version.rb +1 -1
  36. data/test/adapters/redis_adapter_test.rb +8 -12
  37. data/test/adapters/shared_tests.rb +7 -6
  38. data/test/commands/report_test.rb +13 -1
  39. data/test/configuration_test.rb +15 -2
  40. data/test/dummy/app/mailers/vanity_mailer.rb +3 -1
  41. data/test/dummy/config/initializers/secret_token.rb +5 -2
  42. data/test/dummy/config/routes.rb +17 -3
  43. data/test/experiment/ab_test.rb +43 -3
  44. data/test/frameworks/rails/action_controller_test.rb +12 -6
  45. data/test/frameworks/rails/action_mailer_test.rb +0 -1
  46. data/test/metric/active_record_test.rb +8 -2
  47. data/test/playground_test.rb +0 -1
  48. data/test/test_helper.rb +57 -10
  49. data/test/web/rails/dashboard_test.rb +19 -10
  50. data/vanity.gemspec +1 -1
  51. metadata +20 -21
  52. data/.travis.yml +0 -33
  53. data/gemfiles/rails32.gemfile.lock +0 -242
  54. data/gemfiles/rails41.gemfile.lock +0 -230
  55. data/gemfiles/rails5.gemfile.lock +0 -256
  56. data/lib/generators/vanity/add_participants_unique_index_generator.rb +0 -15
  57. data/lib/generators/vanity/add_unique_indexes_generator.rb +0 -15
  58. data/lib/generators/vanity_generator.rb +0 -15
@@ -520,6 +520,46 @@ class AbTestTest < ActionController::TestCase
520
520
  end
521
521
  end
522
522
 
523
+ def test_calls_default_on_assignment
524
+ on_assignment_called_times = 0
525
+
526
+ Vanity.configuration.on_assignment = proc do |_controller, _identity, _assignment|
527
+ on_assignment_called_times += 1
528
+ end
529
+
530
+ new_ab_test :foobar do
531
+ alternatives "foo", "bar"
532
+ default "foo"
533
+ identify { "6e98ec" }
534
+ metrics :coolness
535
+ end
536
+
537
+ 2.times { experiment(:foobar).chooses("foo") }
538
+ assert_equal 1, on_assignment_called_times
539
+ end
540
+
541
+ def test_calls_on_assignment_defined_in_experiment
542
+ expected_value = 0
543
+
544
+ Vanity.configuration.on_assignment = proc do |_controller, _identity, _assignment|
545
+ expected_value = 1
546
+ end
547
+
548
+ new_ab_test :foobar do
549
+ alternatives "foo", "bar"
550
+ default "foo"
551
+ identify { "6e98ec" }
552
+ metrics :coolness
553
+
554
+ on_assignment do |_controller, _identity, _assignment|
555
+ expected_value = 20
556
+ end
557
+ end
558
+
559
+ 2.times { experiment(:foobar).chooses("foo") }
560
+ assert_equal 20, expected_value
561
+ end
562
+
523
563
  # -- ab_assigned --
524
564
 
525
565
  def test_ab_assigned
@@ -529,12 +569,12 @@ class AbTestTest < ActionController::TestCase
529
569
  identify { "6e98ec" }
530
570
  metrics :coolness
531
571
  end
532
- assert_equal nil, experiment(:foobar).playground.connection.ab_assigned(experiment(:foobar).id, "6e98ec")
572
+ assert_nil experiment(:foobar).playground.connection.ab_assigned(experiment(:foobar).id, "6e98ec")
533
573
  assert id = experiment(:foobar).choose.id
534
574
  assert_equal id, experiment(:foobar).playground.connection.ab_assigned(experiment(:foobar).id, "6e98ec")
535
575
  end
536
576
 
537
- def test_ab_assigned
577
+ def test_ab_assigned_object
538
578
  identity = { :a => :b }
539
579
  new_ab_test :foobar do
540
580
  alternatives "foo", "bar"
@@ -542,7 +582,7 @@ class AbTestTest < ActionController::TestCase
542
582
  identify { identity }
543
583
  metrics :coolness
544
584
  end
545
- assert_equal nil, experiment(:foobar).playground.connection.ab_assigned(experiment(:foobar).id, identity)
585
+ assert_nil experiment(:foobar).playground.connection.ab_assigned(experiment(:foobar).id, identity)
546
586
  assert id = experiment(:foobar).choose.id
547
587
  assert_equal id, experiment(:foobar).playground.connection.ab_assigned(experiment(:foobar).id, identity)
548
588
  end
@@ -138,7 +138,8 @@ class UseVanityControllerTest < ActionController::TestCase
138
138
  end
139
139
 
140
140
  def test_vanity_identity_set_with_identity_paramater
141
- get :index, :_identity => "id_from_params"
141
+ params = { :_identity => "id_from_params" }
142
+ get :index, params
142
143
  assert_equal "id_from_params", @controller.send(:vanity_identity)
143
144
  end
144
145
 
@@ -156,7 +157,8 @@ class UseVanityControllerTest < ActionController::TestCase
156
157
 
157
158
  def test_vanity_identity_prefers_parameter_over_cookie
158
159
  @request.cookies['vanity_id'] = "old_id"
159
- get :index, :_identity => "id_from_params"
160
+ params = { :_identity => "id_from_params" }
161
+ get :index, params
160
162
  assert_equal "id_from_params", @controller.send(:vanity_identity)
161
163
  assert cookies['vanity_id'], "id_from_params"
162
164
  end
@@ -171,7 +173,8 @@ class UseVanityControllerTest < ActionController::TestCase
171
173
  # query parameter filter
172
174
 
173
175
  def test_redirects_and_loses_vanity_query_parameter
174
- get :index, :foo=>"bar", :_vanity=>"567"
176
+ params = { :foo=>"bar", :_vanity=>"567" }
177
+ get :index, params
175
178
  assert_redirected_to "/use_vanity?foo=bar"
176
179
  end
177
180
 
@@ -180,7 +183,8 @@ class UseVanityControllerTest < ActionController::TestCase
180
183
  fingerprint = experiment(:pie_or_cake).fingerprint(first)
181
184
  10.times do
182
185
  @controller = nil ; setup_controller_request_and_response
183
- get :index, :_vanity => fingerprint
186
+ params = { :_vanity => fingerprint }
187
+ get :index, params
184
188
  assert_equal experiment(:pie_or_cake).choose, experiment(:pie_or_cake).alternatives.first
185
189
  assert experiment(:pie_or_cake).showing?(first)
186
190
  end
@@ -190,13 +194,15 @@ class UseVanityControllerTest < ActionController::TestCase
190
194
  experiment(:pie_or_cake).chooses(experiment(:pie_or_cake).alternatives.last.value)
191
195
  first = experiment(:pie_or_cake).alternatives.first
192
196
  fingerprint = experiment(:pie_or_cake).fingerprint(first)
193
- post :index, :foo => "bar", :_vanity => fingerprint
197
+ params = { :foo => "bar", :_vanity => fingerprint }
198
+ post :index, params
194
199
  assert_response :success
195
200
  assert !experiment(:pie_or_cake).showing?(first)
196
201
  end
197
202
 
198
203
  def test_track_param_tracks_a_metric
199
- get :index, :_identity => "123", :_track => "sugar_high"
204
+ params = { :_identity => "123", :_track => "sugar_high" }
205
+ get :index, params
200
206
  assert_equal experiment(:pie_or_cake).alternatives[0].converted, 1
201
207
  end
202
208
 
@@ -19,7 +19,6 @@ class UseVanityMailerTest < ActionMailer::TestCase
19
19
  experiment(:pie_or_cake).chooses(:pie)
20
20
  VanityMailer.ab_test_subject(nil)
21
21
 
22
-
23
22
  alts = experiment(:pie_or_cake).alternatives
24
23
  assert_equal 1, alts.map(&:participants).sum
25
24
  end
@@ -234,7 +234,13 @@ describe Vanity::Metric::ActiveRecord do
234
234
  f.write <<-RUBY
235
235
  metric "Sky is limit" do
236
236
  model Sky, :conditions=>["height > 3"]
237
- Sky.after_save { |sky| Vanity.track!(:sky_is_limit) if sky.height_changed? && sky.height > 3 }
237
+ Sky.after_save do |sky|
238
+ if sky.respond_to?(:saved_change_to_height?) && sky.saved_change_to_height? && sky.height > 3
239
+ Vanity.track!(:sky_is_limit)
240
+ elsif sky.height_changed? && sky.height > 3
241
+ Vanity.track!(:sky_is_limit)
242
+ end
243
+ end
238
244
  end
239
245
  RUBY
240
246
  end
@@ -295,7 +301,7 @@ describe Vanity::Metric::ActiveRecord do
295
301
  File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
296
302
  f.write <<-RUBY
297
303
  metric "Sky is limit" do
298
- Sky.after_save { |sky| Vanity.track!(:sky_is_limit) if sky.height_changed? && sky.height > 3 }
304
+ Sky.after_save { |sky| Vanity.track!(:sky_is_limit) if sky.height && sky.height > 3 }
299
305
  end
300
306
  RUBY
301
307
  end
@@ -130,5 +130,4 @@ describe Vanity::Playground do
130
130
  assert_equal [[Vanity.playground.experiment(:foobar), alt]], Vanity.playground.participant_info("abcdef")
131
131
  end
132
132
  end
133
-
134
133
  end
data/test/test_helper.rb CHANGED
@@ -20,7 +20,7 @@ require "rails/test_help"
20
20
 
21
21
  require "vanity"
22
22
  require "timecop"
23
- require "mocha/mini_test"
23
+ require "mocha/minitest"
24
24
  require "fakefs/safe"
25
25
  require "webmock/minitest"
26
26
 
@@ -186,11 +186,53 @@ if defined?(ActiveSupport::TestCase)
186
186
 
187
187
  self.use_instantiated_fixtures = false if respond_to?(:use_instantiated_fixtures)
188
188
  self.use_transactional_fixtures = false if respond_to?(:use_transactional_fixtures)
189
+ self.use_transactional_tests = false if respond_to?(:use_transactional_tests)
190
+ end
191
+ end
192
+
193
+ # Shim for pre-5.0 tests
194
+ module LegacyTestRequests
195
+ def rails4?
196
+ ActiveRecord::VERSION::MAJOR <= 4
197
+ end
198
+
199
+ def get(path, params={}, headers={})
200
+ if rails4?
201
+ process(path, 'GET', params, headers)
202
+ else
203
+ process(path, method: 'GET', params: params, **headers)
204
+ end
205
+ end
206
+
207
+ def post(path, params={}, headers={})
208
+ if rails4?
209
+ process(path, 'POST', params, headers)
210
+ else
211
+ process(path, method: 'POST', params: params, **headers)
212
+ end
213
+ end
214
+
215
+ def put(path, params={}, headers={})
216
+ if rails4?
217
+ process(path, 'PUT', params, headers)
218
+ else
219
+ process(path, method: 'PUT', params: params, **headers)
220
+ end
221
+ end
222
+
223
+ def delete(path, params={}, headers={})
224
+ if rails4?
225
+ process(path, 'DELETE', params, headers)
226
+ else
227
+ process(path, method: 'DELETE', params: params, **headers)
228
+ end
189
229
  end
190
230
  end
191
231
 
192
232
  if defined?(ActionController::TestCase)
193
233
  class ActionController::TestCase
234
+ include LegacyTestRequests
235
+
194
236
  alias :setup_controller_request_and_response_without_vanity :setup_controller_request_and_response
195
237
  # Sets Vanity.context to the current controller, so you can do things like:
196
238
  # experiment(:simple).chooses(:green)
@@ -211,14 +253,19 @@ if ENV["DB"] == "active_record"
211
253
  ActiveRecord::Base.logger = $logger
212
254
 
213
255
  Vanity.connect!(VanityTestHelpers::DATABASE)
214
- require "generators/templates/vanity_migration"
215
- if defined?(ActiveRecord::Tasks)
216
- config = Vanity::Adapters::ActiveRecordAdapter::VanityRecord.connection_config
217
- ActiveRecord::Tasks::DatabaseTasks.drop(config.with_indifferent_access)
218
- else # Rails 3.2 fallback
219
- klasses = Vanity::Adapters::ActiveRecordAdapter::VanityRecord.descendants
220
- klasses.each { |k| k.connection.drop_table(k.table_name) if k.connection.table_exists?(k.table_name) }
221
- end
222
256
 
223
- VanityMigration.new.migrate(:up)
257
+ config = Vanity::Adapters::ActiveRecordAdapter::VanityRecord.connection_config
258
+ ActiveRecord::Tasks::DatabaseTasks.drop(config.with_indifferent_access)
259
+
260
+ # use generator to create the migration
261
+ require "rails/generators"
262
+ require "generators/vanity/migration_generator"
263
+ Rails::Generators.invoke "vanity"
264
+
265
+ migrate_path = File.expand_path("../dummy/db/migrate/", __FILE__)
266
+ if defined?(ActiveRecord::MigrationContext)
267
+ ActiveRecord::MigrationContext.new(migrate_path).migrate
268
+ else
269
+ ActiveRecord::Migrator.migrate(migrate_path)
270
+ end
224
271
  end
@@ -60,14 +60,16 @@ class RailsDashboardTest < ActionController::TestCase
60
60
  # -- Actions used in non-admin actions, e.g. in JS --
61
61
 
62
62
  def test_add_participant
63
- xhr :post, :add_participant, :v => 'food=0'
63
+ params = { :v => 'food=0' }
64
+ post :add_participant, params, :xhr => true
64
65
  assert_response :success
65
66
  assert @response.body.blank?
66
67
  assert_equal 1, experiment(:food).alternatives.map(&:participants).sum
67
68
  end
68
69
 
69
70
  def test_add_participant_multiple_experiments
70
- xhr :post, :add_participant, :v => 'food=0,drink=1'
71
+ params = { :v => 'food=0,drink=1' }
72
+ post :add_participant, params, :xhr => true
71
73
  assert_response :success
72
74
  assert @response.body.blank?
73
75
  assert_equal 1, experiment(:food).alternatives.map(&:participants).sum
@@ -76,18 +78,20 @@ class RailsDashboardTest < ActionController::TestCase
76
78
 
77
79
  def test_add_participant_with_invalid_request
78
80
  @request.user_agent = 'Googlebot/2.1 ( http://www.google.com/bot.html)'
79
- xhr :post, :add_participant, :v => 'food=0'
81
+ params = { :v => 'food=0' }
82
+ post :add_participant, params, :xhr => true
80
83
  assert_equal 0, experiment(:food).alternatives.map(&:participants).sum
81
84
  end
82
85
 
83
86
  def test_add_participant_no_params
84
- xhr :post, :add_participant
87
+ post :add_participant, :xhr => true
85
88
  assert_response :not_found
86
89
  assert @response.body.blank?
87
90
  end
88
91
 
89
92
  def test_add_participant_not_fail_for_unknown_experiment
90
- xhr :post, :add_participant, :e => 'unknown=0'
93
+ params = { :e => 'unknown=0' }
94
+ post :add_participant, params, :xhr => true
91
95
  assert_response :not_found
92
96
  assert @response.body.blank?
93
97
  end
@@ -96,13 +100,15 @@ class RailsDashboardTest < ActionController::TestCase
96
100
 
97
101
  def test_participant_renders_experiment_for_id
98
102
  experiment(:food).choose
99
- get :participant, :id => "1"
103
+ params = { :id => "1" }
104
+ get :participant, params
100
105
  assert_response :success
101
106
  assert @response.body =~ %r{id 1 is taking part in the following experiments:\n<ul class=\"experiments\">[\s]+<li class=\"experiment ab_test}
102
107
  end
103
108
 
104
109
  def test_participant_renders_empty_for_bad_id
105
- get :participant, :id => "2"
110
+ params = { :id => "2" }
111
+ get :participant, params
106
112
  assert_response :success
107
113
  assert @response.body =~ %r{<ul class=\"experiments\">[\s]+</ul>}
108
114
  end
@@ -114,19 +120,22 @@ class RailsDashboardTest < ActionController::TestCase
114
120
  end
115
121
 
116
122
  def test_complete_forces_confirmation
117
- xhr :post, :complete, :e => "food", :a => 0
123
+ params = { :e => "food", :a => 0 }
124
+ post :complete, params, :xhr => true
118
125
  assert_response :success
119
126
  assert @response.body =~ /#{ CGI.unescape({ :confirmed => 0 }.to_query) }/
120
127
  end
121
128
 
122
129
  def test_complete_with_confirmation_completes
123
- xhr :post, :complete, :e => "food", :a => 0, :confirmed => 'true'
130
+ params = { :e => "food", :a => 0, :confirmed => 'true' }
131
+ post :complete, params, :xhr => true
124
132
  assert_response :success
125
133
  assert !Vanity.playground.experiment(:food).active?
126
134
  end
127
135
 
128
136
  def test_chooses
129
- xhr :post, :chooses, :e => "food", :a => 0
137
+ params = { :e => "food", :a => 0 }
138
+ post :chooses, params, :xhr => true
130
139
  assert_response :success
131
140
  end
132
141
  end
data/vanity.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_development_dependency "bundler", ">= 1.8.0"
29
29
  spec.add_development_dependency "minitest", ">= 4.2"
30
- spec.add_development_dependency "appraisal", "~> 1.0.2"
30
+ spec.add_development_dependency "appraisal", "~> 2.0"
31
31
  spec.add_development_dependency "timecop"
32
32
  spec.add_development_dependency "webmock"
33
33
  spec.add_development_dependency "fakefs"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanity
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.10
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Assaf Arkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-18 00:00:00.000000000 Z
11
+ date: 2022-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.2
61
+ version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.2
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: timecop
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -131,8 +131,8 @@ extra_rdoc_files:
131
131
  - README.md
132
132
  - CHANGELOG
133
133
  files:
134
+ - ".github/workflows/test.yml"
134
135
  - ".gitignore"
135
- - ".travis.yml"
136
136
  - Appraisals
137
137
  - CHANGELOG
138
138
  - Gemfile
@@ -167,23 +167,23 @@ files:
167
167
  - doc/metrics.textile
168
168
  - doc/rails.textile
169
169
  - doc/site.js
170
- - gemfiles/rails32.gemfile
171
- - gemfiles/rails32.gemfile.lock
172
- - gemfiles/rails41.gemfile
173
- - gemfiles/rails41.gemfile.lock
174
170
  - gemfiles/rails42.gemfile
175
171
  - gemfiles/rails42.gemfile.lock
176
172
  - gemfiles/rails42_protected_attributes.gemfile
177
173
  - gemfiles/rails42_protected_attributes.gemfile.lock
178
- - gemfiles/rails5.gemfile
179
- - gemfiles/rails5.gemfile.lock
180
- - lib/generators/templates/add_participants_unique_index_migration.rb
181
- - lib/generators/templates/add_unique_indexes_migration.rb
182
- - lib/generators/templates/vanity_migration.rb
183
- - lib/generators/vanity/add_participants_unique_index_generator.rb
184
- - lib/generators/vanity/add_unique_indexes_generator.rb
174
+ - gemfiles/rails51.gemfile
175
+ - gemfiles/rails51.gemfile.lock
176
+ - gemfiles/rails52.gemfile
177
+ - gemfiles/rails52.gemfile.lock
178
+ - gemfiles/rails60.gemfile
179
+ - gemfiles/rails60.gemfile.lock
180
+ - gemfiles/rails61.gemfile
181
+ - gemfiles/rails61.gemfile.lock
182
+ - lib/generators/templates/add_participants_unique_index_migration.rb.erb
183
+ - lib/generators/templates/add_unique_indexes_migration.rb.erb
184
+ - lib/generators/templates/vanity_migration.rb.erb
185
+ - lib/generators/vanity/migration_generator.rb
185
186
  - lib/generators/vanity/views_generator.rb
186
- - lib/generators/vanity_generator.rb
187
187
  - lib/vanity.rb
188
188
  - lib/vanity/adapters.rb
189
189
  - lib/vanity/adapters/abstract_adapter.rb
@@ -208,6 +208,7 @@ files:
208
208
  - lib/vanity/locales/vanity.en.yml
209
209
  - lib/vanity/locales/vanity.nb.yml
210
210
  - lib/vanity/locales/vanity.pt-BR.yml
211
+ - lib/vanity/locales/vanity.ru.yml
211
212
  - lib/vanity/metric/active_record.rb
212
213
  - lib/vanity/metric/base.rb
213
214
  - lib/vanity/metric/google_analytics.rb
@@ -294,7 +295,7 @@ metadata: {}
294
295
  post_install_message: To get started run vanity --help
295
296
  rdoc_options:
296
297
  - "--title"
297
- - Vanity 2.2.10
298
+ - Vanity 3.1.0
298
299
  - "--main"
299
300
  - README.md
300
301
  - "--webcvs"
@@ -312,8 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
313
  - !ruby/object:Gem::Version
313
314
  version: '0'
314
315
  requirements: []
315
- rubyforge_project:
316
- rubygems_version: 2.4.8
316
+ rubygems_version: 3.3.6
317
317
  signing_key:
318
318
  specification_version: 4
319
319
  summary: Experience Driven Development framework for Ruby
@@ -376,4 +376,3 @@ test_files:
376
376
  - test/test_helper.rb
377
377
  - test/vanity_test.rb
378
378
  - test/web/rails/dashboard_test.rb
379
- has_rdoc:
data/.travis.yml DELETED
@@ -1,33 +0,0 @@
1
- sudo: false
2
- cache: bundler
3
- language: ruby
4
- before_script:
5
- - 'echo ''gem: --no-ri --no-rdoc'' > ~/.gemrc' # skip installing docs for gems
6
- before_install:
7
- - gem install bundler -v "~> 1.8.0" # Minimum version of bundler required
8
- bundler_args: --without development --jobs=3
9
- script: 'bundle exec rake test'
10
- services:
11
- - mongodb
12
- - redis-server
13
- rvm:
14
- - 2.1
15
- - 2.2.2
16
- - 2.3.0
17
- - jruby-9.1.7.0
18
- env:
19
- - DB=mongodb
20
- - DB=redis
21
- - DB=active_record
22
- gemfile:
23
- - gemfiles/rails32.gemfile
24
- - gemfiles/rails41.gemfile
25
- - gemfiles/rails42.gemfile
26
- - gemfiles/rails42_protected_attributes.gemfile
27
- - gemfiles/rails5.gemfile
28
- matrix:
29
- exclude:
30
- - rvm: 2.1
31
- gemfile: gemfiles/rails5.gemfile
32
- - rvm: jruby-9.1.7.0
33
- gemfile: gemfiles/rails5.gemfile