diff --git a/README.md b/README.md index 35969b68..2e0324f9 100644 --- a/README.md +++ b/README.md @@ -23,10 +23,10 @@ gem install ldclient-rb require 'ldclient-rb' ``` -2. Create a new LDClient with your API key: +2. Create a new LDClient with your SDK key: ```ruby -client = LaunchDarkly::LDClient.new("your_api_key") +client = LaunchDarkly::LDClient.new("your_sdk_key") ``` ### Ruby on Rails @@ -36,7 +36,7 @@ client = LaunchDarkly::LDClient.new("your_api_key") 1. Initialize the launchdarkly client in `config/initializers/launchdarkly.rb`: ```ruby -Rails.configuration.ld_client = LaunchDarkly::LDClient.new("your_api_key") +Rails.configuration.ld_client = LaunchDarkly::LDClient.new("your_sdk_key") ``` 2. You may want to include a function in your ApplicationController diff --git a/lib/ldclient-rb/evaluation.rb b/lib/ldclient-rb/evaluation.rb index 03b1ee3d..90df5159 100644 --- a/lib/ldclient-rb/evaluation.rb +++ b/lib/ldclient-rb/evaluation.rb @@ -118,7 +118,7 @@ def eval_internal(flag, user, store, events) begin prereq_res = eval_internal(prereq_flag, user, store, events) variation = get_variation(prereq_flag, prerequisite[:variation]) - events.push(kind: "feature", key: prereq_flag[:key], value: prereq_res) + events.push(kind: "feature", key: prereq_flag[:key], value: prereq_res, version: prereq_flag[:version], prereqOf: flag[:key]) if prereq_res.nil? || prereq_res!= variation failed_prereq = true end diff --git a/lib/ldclient-rb/ldclient.rb b/lib/ldclient-rb/ldclient.rb index d28323c1..1af095e5 100644 --- a/lib/ldclient-rb/ldclient.rb +++ b/lib/ldclient-rb/ldclient.rb @@ -114,26 +114,32 @@ def variation(key, user, default) sanitize_user(user) feature = @store.get(key) - begin - res = evaluate(feature, user, @store) - if !res[:events].nil? - res[:events].each do |event| - @event_processor.add_event(event) - end - end - if !res[:value].nil? - @event_processor.add_event(kind: "feature", key: key, user: user, value: res[:value], default: default) - return res[:value] - else - @config.logger.debug("[LDClient] Result value is null in toggle") - @event_processor.add_event(kind: "feature", key: key, user: user, value: default, default: default) - return default + if feature.nil? + @config.logger.error("[LDClient] Unknown feature flag #{key}. Returning default value") + @event_processor.add_event(kind: "feature", key: key, value: default, default: default) + return default + end + + begin + res = evaluate(feature, user, @store) + if !res[:events].nil? + res[:events].each do |event| + @event_processor.add_event(event) end - rescue => exn - @config.logger.warn("[LDClient] Error evaluating feature flag: #{exn.inspect}. \nTrace: #{exn.backtrace}") - @event_processor.add_event(kind: "feature", key: key, user: user, value: default, default: default) - return default end + if !res[:value].nil? + @event_processor.add_event(kind: "feature", key: key, user: user, value: res[:value], default: default, version: feature[:version]) + return res[:value] + else + @config.logger.debug("[LDClient] Result value is null in toggle") + @event_processor.add_event(kind: "feature", key: key, user: user, value: default, default: default, version: feature[:version]) + return default + end + rescue => exn + @config.logger.warn("[LDClient] Error evaluating feature flag: #{exn.inspect}. \nTrace: #{exn.backtrace}") + @event_processor.add_event(kind: "feature", key: key, user: user, value: default, default: default, version: feature[:version]) + return default + end end # diff --git a/lib/ldclient-rb/requestor.rb b/lib/ldclient-rb/requestor.rb index 16e1d34e..69a1ac98 100644 --- a/lib/ldclient-rb/requestor.rb +++ b/lib/ldclient-rb/requestor.rb @@ -32,7 +32,7 @@ def make_request(path) end if res.status == 401 - @config.logger.error("[LDClient] Invalid API key") + @config.logger.error("[LDClient] Invalid SDK key") return nil end