Class: Optimizely::UserProfileTracker
- Inherits:
-
Object
- Object
- Optimizely::UserProfileTracker
- Defined in:
- lib/optimizely/user_profile_tracker.rb
Instance Attribute Summary collapse
-
#user_profile ⇒ Object
readonly
Returns the value of attribute user_profile.
Instance Method Summary collapse
-
#initialize(user_id, user_profile_service = nil, logger = nil) ⇒ UserProfileTracker
constructor
A new instance of UserProfileTracker.
- #load_user_profile(reasons = [], error_handler = nil) ⇒ Object
- #save_user_profile(error_handler = nil) ⇒ Object
- #update_user_profile(experiment_id, variation_id) ⇒ Object
Constructor Details
#initialize(user_id, user_profile_service = nil, logger = nil) ⇒ UserProfileTracker
Returns a new instance of UserProfileTracker.
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/optimizely/user_profile_tracker.rb', line 9 def initialize(user_id, user_profile_service = nil, logger = nil) @user_id = user_id @user_profile_service = user_profile_service @logger = logger || NoOpLogger.new @profile_updated = false @user_profile = { user_id: user_id, experiment_bucket_map: {} } end |
Instance Attribute Details
#user_profile ⇒ Object (readonly)
Returns the value of attribute user_profile.
7 8 9 |
# File 'lib/optimizely/user_profile_tracker.rb', line 7 def user_profile @user_profile end |
Instance Method Details
#load_user_profile(reasons = [], error_handler = nil) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/optimizely/user_profile_tracker.rb', line 20 def load_user_profile(reasons = [], error_handler = nil) return if reasons.nil? begin @user_profile = @user_profile_service.lookup(@user_id) if @user_profile_service if @user_profile.nil? @user_profile = { user_id: @user_id, experiment_bucket_map: {} } end rescue => e = "Error while looking up user profile for user ID '#{@user_id}': #{e}." reasons << @logger.log(Logger::ERROR, ) error_handler&.handle_error(e) end end |
#save_user_profile(error_handler = nil) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/optimizely/user_profile_tracker.rb', line 52 def save_user_profile(error_handler = nil) return unless @profile_updated && @user_profile_service begin @user_profile_service.save(@user_profile) @logger.log(Logger::INFO, "Saved user profile for user '#{@user_profile[:user_id]}'.") rescue => e @logger.log(Logger::ERROR, "Failed to save user profile for user '#{@user_profile[:user_id]}': #{e}.") error_handler&.handle_error(e) end end |
#update_user_profile(experiment_id, variation_id) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/optimizely/user_profile_tracker.rb', line 39 def update_user_profile(experiment_id, variation_id) user_id = @user_profile[:user_id] begin @user_profile[:experiment_bucket_map][experiment_id] = { variation_id: variation_id } @profile_updated = true @logger.log(Logger::INFO, "Updated variation ID #{variation_id} of experiment ID #{experiment_id} for user '#{user_id}'.") rescue => e @logger.log(Logger::ERROR, "Error while updating user profile for user ID '#{user_id}': #{e}.") end end |