splitclient-rb 8.1.1.pre.rc2-java → 8.1.2-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba041f1df9e37f3bc6a4f39c870908012315bb17
4
- data.tar.gz: 35ee8aedaf5d662403122cfe3912b69fc0a9157b
3
+ metadata.gz: c0eb6f6f8a2650c127005e16aac61a56a33bfbd7
4
+ data.tar.gz: 4e1e7b7a5ba81c247ca62e1af2886bb5ce8f9a34
5
5
  SHA512:
6
- metadata.gz: dd3c8e1ff1014e7bfafeffc098b530cfebf6c0055a79dfb8fa24412d2e26fd42da3f1685e74e9aed58bfb75e539df8b95d586666cfbb202308b757c7aecbf942
7
- data.tar.gz: cbc94fac3168b86f885fb745ccf1e0a46e76f559d1cb5b7713dd7377b8269b0fda8f5cb405ff46f2d6e505ab9e616ee390e7fd959e047c2911e1ba8c76167ed3
6
+ metadata.gz: bde67e7b2e0a80fc2cc36c3c2d413e8ef1e523fc1d7da4439805e5381e65b8b49de6e8852a160de64b958e126baf46f2fa6b3db7f5c25c7594b928369dd82434
7
+ data.tar.gz: 3c0ba22d56e406a93088d9e7a80b2b8fb39d4434ff9aba113502797ad172cd9b6d9044aba07db07c5bad1a52addb6bf1bdd43dac3e07bfb20b26c5e7a3be9488
@@ -7,4 +7,3 @@
7
7
 
8
8
 
9
9
  ## Extra Notes
10
-
@@ -1,7 +1,21 @@
1
- on: [push, pull_request]
1
+ name: ci
2
+ on:
3
+ pull_request:
4
+ branches:
5
+ - development
6
+ - master
7
+ push:
8
+ branches:
9
+ - development
10
+ - master
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
14
+ cancel-in-progress: true
2
15
 
3
16
  jobs:
4
17
  test:
18
+ name: Test
5
19
  runs-on: ubuntu-latest
6
20
  services:
7
21
  redis:
@@ -9,19 +23,22 @@ jobs:
9
23
  ports:
10
24
  - 6379:6379
11
25
  strategy:
26
+ fail-fast: false
12
27
  matrix:
13
- ruby: [ '2.5.0', '3.1.1' ]
28
+ version:
29
+ - '2.5.0'
30
+ - '3.1.1'
14
31
 
15
32
  steps:
16
33
  - name: Checkout code
17
- uses: actions/checkout@v2
34
+ uses: actions/checkout@v3
18
35
  with:
19
36
  fetch-depth: 0
20
37
 
21
- - name: Set up Ruby ${{ matrix.ruby }}
38
+ - name: Setup Ruby ${{ matrix.version }}
22
39
  uses: ruby/setup-ruby@v1
23
40
  with:
24
- ruby-version: ${{ matrix.ruby }}
41
+ ruby-version: ${{ matrix.version }}
25
42
 
26
43
  - name: Install dependencies
27
44
  run: bundle install
@@ -30,47 +47,37 @@ jobs:
30
47
  run: bundle exec rake
31
48
 
32
49
  - name: Fix code coverage paths
33
- working-directory: ./coverage
50
+ working-directory: coverage
34
51
  run: |
35
52
  sed -i 's@'$GITHUB_WORKSPACE'@/github/workspace/@g' .resultset.json
36
53
  ruby -rjson -e 'sqube = JSON.load(File.read(".resultset.json"))["RSpec"]["coverage"].transform_values {|lines| lines["lines"]}; total = { "RSpec" => { "coverage" => sqube, "timestamp" => Time.now.to_i }}; puts JSON.dump(total)' > .resultset.sonarqube.json
37
54
 
55
+ - name: Set VERSION env
56
+ run: echo "VERSION=$(cat lib/splitclient-rb/version.rb | grep VERSION | awk -F "'" '{print $2}')" >> $GITHUB_ENV
38
57
 
39
58
  - name: SonarQube Scan (Push)
