Scientist

CocoaPods Carthage Build Status codecov Documentation

A Swift library for carefully refactoring critical paths.

Installation

Cocoapods

pod 'Scientist', '~> 0.4.0'

Carthage

github "junkpiano/scientist" ~> 0.4.0

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/junkpiano/scientist.git", from: "0.4.0")
]

Usage

    func allow(user: User) -> Bool {
      do {
        return try Scienctist<Bool>().science({
          experiment in
          // required to enable Experiment
          experiment.enabled = { return true }

          // alternatively, you can use A/B test-like logic.
          experiment.enabled = {
            return Int(arc4random_uniform(6) + 1) % 3 == 0
          }

          experiment.publish = { result in
            // do something to publish Result data.
            // send to your log server(Graphite, InfluxDB, etc.), or 3rd party logger like NewRelic, Firebase.
          }

          experiment.use {
            return module.check_user(user)
          }

          experiment.tryNew {
            return user.allowed
          }
        })
      } catch {
        return false
      }
    }

Full Documentation is available Here.

Development

Simply,

open Scientist.xcodeproj

please run test before you send pull request

swift test

Porting from

Author