Module: FieldTest::Helpers
- Included in:
- Controller, Mailer
- Defined in:
- lib/field_test/helpers.rb
Instance Method Summary collapse
- #field_test(experiment, **options) ⇒ Object
- #field_test_converted(experiment, **options) ⇒ Object
-
#field_test_experiments(**options) ⇒ Object
TODO fetch in single query.
Instance Method Details
#field_test(experiment, **options) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/field_test/helpers.rb', line 3 def field_test(experiment, **) exp = FieldTest::Experiment.find(experiment) participants = FieldTest::Participant.standardize([:participant] || field_test_participant) if try(:request) = .dup if ![:variant] && params[:field_test] && params[:field_test][experiment] && exp.variants.include?(params[:field_test][experiment]) params_variant = params[:field_test][experiment] end if FieldTest.exclude_bots? [:exclude] = Browser.new(request.user_agent).bot? end [:ip] = request.remote_ip [:user_agent] = request.user_agent end # cache results for request @field_test_cache ||= {} # don't update variant when passed via params @field_test_cache[experiment] ||= params_variant || exp.variant(participants, ) end |
#field_test_converted(experiment, **options) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/field_test/helpers.rb', line 30 def field_test_converted(experiment, **) exp = FieldTest::Experiment.find(experiment) participants = FieldTest::Participant.standardize([:participant] || field_test_participant) exp.convert(participants, goal: [:goal]) end |
#field_test_experiments(**options) ⇒ Object
TODO fetch in single query
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/field_test/helpers.rb', line 39 def field_test_experiments(**) participants = FieldTest::Participant.standardize([:participant] || field_test_participant) experiments = {} participants.each do |participant| FieldTest::Membership.where(participant.where_values).each do |membership| experiments[membership.experiment] ||= membership.variant end end experiments end |