vanity 3.0.0 → 3.0.1

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.
@@ -0,0 +1,293 @@
1
+ GIT
2
+ remote: https://github.com/zoltankiss/fastthread.git
3
+ revision: cefbca3009b9c68df5e473d840462ebcc7fa1504
4
+ specs:
5
+ fastthread (1.0.7)
6
+
7
+ PATH
8
+ remote: ..
9
+ specs:
10
+ vanity (3.0.1)
11
+ i18n
12
+
13
+ GEM
14
+ remote: https://rubygems.org/
15
+ specs:
16
+ RedCloth (4.2.9)
17
+ RedCloth (4.2.9-java)
18
+ actioncable (5.2.0)
19
+ actionpack (= 5.2.0)
20
+ nio4r (~> 2.0)
21
+ websocket-driver (>= 0.6.1)
22
+ actionmailer (5.2.0)
23
+ actionpack (= 5.2.0)
24
+ actionview (= 5.2.0)
25
+ activejob (= 5.2.0)
26
+ mail (~> 2.5, >= 2.5.4)
27
+ rails-dom-testing (~> 2.0)
28
+ actionpack (5.2.0)
29
+ actionview (= 5.2.0)
30
+ activesupport (= 5.2.0)
31
+ rack (~> 2.0)
32
+ rack-test (>= 0.6.3)
33
+ rails-dom-testing (~> 2.0)
34
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
35
+ actionview (5.2.0)
36
+ activesupport (= 5.2.0)
37
+ builder (~> 3.1)
38
+ erubi (~> 1.4)
39
+ rails-dom-testing (~> 2.0)
40
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
41
+ activejob (5.2.0)
42
+ activesupport (= 5.2.0)
43
+ globalid (>= 0.3.6)
44
+ activemodel (5.2.0)
45
+ activesupport (= 5.2.0)
46
+ activerecord (5.2.0)
47
+ activemodel (= 5.2.0)
48
+ activesupport (= 5.2.0)
49
+ arel (>= 9.0)
50
+ activerecord-jdbc-adapter (52.8-java)
51
+ activerecord (~> 5.2.0)
52
+ activestorage (5.2.0)
53
+ actionpack (= 5.2.0)
54
+ activerecord (= 5.2.0)
55
+ marcel (~> 0.3.1)
56
+ activesupport (5.2.0)
57
+ concurrent-ruby (~> 1.0, >= 1.0.2)
58
+ i18n (>= 0.7, < 2)
59
+ minitest (~> 5.1)
60
+ tzinfo (~> 1.1)
61
+ addressable (2.5.2)
62
+ public_suffix (>= 2.0.2, < 4.0)
63
+ appraisal (2.0.2)
64
+ bundler
65
+ rake
66
+ thor (>= 0.14.0)
67
+ arel (9.0.0)
68
+ blankslate (2.1.2.4)
69
+ bson (4.3.0)
70
+ bson (4.3.0-java)
71
+ builder (3.2.3)
72
+ classifier-reborn (2.2.0)
73
+ fast-stemmer (~> 1.0)
74
+ coderay (1.1.2)
75
+ coffee-script (2.4.1)
76
+ coffee-script-source
77
+ execjs
78
+ coffee-script-source (1.11.1)
79
+ colorator (0.1)
80
+ concurrent-ruby (1.0.5)
81
+ concurrent-ruby (1.0.5-java)
82
+ crack (0.4.3)
83
+ safe_yaml (~> 1.0.0)
84
+ crass (1.0.4)
85
+ daemon_controller (1.2.0)
86
+ erubi (1.7.1)
87
+ execjs (2.7.0)
88
+ fakefs (0.18.0)
89
+ faraday (0.15.2)
90
+ multipart-post (>= 1.2, < 3)
91
+ fast-stemmer (1.0.2)
92
+ ffi (1.15.5)
93
+ ffi (1.15.5-java)
94
+ garb (0.9.1)
95
+ activesupport (>= 2.2.0)
96
+ crack (>= 0.1.6)
97
+ globalid (0.4.1)
98
+ activesupport (>= 4.2.0)
99
+ hashdiff (0.3.7)
100
+ i18n (1.0.1)
101
+ concurrent-ruby (~> 1.0)
102
+ integration (0.1.0)
103
+ jdbc-sqlite3 (3.28.0)
104
+ jekyll (2.5.3)
105
+ classifier-reborn (~> 2.0)
106
+ colorator (~> 0.1)
107
+ jekyll-coffeescript (~> 1.0)
108
+ jekyll-gist (~> 1.0)
109
+ jekyll-paginate (~> 1.0)
110
+ jekyll-sass-converter (~> 1.0)
111
+ jekyll-watch (~> 1.1)
112
+ kramdown (~> 1.3)
113
+ liquid (~> 2.6.1)
114
+ mercenary (~> 0.3.3)
115
+ pygments.rb (~> 0.6.0)
116
+ redcarpet (~> 3.1)
117
+ safe_yaml (~> 1.0)
118
+ toml (~> 0.1.0)
119
+ jekyll-coffeescript (1.1.1)
120
+ coffee-script (~> 2.2)
121
+ coffee-script-source (~> 1.11.1)
122
+ jekyll-gist (1.5.0)
123
+ octokit (~> 4.2)
124
+ jekyll-paginate (1.1.0)
125
+ jekyll-sass-converter (1.5.2)
126
+ sass (~> 3.4)
127
+ jekyll-watch (1.5.1)
128
+ listen (~> 3.0)
129
+ kramdown (1.17.0)
130
+ liquid (2.6.3)
131
+ listen (3.1.5)
132
+ rb-fsevent (~> 0.9, >= 0.9.4)
133
+ rb-inotify (~> 0.9, >= 0.9.7)
134
+ ruby_dep (~> 1.2)
135
+ loofah (2.2.2)
136
+ crass (~> 1.0.2)
137
+ nokogiri (>= 1.5.9)
138
+ mail (2.7.0)
139
+ mini_mime (>= 0.1.1)
140
+ marcel (0.3.3)
141
+ mimemagic (~> 0.3.2)
142
+ mercenary (0.3.6)
143
+ method_source (0.9.0)
144
+ mimemagic (0.3.10)
145
+ nokogiri (~> 1)
146
+ rake
147
+ mini_mime (1.0.0)
148
+ mini_portile2 (2.6.1)
149
+ minitest (5.11.3)
150
+ mocha (1.13.0)
151
+ mongo (2.6.1)
152
+ bson (>= 4.3.0, < 5.0.0)
153
+ multipart-post (2.0.0)
154
+ nio4r (2.3.1)
155
+ nio4r (2.3.1-java)
156
+ nokogiri (1.12.5)
157
+ mini_portile2 (~> 2.6.1)
158
+ racc (~> 1.4)
159
+ nokogiri (1.12.5-java)
160
+ racc (~> 1.4)
161
+ octokit (4.9.0)
162
+ sawyer (~> 0.8.0, >= 0.5.3)
163
+ parslet (1.5.0)
164
+ blankslate (~> 2.0)
165
+ passenger (3.0.21)
166
+ daemon_controller (>= 1.0.0)
167
+ fastthread (>= 1.0.1)
168
+ rack
169
+ rake (>= 0.8.1)
170
+ posix-spawn (0.3.13)
171
+ pry (0.11.3)
172
+ coderay (~> 1.1.0)
173
+ method_source (~> 0.9.0)
174
+ pry (0.11.3-java)
175
+ coderay (~> 1.1.0)
176
+ method_source (~> 0.9.0)
177
+ spoon (~> 0.0)
178
+ public_suffix (3.0.2)
179
+ pygments.rb (0.6.3)
180
+ posix-spawn (~> 0.3.6)
181
+ yajl-ruby (~> 1.2.0)
182
+ racc (1.6.0)
183
+ racc (1.6.0-java)
184
+ rack (2.0.5)
185
+ rack-test (1.1.0)
186
+ rack (>= 1.0, < 3)
187
+ rails (5.2.0)
188
+ actioncable (= 5.2.0)
189
+ actionmailer (= 5.2.0)
190
+ actionpack (= 5.2.0)
191
+ actionview (= 5.2.0)
192
+ activejob (= 5.2.0)
193
+ activemodel (= 5.2.0)
194
+ activerecord (= 5.2.0)
195
+ activestorage (= 5.2.0)
196
+ activesupport (= 5.2.0)
197
+ bundler (>= 1.3.0)
198
+ railties (= 5.2.0)
199
+ sprockets-rails (>= 2.0.0)
200
+ rails-dom-testing (2.0.3)
201
+ activesupport (>= 4.2.0)
202
+ nokogiri (>= 1.6)
203
+ rails-html-sanitizer (1.0.4)
204
+ loofah (~> 2.2, >= 2.2.2)
205
+ railties (5.2.0)
206
+ actionpack (= 5.2.0)
207
+ activesupport (= 5.2.0)
208
+ method_source
209
+ rake (>= 0.8.7)
210
+ thor (>= 0.18.1, < 2.0)
211
+ rake (12.3.1)
212
+ rb-fsevent (0.10.3)
213
+ rb-inotify (0.9.10)
214
+ ffi (>= 0.5.0, < 2)
215
+ redcarpet (3.4.0)
216
+ redis (4.0.1)
217
+ redis-namespace (1.6.0)
218
+ redis (>= 3.0.4)
219
+ ruby_dep (1.5.0)
220
+ rubystats (0.3.0)
221
+ safe_yaml (1.0.4)
222
+ sass (3.5.7)
223
+ sass-listen (~> 4.0.0)
224
+ sass-listen (4.0.0)
225
+ rb-fsevent (~> 0.9, >= 0.9.4)
226
+ rb-inotify (~> 0.9, >= 0.9.7)
227
+ sawyer (0.8.1)
228
+ addressable (>= 2.3.5, < 2.6)
229
+ faraday (~> 0.8, < 1.0)
230
+ spoon (0.0.6)
231
+ ffi
232
+ sprockets (3.7.2)
233
+ concurrent-ruby (~> 1.0)
234
+ rack (> 1, < 3)
235
+ sprockets-rails (3.2.1)
236
+ actionpack (>= 4.0)
237
+ activesupport (>= 4.0)
238
+ sprockets (>= 3.0.0)
239
+ sqlite3 (1.3.10)
240
+ thor (0.20.0)
241
+ thread_safe (0.3.6)
242
+ thread_safe (0.3.6-java)
243
+ timecop (0.9.1)
244
+ toml (0.1.2)
245
+ parslet (~> 1.5.0)
246
+ tzinfo (1.2.5)
247
+ thread_safe (~> 0.1)
248
+ webmock (3.4.2)
249
+ addressable (>= 2.3.6)
250
+ crack (>= 0.3.2)
251
+ hashdiff
252
+ websocket-driver (0.7.0)
253
+ websocket-extensions (>= 0.1.0)
254
+ websocket-driver (0.7.0-java)
255
+ websocket-extensions (>= 0.1.0)
256
+ websocket-extensions (0.1.3)
257
+ yajl-ruby (1.2.3)
258
+ yard (0.9.15)
259
+
260
+ PLATFORMS
261
+ java
262
+ ruby
263
+
264
+ DEPENDENCIES
265
+ RedCloth
266
+ activerecord-jdbc-adapter
267
+ appraisal (~> 2.0)
268
+ bundler (>= 1.8.0)
269
+ fakefs
270
+ fastthread!
271
+ garb (< 0.9.2)
272
+ integration (<= 0.1.0)
273
+ jdbc-sqlite3
274
+ jekyll (~> 2.5.3)
275
+ minitest (>= 4.2)
276
+ mocha (~> 1.0)
277
+ mongo (~> 2.1)
278
+ passenger (~> 3.0)
279
+ pry
280
+ rack
281
+ rails (~> 5.2.0)
282
+ rake
283
+ redis (>= 3.2.1)
284
+ redis-namespace (>= 1.1.0)
285
+ rubystats (>= 0.2.5)
286
+ sqlite3 (~> 1.3.10)
287
+ timecop
288
+ vanity!
289
+ webmock
290
+ yard
291
+
292
+ BUNDLED WITH
293
+ 1.17.2
@@ -105,7 +105,7 @@ module Vanity
105
105
  retried = false
