Module: FieldTest::Helpers
- 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
- #field_test_participants(options = {}) ⇒ Object
Instance Method Details
#field_test(experiment, options = {}) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/field_test/helpers.rb', line 3 def field_test(experiment, = {}) exp = FieldTest::Experiment.find(experiment) participants = field_test_participants() if try(:request) if params[:field_test] && params[:field_test][experiment] [:variant] ||= params[:field_test][experiment] end end # cache results for request @field_test_cache ||= {} @field_test_cache[experiment] ||= exp.variant(participants, ) end |
#field_test_converted(experiment, options = {}) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/field_test/helpers.rb', line 19 def field_test_converted(experiment, = {}) exp = FieldTest::Experiment.find(experiment) participants = field_test_participants() exp.convert(participants) end |
#field_test_experiments(options = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/field_test/helpers.rb', line 27 def field_test_experiments( = {}) participants = field_test_participants() memberships = FieldTest::Membership.where(participant: participants).group_by(&:participant) experiments = {} participants.each do |participant| memberships[participant].each do |membership| experiments[membership.experiment] ||= membership.variant end end experiments end |
#field_test_participants(options = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/field_test/helpers.rb', line 39 def field_test_participants( = {}) participants = [] if [:participant] participants << [:participant] else if respond_to?(:current_user, true) && current_user participants << current_user end if try(:request) # use cookie = "field_test" token = [] if participants.empty? && !token token = SecureRandom.uuid [] = {value: token, expires: 30.days.from_now} end if token participants << "cookie:#{token.gsub(/[^a-z0-9\-]/i, "")}" end end end FieldTest::Participant.standardize(participants) end |