40
- if: github.event_name == 'push'
41
- uses: SonarSource/sonarcloud-github-action@v1.5
59
+ if: matrix.version == '3.1.1' && github.event_name == 'push'
60
+ uses: SonarSource/sonarcloud-github-action@v1.9
42
61
  env:
43
62
  SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
63
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44
64
  with:
45
65
  projectBaseDir: .
46
66
  args: >
47
67
  -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
48
- -Dsonar.projectName=${{ github.event.repository.name }}
49
- -Dsonar.projectKey=${{ github.event.repository.name }}
50
- -Dsonar.ruby.coverage.reportPaths=coverage/.resultset.sonarqube.json
51
- -Dsonar.c.file.suffixes=-
52
- -Dsonar.cpp.file.suffixes=-
53
- -Dsonar.objc.file.suffixes=-
54
- -Dsonar.links.ci="https://github.com/splitio/${{ github.event.repository.name }}/actions"
55
- -Dsonar.links.scm="https://github.com/splitio/${{ github.event.repository.name }}"
68
+ -Dsonar.projectVersion=${{ env.VERSION }}
56
69
 
57
70
  - name: SonarQube Scan (Pull Request)
58
- if: github.event_name == 'pull_request'
59
- uses: SonarSource/sonarcloud-github-action@v1.5
71
+ if: matrix.version == '3.1.1' && github.event_name == 'pull_request'
72
+ uses: SonarSource/sonarcloud-github-action@v1.9
60
73
  env:
61
74
  SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
75
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
62
76
  with:
63
77
  projectBaseDir: .
64
78
  args: >
65
79
  -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
66
- -Dsonar.projectName=${{ github.event.repository.name }}
67
- -Dsonar.projectKey=${{ github.event.repository.name }}
68
- -Dsonar.ruby.coverage.reportPaths=coverage/.resultset.sonarqube.json
69
- -Dsonar.c.file.suffixes=-
70
- -Dsonar.cpp.file.suffixes=-
71
- -Dsonar.objc.file.suffixes=-
72
- -Dsonar.links.ci="https://github.com/splitio/${{ github.event.repository.name }}/actions"
73
- -Dsonar.links.scm="https://github.com/splitio/${{ github.event.repository.name }}"
80
+ -Dsonar.projectVersion=${{ env.VERSION }}
74
81
  -Dsonar.pullrequest.key=${{ github.event.pull_request.number }}
75
82
  -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }}
76
83
  -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}
@@ -16,10 +16,10 @@ jobs:
16
16
  uses: actions/checkout@v2
17
17
  with:
18
18
  fetch-depth: 0
19
-
19
+
20
20
  - name: Set Current year
21
21
  run: "echo CURRENT=$(date +%Y) >> $GITHUB_ENV"
22
-
22
+
23
23
  - name: Set Previous Year
24
24
  run: "echo PREVIOUS=$(($CURRENT-1)) >> $GITHUB_ENV"
25
25
 
data/.gitignore CHANGED
@@ -53,4 +53,6 @@ dump.rdb
53
53
  # Ignore Appraisal gemfile.lock files
