vanity 2.2.10 → 3.1.0
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.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +55 -0
- data/Appraisals +24 -20
- data/CHANGELOG +19 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +23 -15
- data/README.md +14 -16
- data/gemfiles/rails42.gemfile +6 -6
- data/gemfiles/rails42.gemfile.lock +95 -86
- data/gemfiles/rails42_protected_attributes.gemfile +6 -6
- data/gemfiles/rails42_protected_attributes.gemfile.lock +90 -81
- data/gemfiles/{rails5.gemfile → rails51.gemfile} +6 -6
- data/gemfiles/rails51.gemfile.lock +285 -0
- data/gemfiles/{rails41.gemfile → rails52.gemfile} +6 -6
- data/gemfiles/rails52.gemfile.lock +295 -0
- data/gemfiles/{rails32.gemfile → rails60.gemfile} +6 -9
- data/gemfiles/rails60.gemfile.lock +293 -0
- data/gemfiles/rails61.gemfile +33 -0
- data/gemfiles/rails61.gemfile.lock +293 -0
- data/lib/generators/templates/{add_participants_unique_index_migration.rb → add_participants_unique_index_migration.rb.erb} +1 -1
- data/lib/generators/templates/{add_unique_indexes_migration.rb → add_unique_indexes_migration.rb.erb} +1 -1
- data/lib/generators/templates/{vanity_migration.rb → vanity_migration.rb.erb} +1 -1
- data/lib/generators/vanity/migration_generator.rb +34 -0
- data/lib/vanity/adapters/active_record_adapter.rb +1 -1
- data/lib/vanity/adapters/redis_adapter.rb +20 -20
- data/lib/vanity/commands/report.rb +4 -3
- data/lib/vanity/configuration.rb +4 -0
- data/lib/vanity/experiment/ab_test.rb +16 -11
- data/lib/vanity/frameworks/rails.rb +20 -9
- data/lib/vanity/locales/vanity.ru.yml +50 -0
- data/lib/vanity/templates/_experiment.erb +3 -3
- data/lib/vanity/templates/_experiments.erb +1 -1
- data/lib/vanity/templates/_metrics.erb +1 -1
- data/lib/vanity/templates/_report.erb +2 -2
- data/lib/vanity/version.rb +1 -1
- data/test/adapters/redis_adapter_test.rb +8 -12
- data/test/adapters/shared_tests.rb +7 -6
- data/test/commands/report_test.rb +13 -1
- data/test/configuration_test.rb +15 -2
- data/test/dummy/app/mailers/vanity_mailer.rb +3 -1
- data/test/dummy/config/initializers/secret_token.rb +5 -2
- data/test/dummy/config/routes.rb +17 -3
- data/test/experiment/ab_test.rb +43 -3
- data/test/frameworks/rails/action_controller_test.rb +12 -6
- data/test/frameworks/rails/action_mailer_test.rb +0 -1
- data/test/metric/active_record_test.rb +8 -2
- data/test/playground_test.rb +0 -1
- data/test/test_helper.rb +57 -10
- data/test/web/rails/dashboard_test.rb +19 -10
- data/vanity.gemspec +1 -1
- metadata +20 -21
- data/.travis.yml +0 -33
- data/gemfiles/rails32.gemfile.lock +0 -242
- data/gemfiles/rails41.gemfile.lock +0 -230
- data/gemfiles/rails5.gemfile.lock +0 -256
- data/lib/generators/vanity/add_participants_unique_index_generator.rb +0 -15
- data/lib/generators/vanity/add_unique_indexes_generator.rb +0 -15
- data/lib/generators/vanity_generator.rb +0 -15
data/test/experiment/ab_test.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
|
@@ -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
|
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.
|
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
|
data/test/playground_test.rb
CHANGED
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/
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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", "~>
|
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:
|
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:
|
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:
|
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:
|
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/
|
179
|
-
- gemfiles/
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
183
|
-
-
|
184
|
-
-
|
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
|
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
|
-
|
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
|