Skip to content

Commit c6c50d3

Browse files
[FSSDK-8956] docs: change full stack to feature experimentation (#327)
* change full stack to feature experimentation
1 parent 67a3bab commit c6c50d3

File tree

2 files changed

+62
-25
lines changed

2 files changed

+62
-25
lines changed

README.md

Lines changed: 61 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
# Optimizely Ruby SDK
2+
23
[![Build Status](https://github.com/optimizely/ruby-sdk/actions/workflows/ruby.yml/badge.svg?branch=master)](https://github.com/optimizely/ruby-sdk/actions/workflows/ruby.yml?query=branch%3Amaster)
34
[![Coverage Status](https://coveralls.io/repos/github/optimizely/ruby-sdk/badge.svg)](https://coveralls.io/github/optimizely/ruby-sdk)
45
[![Apache 2.0](https://img.shields.io/github/license/nebula-plugins/gradle-extra-configurations-plugin.svg)](http://www.apache.org/licenses/LICENSE-2.0)
56

6-
This repository houses the Ruby SDK for use with Optimizely Full Stack and Optimizely Rollouts.
77

8-
Optimizely Full Stack is A/B testing and feature flag management for product development teams. Experiment in any application. Make every feature on your roadmap an opportunity to learn. Learn more at https://www.optimizely.com/platform/full-stack/, or see the [documentation](https://docs.developers.optimizely.com/full-stack/docs).
8+
This repository houses the Ruby SDK for use with Optimizely Feature Experimentation and Optimizely Full Stack (legacy).
9+
10+
Optimizely Feature Experimentation is an A/B testing and feature management tool for product development teams that enables you to experiment at every step. Using Optimizely Feature Experimentation allows for every feature on your roadmap to be an opportunity to discover hidden insights. Learn more at [Optimizely.com](https://www.optimizely.com/products/experiment/feature-experimentation/), or see the [developer documentation](https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/welcome).
911

10-
Optimizely Rollouts is free feature flags for development teams. Easily roll out and roll back features in any application without code deploys. Mitigate risk for every feature on your roadmap. Learn more at https://www.optimizely.com/rollouts/, or see the [documentation](https://docs.developers.optimizely.com/rollouts/docs).
12+
Optimizely Rollouts is [free feature flags](https://www.optimizely.com/free-feature-flagging/) for development teams. You can easily roll out and roll back features in any application without code deploys, mitigating risk for every feature on your roadmap.
1113

12-
## Getting Started
14+
## Get Started
15+
16+
Refer to the [Ruby SDK's developer documentation](https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/ruby-sdk) for detailed instructions on getting started with using the SDK.
1317

1418
### Requirements
19+
1520
* Ruby 2.7+
1621

17-
### Installing the SDK
22+
### Install the SDK
1823

1924
The SDK is available through [RubyGems](https://rubygems.org/gems/optimizely-sdk). To install:
2025

@@ -23,40 +28,42 @@ gem install optimizely-sdk
2328
```
2429

2530
### Feature Management Access
26-
To access the Feature Management configuration in the Optimizely dashboard, please contact your Optimizely account executive.
31+
To access the Feature Management configuration in the Optimizely dashboard, please contact your Optimizely customer success manager.
2732

28-
### Using the SDK
33+
## Use the Ruby SDK
34+
35+
### Initialization
2936

3037
You can initialize the Optimizely instance in two ways: directly with a datafile, or by using a factory class, `OptimizelyFactory`, which provides methods to create an Optimizely instance with the default configuration.
3138

3239
#### Initialization with datafile
3340

3441
Initialize Optimizely with a datafile. This datafile will be used as ProjectConfig throughout the life of the Optimizely instance.
3542

36-
```
43+
```ruby
3744
optimizely_instance = Optimizely::Project.new(datafile)
3845
```
3946

4047
#### Initialization by OptimizelyFactory
4148

4249
1. Initialize Optimizely by providing an `sdk_key` and an optional `datafile`. This will initialize an HTTPConfigManager that makes an HTTP GET request to the URL (formed using your provided `sdk_key` and the default datafile CDN url template) to asynchronously download the project datafile at regular intervals and update ProjectConfig when a new datafile is received.
4350

44-
```
51+
```ruby
4552
optimizely_instance = Optimizely::OptimizelyFactory.default_instance('put_your_sdk_key_here', datafile)
4653
```
4754

4855
When the `datafile` is given then it will be used initially before any update.
4956

5057
2. Initialize Optimizely by providing a Config Manager that implements a `config` method. You can customize our `HTTPConfigManager` as needed.
5158

52-
```
59+
```ruby
5360
custom_config_manager = CustomConfigManager.new
5461
optimizely_instance = Optimizely::OptimizelyFactory.default_instance_with_config_manager(custom_config_manager)
5562
```
5663

5764
3. Initialize Optimizely with required `sdk_key` and other optional arguments.
5865

59-
```
66+
```ruby
6067
optimizely_instance = Optimizely::OptimizelyFactory.custom_instance(
6168
sdk_key,
6269
datafile,
@@ -71,13 +78,12 @@ You can initialize the Optimizely instance in two ways: directly with a datafile
7178
)
7279
```
7380

74-
7581
#### HTTP Config Manager
7682

7783
The `HTTPConfigManager` asynchronously polls for datafiles from a specified URL at regular intervals by making HTTP requests.
7884

7985

80-
~~~~~~
86+
```ruby
8187
http_project_config_manager = Optimizely::HTTPProjectConfigManager.new(
8288
sdk_key: nil,
8389
url: nil,
@@ -94,7 +100,7 @@ The `HTTPConfigManager` asynchronously polls for datafiles from a specified URL
94100
datafile_access_token: nil,
95101
proxy_config: nil
96102
)
97-
~~~~~~
103+
```
98104
**Note:** You must provide either the `sdk_key` or URL. If you provide both, the URL takes precedence.
99105

100106
**sdk_key**
@@ -110,7 +116,7 @@ The polling interval is used to specify a fixed delay between consecutive HTTP r
110116
A string with placeholder `{sdk_key}` can be provided so that this template along with the provided `sdk_key` is used to form the target URL.
111117

112118
**start_by_default**
113-
Boolean flag used to start the `AsyncScheduler` for datafile polling if set to `True`.
119+
Boolean flag used to start the `AsyncScheduler` for datafile polling if set to `true`.
114120

115121
**blocking_timeout**
116122
The blocking timeout period is used to specify a maximum time to wait for initial bootstrapping. Valid blocking timeout period is between 1 and 2592000 seconds. Default is 15 seconds.
@@ -135,7 +141,10 @@ The following properties can be set to override the default configurations for `
135141
| start_by_default | true | Boolean flag to specify if datafile polling should start right away as soon as `HTTPConfigManager` initializes
136142
| blocking_timeout | 15 seconds | Maximum time in seconds to block the `config` call until config has been initialized
137143

138-
A notification signal will be triggered whenever a _new_ datafile is fetched and Project Config is updated. To subscribe to these notifications, use the `notification_center.add_notification_listener(Optimizely::NotificationCenter::NOTIFICATION_TYPES[:OPTIMIZELY_CONFIG_UPDATE], @callback)`
144+
A notification signal will be triggered whenever a _new_ datafile is fetched and Project Config is updated. To subscribe to these notifications, use the
145+
```ruby
146+
notification_center.add_notification_listener(Optimizely::NotificationCenter::NOTIFICATION_TYPES[:OPTIMIZELY_CONFIG_UPDATE], @callback)
147+
```
139148

140149

141150
#### BatchEventProcessor
@@ -146,8 +155,8 @@ A notification signal will be triggered whenever a _new_ datafile is fetched and
146155

147156
* The `BatchEventProcessor` maintains a single consumer thread that pulls events off of the `Queue` and buffers them for either a configured batch size or for a maximum duration before the resulting `LogEvent` is sent to the `NotificationCenter`.
148157

149-
##### Use BatchEventProcessor
150-
~~~~~~
158+
#### Use BatchEventProcessor
159+
```ruby
151160
event_processor = Optimizely::BatchEventProcessor.new(
152161
event_queue: SizedQueue.new(10),
153162
event_dispatcher: event_dispatcher,
@@ -156,7 +165,7 @@ event_processor = Optimizely::BatchEventProcessor.new(
156165
logger: logger,
157166
notification_center: notification_center
158167
)
159-
~~~~~~
168+
```
160169

161170
#### Advanced configuration
162171
The following properties can be used to customize the `BatchEventProcessor` configuration.
@@ -179,9 +188,10 @@ If you enable event batching, make sure that you call the `close` method, `optim
179188
| -- | --
180189
| `close()` | Stops all timers and flushes the event queue. This method will also stop any timers that are happening for the datafile manager.
181190

182-
See the Optimizely Full Stack [developer documentation](http://developers.optimizely.com/server/reference/index.html) to learn how to set up your first Full Stack project and use the SDK.
191+
For Further details see the Optimizely [Feature Experimentation documentation](https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/welcome)
192+
to learn how to set up your first Ruby project and use the SDK.
183193

184-
## Development
194+
## SDK Development
185195

186196
### Building the SDK
187197

@@ -191,9 +201,9 @@ To build a local copy of the gem which will be output to `/pkg`:
191201
rake build
192202
```
193203
194-
### Unit tests
204+
### Unit Tests
195205
196-
##### Running all tests
206+
#### Running all tests
197207
You can run all unit tests with:
198208
199209
```
@@ -205,6 +215,7 @@ rake spec
205215
Please see [CONTRIBUTING](CONTRIBUTING.md).
206216
207217
### Credits
218+
208219
This software incorporates code from the following open source projects:
209220
210221
**Httparty** [https://github.com/jnunemaker/httparty](https://github.com/jnunemaker/httparty)
@@ -219,8 +230,8 @@ License (MIT): [https://github.com/ruby-json-schema/json-schema/blob/master/LICE
219230
Copyright © 2012 Sokolov Yura 'funny-falcon'
220231
License (MIT): [https://github.com/funny-falcon/murmurhash3-ruby/blob/master/LICENSE](https://github.com/funny-falcon/murmurhash3-ruby/blob/master/LICENSE)
221232
222-
223233
### Additional Code
234+
224235
This software may be used with additional code that is separately downloaded by you. _These components are subject to
225236
their own license terms, which you should review carefully_.
226237
@@ -249,3 +260,29 @@ License (MIT): [https://github.com/rubocop-hq/rubocop/blob/master/LICENSE.txt](h
249260
**WebMock** [https://github.com/bblimke/webmock](https://github.com/bblimke/webmock)
250261
Copyright © 2009-2010 Bartosz Blimke
251262
License (MIT): [https://github.com/bblimke/webmock/blob/master/LICENSE](https://github.com/bblimke/webmock/blob/master/LICENSE)
263+
264+
### Other Optimizely SDKs
265+
266+
- Agent - https://github.com/optimizely/agent
267+
268+
- Android - https://github.com/optimizely/android-sdk
269+
270+
- C# - https://github.com/optimizely/csharp-sdk
271+
272+
- Flutter - https://github.com/optimizely/optimizely-flutter-sdk
273+
274+
- Go - https://github.com/optimizely/go-sdk
275+
276+
- Java - https://github.com/optimizely/java-sdk
277+
278+
- JavaScript - https://github.com/optimizely/javascript-sdk
279+
280+
- PHP - https://github.com/optimizely/php-sdk
281+
282+
- Python - https://github.com/optimizely/python-sdk
283+
284+
- React - https://github.com/optimizely/react-sdk
285+
286+
- Ruby - https://github.com/optimizely/ruby-sdk
287+
288+
- Swift - https://github.com/optimizely/swift-sdk

optimizely-sdk.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
1010
spec.required_ruby_version = '>= 2.7'
1111

1212
spec.summary = "Ruby SDK for Optimizely's testing framework"
13-
spec.description = "A Ruby SDK for Optimizely's Full Stack product."
13+
spec.description = 'A Ruby SDK for use with Optimizely Feature Experimentation, Optimizely Full Stack (legacy), and Optimizely Rollouts'
1414
spec.homepage = 'https://www.optimizely.com/'
1515
spec.license = 'Apache-2.0'
1616

0 commit comments

Comments
 (0)