Scientist::Experiment.new creates Scientist::Default instance even when it should have been overridden
- 主要言語
- Ruby
- スター
- 7.8k
- フォーク
- 505
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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.
コントリビューションガイド
評価
この issue はまだ評価されていません。