106
106
  begin
107
107
  if record = VanityParticipant.where(:experiment_id => experiment.to_s, :identity => identity.to_s).first
108
- record.update_attributes(update_with) if update_with
108
+ record.update(update_with) if update_with
109
109
  elsif create
110
110
  record = VanityParticipant.create({ :experiment_id => experiment.to_s, :identity => identity.to_s }.merge(update_with || {}))
111
111
  end
@@ -18,7 +18,7 @@ module Vanity
18
18
  end
19
19
 
20
20
  def valid_redis_namespace_version?
21
- Gem.loaded_specs['redis'].version >= Gem::Version.create('1.1.0')
21
+ Gem.loaded_specs['redis-namespace'].version >= Gem::Version.create('1.1.0')
22
22
  end
23
23
  end
24
24
 
@@ -141,7 +141,7 @@ module Vanity
141
141
  def ab_counts(experiment, alternative)
142
142
  {
143
143
  :participants => @experiments.scard("#{experiment}:alts:#{alternative}:participants").to_i,
144
- :converted => @experiments.scard("#{experiment}:alts:#{alternative}:converted").to_i,
144
+ :converted => @experiments.scard("#{experiment}:alts:#{alternative}:converted").to_i,
145
145
  :conversions => @experiments.get("#{experiment}:alts:#{alternative}:conversions").to_i
146
146
  }
