github / scientist

:microscope: A Ruby library for carefully refactoring critical paths.
MIT License
7.47k stars 442 forks source link

Per-experiment sampling? #70

Open jamesbrauman opened 7 years ago

jamesbrauman commented 7 years ago

When using the science method in the Scientist module, I want to supply an extra parameter that would be used inside the enabled? method to determine whether to run the experiment.

The intention is to be able to control, on a per-experiment basis, the percentage of time that the experiment will actually run.

Is something like this possible?

jbarnette commented 7 years ago

@jamesbrauman That's a good idea! There's no interface for it right now, but I dig it.

jamesbrauman commented 7 years ago

@jbarnette Thanks for replying. For further information, I'm presently doing something like this to achieve what I want:

science 'experiment-name' do |e|
  e.context percentage_enabled: 5
end

And then in the enabled? method in my experiment, I am doing:

def enabled?
  if context.key?(:percent_enabled)
    # ...
  else
    true
  end
end

And my preferred way of doing it would be to pass that to the science call:

science 'experiment-name', percent_enabled: 5 do |e|
  # ...
end

Would you like me to make a pull request?