github / github/scientist

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

Offen
#92 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Ruby
Sterne
7.8k
Forks
505
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.