147
147
  end
@@ -11,7 +11,7 @@ module Vanity
11
11
  def render(path_or_options, locals = {})
12
12
  if path_or_options.respond_to?(:keys)
13
13
  render_erb(
14
- path_or_options[:file] || path_or_options[:partial],
14
+ path_or_options[:template] || path_or_options[:partial],
15
15
  path_or_options[:locals]
16
16
  )
17
17
  else
@@ -54,9 +54,10 @@ module Vanity
54
54
  struct = Struct.new(*keys)
55
55
  struct.send :include, Render
56
56
  locals = struct.new(*locals.values_at(*keys))
57
+ path = "#{Vanity.template(path)}.erb" unless path =~ /\/.*\.erb\z/
57
58
  dir, base = File.split(path)
58
59
  path = File.join(dir, partialize(base))
59
- erb = ERB.new(File.read("#{path}.erb"), nil, '<>')
60
+ erb = ERB.new(File.read(path), nil, '<>')
60
61
  erb.filename = path
61
62
  erb.result(locals.instance_eval { binding })
62
63
  end
@@ -78,7 +79,7 @@ module Vanity
78
79
  # Generate an HTML report. Outputs to the named file, or stdout with no
79
80
  # arguments.
80
81
  def report(output = nil)
81
- html = render(Vanity.template("report"),
82
+ html = render(Vanity.template("_report.erb"),
82
83
  :experiments=>Vanity.playground.experiments,
83
84
  :experiments_persisted=>Vanity.playground.experiments_persisted?,
84
85
  :metrics=>Vanity.playground.metrics
@@ -251,7 +251,7 @@ module Vanity
251
251
  def vanity_js
252
252
  return if Vanity.context.vanity_active_experiments.nil? || Vanity.context.vanity_active_experiments.empty?
253
253
  javascript_tag do
254
- render :file => Vanity.template("_vanity"), :formats => [:js]
254
+ render :file => Vanity.template("_vanity.js.erb"), :formats => [:js]
255
255
  end
256
256
  end
257
257
 
@@ -348,8 +348,13 @@ module Vanity
348
348
  #
349
349
  # Step 3: Open your browser to http://localhost:3000/vanity
350
350
  module Dashboard
351
+ def set_vanity_view_path
352
+ prepend_view_path Vanity.template('')
353
+ end
354
+
351
355
  def index
352
- render :file=>Vanity.template("_report"),:content_type=>Mime[:html], :locals=>{
356
+ set_vanity_view_path
357
+ render :template=>"_report", :content_type=>Mime[:html], :locals=>{
353
358
  :experiments=>Vanity.playground.experiments,
354
359
  :experiments_persisted=>Vanity.playground.experiments_persisted?,
355
360
  :metrics=>Vanity.playground.metrics
@@ -357,46 +362,52 @@ module Vanity
357
362
  end
358
363
 
359
364
  def participant
360
- render :file=>Vanity.template("_participant"), :locals=>{:participant_id => params[:id], :participant_info => Vanity.playground.participant_info(params[:id])}, :content_type=>Mime[:html]
365
+ set_vanity_view_path
366
+ render :template=>"_participant", :locals=>{:participant_id => params[:id], :participant_info => Vanity.playground.participant_info(params[:id])}, :content_type=>Mime[:html]
361
367
  end
362
368
 
363
369
  def complete
370
+ set_vanity_view_path
364
371
  exp = Vanity.playground.experiment(params[:e].to_sym)
365
372
  alt = exp.alternatives[params[:a].to_i]
366
373
  confirmed = params[:confirmed]
367
374
  # make the user confirm before completing an experiment
368
375
  if confirmed && confirmed.to_i==alt.id && exp.active?
369
376
  exp.complete!(alt.id)
370
- render :file=>Vanity.template("_experiment"), :locals=>{:experiment=>exp}
377
+ render :template=>"_experiment", :locals=>{:experiment=>exp}
371
378
  else
372
379
  @to_confirm = alt.id
373
- render :file=>Vanity.template("_experiment"), :locals=>{:experiment=>exp}
380
+ render :template=>"_experiment", :locals=>{:experiment=>exp}
374
381
  end
375
382
  end
376
383
 
377
384
  def disable
385
+ set_vanity_view_path
378
386
  exp = Vanity.playground.experiment(params[:e].to_sym)
379
387
  exp.enabled = false
380
- render :file=>Vanity.template("_experiment"), :locals=>{:experiment=>exp}
388
+ render :template=>"_experiment", :locals=>{:experiment=>exp}
381
389
  end
382
390
 
383
391
  def enable
392
+ set_vanity_view_path
384
393
  exp = Vanity.playground.experiment(params[:e].to_sym)
385
394
  exp.enabled = true
386
- render :file=>Vanity.template("_experiment"), :locals=>{:experiment=>exp}
395
+ render :template=>"_experiment", :locals=>{:experiment=>exp}
387
396
  end
388
397
 
389
398
  def chooses
399
+ set_vanity_view_path
390
400
  exp = Vanity.playground.experiment(params[:e].to_sym)
391
401
  exp.chooses(exp.alternatives[params[:a].to_i].value)
392
- render :file=>Vanity.template("_experiment"), :locals=>{:experiment=>exp}
402
+ render :template=>"_experiment", :locals=>{:experiment=>exp}
393
403
  end
394
404
 
395
405
  def reset
406
+ set_vanity_view_path
396
407
  exp = Vanity.playground.experiment(params[:e].to_sym)
397
408
  exp.reset
398
409
  flash[:notice] = I18n.t 'vanity.experiment_has_been_reset', name: exp.name
399
- render :file=>Vanity.template("_experiment"), :locals=>{:experiment=>exp}
410
+ render :template=>"_experiment", :locals=>{:experiment=>exp}
400
411
  end
401
412
 
402
413
  include AddParticipant
@@ -0,0 +1,50 @@
1
+ ru:
2
+ vanity:
3
+ act_on_this_experiment:
4
+ enable: 'Включить этот эксперимент'
5
+ disable: 'Выключить этот эксперимент'
6
+ best_alternative: '(%{probability}% это лучшая альтернатива)'
7
+ best_alternative_is_significant: 'С %{probability}% вероятностью этот результат является статистически значимым.'
8
+ best_alternative_probability: 'С %{probability}% вероятностью этот результат является самым лучшим.'
9
+ best_alternative_measure: 'Самый лучший выбор %{best_alternative}: он конвертирован в %{measure}% %{better_than}.'
10
+ better_alternative_than: '(%{probability}% лучше чем %{alternative})'
11
+ choose_experiment: 'Показать мне этот вариант прямо сейчас'
12
+ complete_and_confirm_experiment: 'Подтвердите завершение эксперимента и назначение всех нынешних и будущих участников, %{name}'
13
+ complete_and_confirm_experiment_label: 'Завершить этот эксперимент и назначить всех нынешних и будущих участников %{name}?'
14
+ complete_experiment: 'Завершить эксперимент и назначить всех нынешних и будущих участников %{name}'
15
+ completed_at: 'Завершено %{timestamp}'
16
+ confirm: 'подтвердить'
17
+ converted: '%{count} конвертировано'
18
+ converted_percentage: '%{alternative} конвертировано в %{percentage}%.'
19
+ currently_shown: 'сейчас отображено'
20
+ default: '(Default)'
21
+ didnt_convert: '%{alternative} невозможно конвертировать.'
22
+ disable: 'Отключить'
23
+ disabled: 'Отключено'
24
+ enable: 'Включить'
25
+ enabled: 'Включено'
26
+ experiment_has_been_reset: '%{name} эксперимент был сброшен.'
27
+ experiment_has_been_disabled: 'Этот эксперимент в данное время отключен и всегда будет выбираться по умолчанию %{name}.'
28
+ experiment_participants:
29
+ one: 'В этом эксперименте один участник.'
30
+ other: 'В этом эксперименте %{count} участников.'
31
+ experiments: 'Эксперименты'
32
+ experiments_out_of_sync: "Кэшированные эксперименты Vanity не синхронизированы с экспериментами в файловой системе и / или в хранилище данных. Перезапустите сервер и / или включите сбор."
33
+ generated_by: 'Создан с помощью %{link}'
34
+ low_result_confidence: 'Полученный результат не является надежным, предлагаю продолжить этот эксперимент.'
35
+ make_permanent: 'сделать постоянным'
36
+ metrics: 'Метрики'
37
+ no_clear_winner: 'Этот эксперимент не длился достаточно долго, чтобы найти явного победителя.'
38
+ no_participants: 'В этом эксперименте пока нет участников.'
39
+ not_collecting_data: 'Vanity в данный момент не собирает данные и метрики. Чтобы включить сбор данных, установите %{setting} в %{file}.'
40
+ option_number: 'выбор %{char}'
41
+ participant_taking_part_on: 'Участник с идентификатором %{participant_id} принимает участие в следующих экспериментах:'
42
+ participants:
43
+ one: '1 участник'
44
+ other: '%{count} участников'
45
+ reset: 'Сбросить'
46
+ report: 'Отчет Vanity: %{timestamp}'
47
+ result_isnt_significant: 'Полученный результат не является статистически важным, предлагаю продолжить этот эксперимент.'
48
+ selected_as_best: '%{alternative} выбран в качестве лучшей альтернативы.'
49
+ show_me: 'показать мне'
50
+ started_at: 'Начато %{timestamp}'
@@ -9,13 +9,13 @@
9
9
  <% if experiment.type == 'ab_test' && experiment.active? && experiment.playground.collecting? %>
10
10
  <span class='enabled-links'>
11
11
  <% action = experiment.enabled? ? :disable : :enable %>
12
-
12
+
13
13
  <% if experiment.enabled? %> <%= I18n.t( 'vanity.enabled' ) %> | <% end %>
14
14
  <a title='<%=I18n.t( action, scope: 'vanity.act_on_this_experiment' )%>' href='#'
15
15
  data-id='<%= experiment.id %>' data-url='<%= url_for(:action=>action, :e => experiment.id) %>'>
16
16
  <%= action %></a>
17
17
  <% if !experiment.enabled? %> | <%= I18n.t( 'vanity.disabled' ) %> <% end %>
18
-
18
+
19
19
  </span>
20
20
  <% end %>
21
21
  </h3>
@@ -26,7 +26,7 @@
26
26
  </p>
27
27
  <% end %>
28
28
  <a class="button reset" title="<%= I18n.t('vanity.reset') %>" href="#" data-id="<%= experiment.id %>" data-url="<%= url_for(:action=>:reset, :e=>experiment.id) %>"><%= I18n.t 'vanity.reset' %></a>
29
- <%= render :file => Vanity.template("_" + experiment.type), :locals => {:experiment => experiment} %>
29
+ <%= render :template => "_" + experiment.type, :locals => {:experiment => experiment} %>
30
30
  <p class="meta">
31
31
  <%= I18n.t('vanity.started_at', :timestamp=>I18n.l(experiment.created_at, :format=>'%a, %b %d')) %>
32
32
  <%= ' | '+I18n.t('vanity.completed_at', :timestamp=>I18n.l(experiment.completed_at, :format=>'%a, %b %d')) unless experiment.active? %>
@@ -1,7 +1,7 @@
1
1
  <ul class="experiments">
2
2
  <% experiments.sort_by{|id, experiment| experiment.created_at}.sort_by{ |id, experiment| experiment.name }.reverse.each do |id, experiment| %>
3
3
  <li class="experiment <%= experiment.type %>" id="experiment_<%=vanity_h id.to_s %>">
4
- <%= render :file => Vanity.template("_experiment"), :locals => { :id => id, :experiment => experiment } %>
4
+ <%= render :template=>"_experiment", :locals => { :id => id, :experiment => experiment } %>
5
5
  </li>
6
6
  <% end %>
7
7
  </ul>
@@ -1,7 +1,7 @@
1
1
  <ul class="metrics">
2
2
  <% metrics.sort_by { |id, metric| metric.name }.each do |id, metric| %>
3
3
  <li class="metric" id="metric_<%= id %>">
4
- <%= render :file=>Vanity.template("_metric"), :locals=>{:id=>id, :metric=>metric} %>
4
+ <%= render :template=>"_metric", :locals=>{:id=>id, :metric=>metric} %>
5
5
  </li>
6
6
  <% end %>
7
7
  </ul>
@@ -22,12 +22,12 @@
22
22
  <% if experiments_persisted %>
23
23
  <% if experiments.present? %>
24
24
  <h2><%= I18n.t 'vanity.experiments' %></h2>
25
- <%= render :file=>Vanity.template("_experiments"), :locals=>{:experiments=>experiments} %>
25
+ <%= render :template=>"_experiments", :locals=>{:experiments=>experiments} %>
26
26
  <% end %>
27
27
 
28
28
  <% unless metrics.empty? %>
29
29
  <h2><%= I18n.t 'vanity.metrics' %></h2>
30
- <%= render :file=>Vanity.template("_metrics"), :locals=>{:metrics=>metrics, :experiments=>experiments} %>
30
+ <%= render :template=>"_metrics", :locals=>{:metrics=>metrics, :experiments=>experiments} %>
31
31
  <% end %>
32
32
  <% else %>
33
33
  <div class="alert persistance">
@@ -1,5 +1,5 @@
1
1
  module Vanity
2
- VERSION = "3.0.0"
2
+ VERSION = "3.0.1"
3
3
 
4
4
  module Version
5
5
  version = VERSION.to_s.split(".").map { |i| i.to_i }
@@ -4,5 +4,8 @@
4
4
  # If you change this key, all old signed cookies will become invalid!
5
5
  # Make sure the secret is at least 30 characters and all random,
6
6
  # no regular words or you'll be exposed to dictionary attacks.
7
- Dummy::Application.config.secret_token = '33ccbc9a29f3b02e87c08904505b1c9a3a1e97dd01f02e598e65ee9e7b96fff2ca4a6d0dd7c4a8d3682d8c64f84d372661e141264e70697dc576c722c72d80d0'
8
- Dummy::Application.config.secret_key_base = 'secret' if Dummy::Application.config.respond_to?(:secret_key_base=)
7
+ if Dummy::Application.config.respond_to?(:secret_key_base=)
8
+ Dummy::Application.config.secret_key_base = 'secret'
9
+ else
10
+ Dummy::Application.config.secret_token = '33ccbc9a29f3b02e87c08904505b1c9a3a1e97dd01f02e598e65ee9e7b96fff2ca4a6d0dd7c4a8d3682d8c64f84d372661e141264e70697dc576c722c72d80d0'
11
+ 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", "~> 2.0.0"
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: 3.0.0
4
+ version: 3.0.1
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-12-15 00:00:00.000000000 Z
11
+ date: 2022-01-27 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: 2.0.0
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: 2.0.0
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
@@ -175,6 +175,10 @@ files:
175
175
  - gemfiles/rails51.gemfile.lock
176
176
  - gemfiles/rails52.gemfile
177
177
  - gemfiles/rails52.gemfile.lock
178
+ - gemfiles/rails60.gemfile
179
+ - gemfiles/rails60.gemfile.lock
180
+ - gemfiles/rails61.gemfile
181
+ - gemfiles/rails61.gemfile.lock
178
182
  - lib/generators/templates/add_participants_unique_index_migration.rb.erb
179
183
  - lib/generators/templates/add_unique_indexes_migration.rb.erb
180
184
  - lib/generators/templates/vanity_migration.rb.erb
@@ -204,6 +208,7 @@ files:
204
208
  - lib/vanity/locales/vanity.en.yml
205
209
  - lib/vanity/locales/vanity.nb.yml
206
210
  - lib/vanity/locales/vanity.pt-BR.yml
211
+ - lib/vanity/locales/vanity.ru.yml
207
212
  - lib/vanity/metric/active_record.rb
208
213
  - lib/vanity/metric/base.rb
209
214
  - lib/vanity/metric/google_analytics.rb
@@ -290,7 +295,7 @@ metadata: {}
290
295
  post_install_message: To get started run vanity --help
291
296
  rdoc_options:
292
297
  - "--title"
293
- - Vanity 3.0.0
298
+ - Vanity 3.0.1
294
299
  - "--main"
295
300
  - README.md
296
301
  - "--webcvs"
@@ -309,7 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
314
  version: '0'
310
315
  requirements: []
311
316
  rubyforge_project:
312
- rubygems_version: 2.7.7
317
+ rubygems_version: 2.7.6.3
313
318
  signing_key:
314
319
  specification_version: 4
315
320
  summary: Experience Driven Development framework for Ruby