54
54
  /gemfiles/*.gemfile.lock
55
55
 
56
- release.sh
56
+ release.sh
57
+
58
+ .scannerwork
data/CHANGES.txt CHANGED
@@ -1,5 +1,13 @@
1
1
  CHANGES
2
2
 
3
+ 8.1.2 (May 15, 2023)
4
+ - Updated terminology on the SDKs codebase to be more aligned with current standard without causing a breaking change. The core change is the term split for feature flag on things like logs and IntelliSense comments.
5
+
6
+ 8.1.1 (Mar 17, 2023)
7
+ - Added retries with backoff when the sdk tries to connect to the Streaming service and it is not available.
8
+ - Updated the way that the sdk write mtks in redis.
9
+ - Fixed calculation of timeUntilReady in telemetry.
10
+
3
11
  8.1.0 (Oct 5, 2022)
4
12
  - Added a new impressions mode for the SDK called NONE , to be used in factory when there is no desire to capture impressions on an SDK factory to feed Split's analytics engine. Running NONE mode, the SDK will only capture unique keys evaluated for a particular feature flag instead of full blown impressions.
5
13
 
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Split SDK for Ruby
2
- ![Build Status](https://github.com/splitio/ruby-client/actions/workflows/ci.yml/badge.svg?branch=master)
2
+ [![build status](https://github.com/splitio/ruby-client/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/splitio/ruby-client/actions)
3
+ [![Documentation](https://img.shields.io/badge/ruby_client-documentation-informational)](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK)
3
4
 
4
5
  ## Overview
5
- This SDK is designed to work with Split, the platform for controlled rollouts, which serves features to your users via a Split feature flag to manage your complete customer experience.
6
-
6
+ This SDK is designed to work with Split, the platform for controlled rollouts, which serves features to your users via feature flags to manage your complete customer experience.
7
+
7
8
  [![Twitter Follow](https://img.shields.io/twitter/follow/splitsoftware.svg?style=social&label=Follow&maxAge=1529000)](https://twitter.com/intent/follow?screen_name=splitsoftware)
8
9
 
9
10
  ## Compatibility
@@ -21,16 +22,16 @@ Below is a simple example that describes the instantiation and most basic usage
21
22
  ```ruby
22
23
  require 'splitclient-rb'
23
24
 
24
- split_factory = SplitIoClient::SplitFactory.new('SDK_API_KEY')
25
+ split_factory = SplitIoClient::SplitFactory.new('YOUR_SDK_KEY')
25
26
  split_client = split_factory.client
26
27
 
27
- begin
28
- split_client.block_until_ready
28
+ begin
29
+ split_client.block_until_ready
29
30
  rescue SplitIoClient::SDKBlockerTimeoutExpiredException
30
- puts 'SDK is not ready. Decide whether to continue or abort execution'
31
- end
31
+ puts 'SDK is not ready. Decide whether to continue or abort execution'
32
+ end
32
33
 
33
- treatment = split_client.get_treatment('CUSTOMER_ID', 'SPLIT_NAME');
34
+ treatment = split_client.get_treatment('CUSTOMER_ID', 'FEATURE_FLAG_NAME');
34
35
 
35
36
  if treatment == 'on'
36
37
  # insert code here to show on treatment
@@ -41,7 +42,7 @@ else
41
42
  end
42
43
  ```
43
44
  For multi-process environments you also need to setup Split Synchronizer. See [Sharing state: Redis integration](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK#sharing-state-redis-integration)
44
-
45
+
45
46
  Please refer to [our official docs](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK) to learn about all the functionality provided by our SDK and the configuration options available for tailoring it to your current application setup.
46
47
 
47
48
  ## Submitting issues
@@ -49,30 +50,35 @@ The Split team monitors all issues submitted to this [issue tracker](https://git
49
50
 
50
51
  ## Contributing
51
52
  Please see [Contributors Guide](CONTRIBUTORS-GUIDE.md) to find all you need to submit a Pull Request (PR).
52
-
53
+
53
54
  ## License
54
55
  Licensed under the Apache License, Version 2.0. See: [Apache License](http://www.apache.org/licenses/).
55
56
 
56
- ## About Split
57
+ ## About Split
57
58
  Split is the leading Feature Delivery Platform for engineering teams that want to confidently deploy features as fast as they can develop them. Split’s fine-grained management, real-time monitoring, and data-driven experimentation ensure that new features will improve the customer experience without breaking or degrading performance. Companies like Twilio, Salesforce, GoDaddy and WePay trust Split to power their feature delivery.
58
-
59
+
59
60
  To learn more about Split, contact hello@split.io, or get started with feature flags for free at https://www.split.io/signup.
60
-
61
+
61
62
  Split has built and maintains SDKs for:
62
-
63
+
64
+ * .NET [Github](https://github.com/splitio/dotnet-client) [Docs](https://help.split.io/hc/en-us/articles/360020240172--NET-SDK)
65
+ * Android [Github](https://github.com/splitio/android-client) [Docs](https://help.split.io/hc/en-us/articles/360020343291-Android-SDK)
66
+ * Angular [Github](https://github.com/splitio/angular-sdk-plugin) [Docs](https://help.split.io/hc/en-us/articles/6495326064397-Angular-utilities)
67
+ * GO [Github](https://github.com/splitio/go-client) [Docs](https://help.split.io/hc/en-us/articles/360020093652-Go-SDK)
68
+ * iOS [Github](https://github.com/splitio/ios-client) [Docs](https://help.split.io/hc/en-us/articles/360020401491-iOS-SDK)
63
69
  * Java [Github](https://github.com/splitio/java-client) [Docs](https://help.split.io/hc/en-us/articles/360020405151-Java-SDK)
64
- * Javascript [Github](https://github.com/splitio/javascript-client) [Docs](https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK)
70
+ * JavaScript [Github](https://github.com/splitio/javascript-client) [Docs](https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK)
71
+ * JavaScript for Browser [Github](https://github.com/splitio/javascript-browser-client) [Docs](https://help.split.io/hc/en-us/articles/360058730852-Browser-SDK)
65
72
  * Node [Github](https://github.com/splitio/javascript-client) [Docs](https://help.split.io/hc/en-us/articles/360020564931-Node-js-SDK)
66
- * .NET [Github](https://github.com/splitio/dotnet-client) [Docs](https://help.split.io/hc/en-us/articles/360020240172--NET-SDK)
67
- * Ruby [Github](https://github.com/splitio/ruby-client) [Docs](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK)
68
73
  * PHP [Github](https://github.com/splitio/php-client) [Docs](https://help.split.io/hc/en-us/articles/360020350372-PHP-SDK)
69
74
  * Python [Github](https://github.com/splitio/python-client) [Docs](https://help.split.io/hc/en-us/articles/360020359652-Python-SDK)
70
- * GO [Github](https://github.com/splitio/go-client) [Docs](https://help.split.io/hc/en-us/articles/360020093652-Go-SDK)
71
- * Android [Github](https://github.com/splitio/android-client) [Docs](https://help.split.io/hc/en-us/articles/360020343291-Android-SDK)
72
- * iOS [Github](https://github.com/splitio/ios-client) [Docs](https://help.split.io/hc/en-us/articles/360020401491-iOS-SDK)
73
-
75
+ * React [Github](https://github.com/splitio/react-client) [Docs](https://help.split.io/hc/en-us/articles/360038825091-React-SDK)
76
+ * React Native [Github](https://github.com/splitio/react-native-client) [Docs](https://help.split.io/hc/en-us/articles/4406066357901-React-Native-SDK)
77
+ * Redux [Github](https://github.com/splitio/redux-client) [Docs](https://help.split.io/hc/en-us/articles/360038851551-Redux-SDK)
78
+ * Ruby [Github](https://github.com/splitio/ruby-client) [Docs](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK)
79
+
74
80
  For a comprehensive list of open source projects visit our [Github page](https://github.com/splitio?utf8=%E2%9C%93&query=%20only%3Apublic%20).
75
-
81
+
76
82
  **Learn more about Split:**
77
-
83
+
78
84
  Visit [split.io/product](https://www.split.io/product) for an overview of Split, or visit our documentation at [help.split.io](http://help.split.io) for more detailed information.
@@ -49,12 +49,12 @@ module SplitIoClient
49
49
 
50
50
  def splits_thread
51
51
  @config.threads[:split_fetcher] = Thread.new do
52
- @config.logger.info('Starting splits fetcher service') if @config.debug_enabled
52
+ @config.logger.info('Starting feature flags fetcher service') if @config.debug_enabled
53
53
  loop do
54
54
  fetch_splits
55
55
 
56
56
  sleep_for = SplitIoClient::Cache::Stores::StoreUtils.random_interval(@config.features_refresh_rate)
57
- @config.logger.debug("Splits fetcher is sleeping for: #{sleep_for} seconds") if @config.debug_enabled
57
+ @config.logger.debug("Feature flags fetcher is sleeping for: #{sleep_for} seconds") if @config.debug_enabled
58
58
  sleep(sleep_for)
59
59
  end
60
60
  end
@@ -66,7 +66,7 @@ module SplitIoClient
66
66
 
67
67
  def add_split_unless_archived(split)
68
68
  if Engine::Models::Split.archived?(split)
69
- @config.logger.debug("Seeing archived split #{split[:name]}") if @config.debug_enabled
69
+ @config.logger.debug("Seeing archived feature flag #{split[:name]}") if @config.debug_enabled
70
70
 
71
71
  remove_archived_split(split)
72
72
  else
@@ -75,13 +75,13 @@ module SplitIoClient
75
75
  end
76
76
 
77
77
  def remove_archived_split(split)
78
- @config.logger.debug("removing split from store(#{split})") if @config.debug_enabled
78
+ @config.logger.debug("removing feature flag from store(#{split})") if @config.debug_enabled
79
79
 
80
80
  @splits_repository.remove_split(split)
81
81
  end
82
82
 
83
83
  def store_split(split)
84
- @config.logger.debug("storing split (#{split[:name]})") if @config.debug_enabled
84
+ @config.logger.debug("storing feature flag (#{split[:name]})") if @config.debug_enabled
85
85
 
86
86
  @splits_repository.add_split(split)
87
87
  end
@@ -12,15 +12,11 @@ module SplitIoClient
12
12
  end
13
13
 
14
14
  def record_uniques_key(uniques)
15
- return if uniques.nil? || uniques == {}
15
+ return if uniques.nil? || uniques.empty?
16
16
 
17
- size = @adapter.redis.pipelined do |pipeline|
18
- uniques.each do |key, value|
19
- pipeline.rpush(unique_keys_key, { f: key, ks: value.to_a }.to_json)
20
- end
21
- end
17
+ size = @adapter.add_to_queue(unique_keys_key, uniques_formatter(uniques))
22
18
 
23
- @adapter.expire(unique_keys_key, EXPIRE_SECONDS) if uniques.length == size.last
19
+ @adapter.expire(unique_keys_key, EXPIRE_SECONDS) if uniques.length == size
24
20
  rescue StandardError => e
25
21
  @config.log_found_exception(__method__.to_s, e)
26
22
  end
@@ -48,6 +44,18 @@ module SplitIoClient
48
44
  @adapter.expire(impressions_count_key, EXPIRE_SECONDS) if impressions_count.size == hlen && (pipeline_result.sum - hlen) == total_count
49
45
  end
50
46
 
47
+ def uniques_formatter(uniques)
48
+ to_return = []
49
+ uniques.each do |key, value|
50
+ to_return << {
51
+ f: key,
52
+ ks: value.to_a
53
+ }.to_json
54
+ end
55
+
56
+ to_return
57
+ end
58
+
51
59
  def impressions_count_key
52
60
  "#{@config.redis_namespace}.impressions.count"
53
61
  end
@@ -31,7 +31,7 @@ module SplitIoClient
31
31
 
32
32
  def splits_thread
33
33
  @config.threads[:split_store] = Thread.new do
34
- @config.logger.info('Starting splits fetcher service')
34
+ @config.logger.info('Starting feature flags fetcher service')
35
35
  loop do
36
36
  store_splits
37
37
 
@@ -53,7 +53,7 @@ module SplitIoClient
53
53
  end
54
54
 
55
55
  def store_split(split)
56
- @config.logger.debug("storing split (#{split[:name]})") if @config.debug_enabled
56
+ @config.logger.debug("storing feature flag (#{split[:name]})") if @config.debug_enabled
57
57
 
58
58
  @splits_repository.add_split(split)
59
59
  end
@@ -11,11 +11,11 @@ module SplitIoClient
11
11
  #
12
12
  # Creates a new split client instance that connects to split.io API.
13
13
  #
14
- # @param api_key [String] the API key for your split account
14
+ # @param sdk_key [String] the SDK key for your split account
15
15
  #
16
16
  # @return [SplitIoClient] split.io client instance
17
- def initialize(api_key, repositories, status_manager, config, impressions_manager, telemetry_evaluation_producer)
18
- @api_key = api_key
17
+ def initialize(sdk_key, repositories, status_manager, config, impressions_manager, telemetry_evaluation_producer)
18
+ @api_key = sdk_key
19
19
  @splits_repository = repositories[:splits]
20
20
  @segments_repository = repositories[:segments]
21
21
  @impressions_repository = repositories[:impressions]
@@ -103,8 +103,8 @@ module SplitIoClient
103
103
 
104
104
  if ready? && !@config.localhost_mode && !@splits_repository.traffic_type_exists(traffic_type_name)
105
105
  @config.logger.warn("track: Traffic Type #{traffic_type_name} " \
106
- "does not have any corresponding Splits in this environment, make sure you're tracking " \
107
- 'your events to a valid traffic type defined in the Split console')
106
+ "does not have any corresponding feature flags in this environment, make sure you're tracking " \
107
+ 'your events to a valid traffic type defined in the Split user interface')
108
108
  end
109
109
 
110
110
  @events_repository.add(key.to_s, traffic_type_name.downcase, event_type.to_s, (Time.now.to_f * 1000).to_i, value, properties, properties_size)
@@ -147,10 +147,10 @@ module SplitIoClient
147
147
  if (split_name.is_a?(String) || split_name.is_a?(Symbol)) && !split_name.empty?
148
148
  true
149
149
  elsif split_name.is_a?(String) && split_name.empty?
150
- @config.logger.warn("#{calling_method}: you passed an empty split_name, split_name must be a non-empty String or a Symbol")
150
+ @config.logger.warn("#{calling_method}: you passed an empty feature_flag_name, flag name must be a non-empty String or a Symbol")
151
151
  false
152
152
  else
153
- @config.logger.warn("#{calling_method}: you passed an invalid split_name, split_name must be a non-empty String or a Symbol")
153
+ @config.logger.warn("#{calling_method}: you passed an invalid feature_flag_name, flag name must be a non-empty String or a Symbol")
154
154
  false
155
155
  end
156
156
  end
@@ -200,7 +200,7 @@ module SplitIoClient
200
200
  sanitized_split_names = sanitize_split_names(calling_method, split_names)
201
201
 
202
202
  if sanitized_split_names.empty?
203
- @config.logger.error("#{calling_method}: split_names must be a non-empty Array")
203
+ @config.logger.error("#{calling_method}: feature_flag_names must be a non-empty Array")
204
204
  return {}
205
205
  end
206
206
 
@@ -258,7 +258,7 @@ module SplitIoClient
258
258
  sanitized_split_name = split_name.to_s.strip
259
259
 
260
260
  if split_name.to_s != sanitized_split_name
261
- @config.logger.warn("#{calling_method}: split_name #{split_name} has extra whitespace, trimming")
261
+ @config.logger.warn("#{calling_method}: feature_flag_name #{split_name} has extra whitespace, trimming")
262
262
  split_name = sanitized_split_name
263
263
  end
264
264
 
@@ -271,7 +271,7 @@ module SplitIoClient
271
271
 
272
272
  if split.nil? && ready?
273
273
  @config.logger.warn("#{calling_method}: you passed #{split_name} that " \
274
- 'does not exist in this environment, please double check what Splits exist in the web console')
274
+ 'does not exist in this environment, please double check what feature flags exist in the Split user interface')
275
275
 
276
276
  return parsed_treatment(multiple, control_treatment.merge({ label: Engine::Models::Label::NOT_FOUND }))
277
277
  end
@@ -20,9 +20,9 @@ module SplitIoClient
20
20
  result = splits_with_segment_names(response.body)
21
21
 
22
22
  unless result[:splits].empty?
23
- @config.split_logger.log_if_debug("#{result[:splits].length} splits retrieved. since=#{since}")
23
+ @config.split_logger.log_if_debug("#{result[:splits].length} feature flags retrieved. since=#{since}")
24
24
  end
25
- @config.split_logger.log_if_transport("Split changes response: #{result.to_s}")
25
+ @config.split_logger.log_if_transport("Feature flag changes response: #{result.to_s}")
26
26
 
27
27
  bucket = BinarySearchLatencyTracker.get_bucket((Time.now - start) * 1000.0)
28
28
  @telemetry_runtime_producer.record_sync_latency(Telemetry::Domain::Constants::SPLIT_SYNC, bucket)
@@ -32,10 +32,10 @@ module SplitIoClient
32
32
  else
33
33
  @telemetry_runtime_producer.record_sync_error(Telemetry::Domain::Constants::SPLIT_SYNC, response.status)
34
34
 
35
- @config.logger.error("Unexpected status code while fetching splits: #{response.status}. " \
35
+ @config.logger.error("Unexpected status code while fetching feature flags: #{response.status}. " \
36
36
  'Check your API key and base URI')
37
37
 
38
- raise 'Split SDK failed to connect to backend to fetch split definitions'
38
+ raise 'Split SDK failed to connect to backend to fetch feature flags definitions'
39
39
  end
40
40
  end
41
41
 
@@ -4,18 +4,18 @@ module SplitIoClient
4
4
  class DependencyMatcher
5
5
  MATCHER_TYPE = 'IN_SPLIT_TREATMENT'
6
6
 
7
- def initialize(split, treatments, logger)
8
- @split = split
7
+ def initialize(feature_flag, treatments, logger)
8
+ @feature_flag = feature_flag
9
9
  @treatments = treatments
10
10
  @logger = logger
11
11
  end
12
12
 
13
13
  def match?(args)
14
14
  keys = { matching_key: args[:matching_key], bucketing_key: args[:bucketing_key] }
15
- evaluate = args[:evaluator].call(keys, @split, args[:attributes])
15
+ evaluate = args[:evaluator].call(keys, @feature_flag, args[:attributes])
16
16
  matches = @treatments.include?(evaluate[:treatment])
17
- @logger.log_if_debug("[dependencyMatcher] Parent split #{@split} evaluated to #{evaluate[:treatment]} \
18
- with label #{evaluate[:label]}. #{@split} evaluated treatment is part of [#{@treatments}] ? #{matches}.")
17
+ @logger.log_if_debug("[dependencyMatcher] Parent feature flag #{@feature_flag} evaluated to #{evaluate[:treatment]} \
18
+ with label #{evaluate[:label]}. #{@feature_flag} evaluated treatment is part of [#{@treatments}] ? #{matches}.")
19
19
  matches
20
20
  end
21
21
 
@@ -201,7 +201,7 @@ module SplitIoClient
201
201
  end
202
202
 
203
203
  def sync_splits_and_segments
204
- @config.logger.debug('Synchronizing Splits and Segments ...') if @config.debug_enabled
204
+ @config.logger.debug('Synchronizing feature flags and segments ...') if @config.debug_enabled
205
205
  splits_result = @split_fetcher.fetch_splits
206
206
 
207
207
  splits_result[:success] && @segment_fetcher.fetch_segments
@@ -50,31 +50,31 @@ module SplitIoClient
50
50
  # method to get a split view
51
51
  #
52
52
  # @returns a split view
53
- def split(split_name)
54
- return unless @config.valid_mode && @splits_repository && @config.split_validator.valid_split_parameters(split_name)
53
+ def split(feature_flag_name)
54
+ return unless @config.valid_mode && @splits_repository && @config.split_validator.valid_split_parameters(feature_flag_name)
55
55
 
56
56
  if !ready?
57
57
  @config.logger.error("split: the SDK is not ready, the operation cannot be executed")
58
58
  return
59
59
  end
60
60
 
61
- sanitized_split_name= split_name.to_s.strip
61
+ sanitized_feature_flag_name = feature_flag_name.to_s.strip
62
62
 
63
- if split_name.to_s != sanitized_split_name
64
- @config.logger.warn("split: split_name #{split_name} has extra whitespace, trimming")
65
- split_name = sanitized_split_name
63
+ if feature_flag_name.to_s != sanitized_feature_flag_name
64
+ @config.logger.warn("split: feature_flag_name #{feature_flag_name} has extra whitespace, trimming")
65
+ feature_flag_name = sanitized_feature_flag_name
66
66
  end
67
67
 
68
- split = @splits_repository.get_split(split_name)
68
+ split = @splits_repository.get_split(feature_flag_name)
69
69
 
70
70
  if ready? && split.nil?
71
- @config.logger.warn("split: you passed #{split_name} " \
72
- 'that does not exist in this environment, please double check what Splits exist in the web console')
71
+ @config.logger.warn("split: you passed #{feature_flag_name} " \
72
+ 'that does not exist in this environment, please double check what feature flags exist in the Split user interface')
73
73
  end
74
74
 
75
75
  return if split.nil? || Engine::Models::Split.archived?(split)
76
76
 
77
- build_split_view(split_name, split)
77
+ build_split_view(feature_flag_name, split)
78
78
  end
79
79
 
80
80
  def block_until_ready(time = nil)
@@ -14,7 +14,7 @@ module SplitIoClient
14
14
 
15
15
  def start
16
16
  if @running.value
17
- @config.logger.debug('splits worker already running.')
17
+ @config.logger.debug('feature_flags_worker already running.')
18
18
  return
19
19
  end
20
20
 
@@ -24,7 +24,7 @@ module SplitIoClient
24
24
 
25
25
  def stop
26
26
  unless @running.value
27
- @config.logger.debug('splits worker not running.')
27
+ @config.logger.debug('feature_flags_worker not running.')
28
28
  return
29
29
  end
30
30
 
@@ -33,14 +33,14 @@ module SplitIoClient
33
33
  end
34
34
 
35
35
  def add_to_queue(change_number)
36
- @config.logger.debug("SplitsWorker add to queue #{change_number}")
36
+ @config.logger.debug("feature_flags_worker add to queue #{change_number}")
37
37
  @queue.push(change_number)
38
38
  end
39
39
 
40
40
  def kill_split(change_number, split_name, default_treatment)
41
41
  return if @splits_repository.get_change_number.to_i > change_number
42
42
 
43
- @config.logger.debug("SplitsWorker kill #{split_name}, #{change_number}")
43
+ @config.logger.debug("feature_flags_worker kill #{split_name}, #{change_number}")
44
44
  @splits_repository.kill(change_number, split_name, default_treatment)
45
45
  add_to_queue(change_number)
46
46
  end
@@ -49,14 +49,14 @@ module SplitIoClient
49
49
 
50
50
  def perform
51
51
  while (change_number = @queue.pop)
52
- @config.logger.debug("SplitsWorker change_number dequeue #{change_number}")
52
+ @config.logger.debug("feature_flags_worker change_number dequeue #{change_number}")
53
53
  @synchronizer.fetch_splits(change_number)
54
54
  end
55
55
  end
56
56
 
57
57
  def perform_thread
58
58
  @config.threads[:split_update_worker] = Thread.new do
59
- @config.logger.debug('Starting splits worker ...') if @config.debug_enabled
59
+ @config.logger.debug('starting feature_flags_worker ...') if @config.debug_enabled
60
60
  perform
61
61
  end
62
62
  end
@@ -156,7 +156,7 @@ module SplitIoClient
156
156
 
157
157
  def valid_split_names?(method, split_names)
158
158
  unless !split_names.nil? && split_names.is_a?(Array)
159
- @config.logger.error("#{method}: split_names must be a non-empty Array")
159
+ @config.logger.error("#{method}: feature_flag_names must be a non-empty Array")
160
160
  return false
161
161
  end
162
162
 
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '8.1.1.pre.rc2'
2
+ VERSION = '8.1.2'
3
3
  end
@@ -0,0 +1,5 @@
1
+ sonar.projectKey=ruby-client
2
+ sonar.projectKey=ruby-client
3
+ sonar.sources=lib
4
+ sonar.tests=spec
5
+ sonar.ruby.coverage.reportPaths=coverage/.resultset.sonarqube.json
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.1.1.pre.rc2
4
+ version: 8.1.2
5
5
  platform: java
6
6
  authors:
7
7
  - Split Software
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-16 00:00:00.000000000 Z
11
+ date: 2023-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -538,6 +538,7 @@ files:
538
538
  - lib/splitclient-rb/utilitites.rb
539
539
  - lib/splitclient-rb/validators.rb
540
540
  - lib/splitclient-rb/version.rb
541
+ - sonar-project.properties
541
542
  - splitclient-rb.gemspec
542
543
  - tasks/benchmark_get_treatment.rake
543
544
  - tasks/irb.rake
@@ -556,9 +557,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
556
557
  version: 2.5.0
557
558
  required_rubygems_version: !ruby/object:Gem::Requirement
558
559
  requirements:
559
- - - ">"
560
+ - - ">="
560
561
  - !ruby/object:Gem::Version
561
- version: 1.3.1
562
+ version: '0'
562
563
  requirements: []
563
564
  rubyforge_project:
564
565
  rubygems_version: 2.6.14