github / github/scientist

Scientist::Experiment.new creates Scientist::Default instance even when it should have been overridden

Ouverte
#92 5 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Ruby
Étoiles
7.8k
Forks
505
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Hi friends! Thank you for your great work with this gem :sparkles:

I am having a problem in Rails apps where Scientist::Experiment defaults to the original `Default` object until the custom one is called - leading to some head-scratching about why the `try` block is not running even when `enabled?` is set to `true`.

I'm unsure whether this is a problem with the Rails load order because of how I've arranged my files, whether the examples in the README could be a little better, or whether there's genuinely a bug here.

```
$ bundle exec rails console
Loading development environment (Rails 5.1.6)
irb(main):001:0> Scientist::Experiment.new "something"
=> #
irb(main):002:0> LdapExperiment.new(name: "something")
=> #
irb(main):003:0> Scientist::Experiment.new "something"
=> #
```

I've followed the instructions in the README, which are delightful and comprehensive.

```ruby
# app/experiments/ldap_experiment.rb
require "scientist/experiment"

class LdapExperiment
include Scientist::Experiment

attr_accessor :name

def initialize(name:)
@name = name
end

def enabled?
# ...
end

def publish(result)
# ...
end
end

module Scientist::Experiment
def self.new(name)
LdapExperiment.new(name: name)
end
end
```

```ruby
# app/models/whatever.rb
class Whatever
include Scientist
def do_something
science "role lookup" do |e|
e.use { do_one_thing }
e.try { do_some_other_thing }
end
end
end
```

This is occurring in Rails 3.2.x and Rails 5.1.x applications, with version 1.2.0 of the gem.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.