У меня есть класс, который живет в lib / my_class.rb:
class MyClass
@@val = nil
def self.configure(val)
@@val = val
end
def self.getval
@@val
end
end
В config / initializers / my_class.rb:
MyClass.configure(314)
SOME_VAR = 314
Однако, если я открываю рельсы консоль, я вижу следующий результат:
MyClass.getval
> nil
SOME_VAR
> 314
MyClass.configure(123)
MyClass.getval
> 123
Еще более странно то, что, если я переместу MyClass.configure(314)
в environment.rb, я могу запустить MyClass.getval
в консоли, и он вернет 314, как и ожидалось. Тем не менее, сервер rails случайным образом «забудет» сохраненное значение, из-за чего мне потребуется перезапустить сервер. Я думаю, что он перезагружает файл класса, заставляя его сбросить его состояние.
Я немного осмотрелся и не смог найти других примеров этой проблемы. Я на Rails 6.