Один из служебных классов в моей кодовой базе генерирует методы классов динамически, используя метапрограммирование.
Моя проблема:
- В настоящее время Rubymine не может предложить такие методы и
жалуется, что не может найти
FeatureFlagHandler.foo_enabled?
способ.
- Как я могу позволить Rubymine узнать об этих динамических методах? я
хочу, чтобы Rubymine предложил такие методы для завершения кода, чтобы
когда я набираю
FeatureFlagHandler.fo
, он должен быть в состоянии предложить
FeatureFlagHandler.foo_enabled?
метод.
Исходный код класса:
class FeatureFlagHandler
class << self
# Generates `_enabled?` and `_disabled?` helper methods for feature flags
# for all Constants defined in AppUtils::FeatureFlags
#
# module AppUtils
# module FeatureFlags
# FOO = "FOO"
# BAR = "BAR"
# end
# end
#
# e.g. If AppUtils::FeatureFlags contains FOO and BAR constant, then
# below code will generate following method definitions:
#
# def self.foo_enabled?
# enabled?("FOO")
# end
# def self.bar_enabled?
# enabled?("BAR")
# end
#
# Then above methods can be used as:
#
# do_something if FeatureFlagHandler.foo_enabled?
#
AppUtils::FeatureFlags.constants.each do |flag|
define_method("#{flag.to_s.downcase}_enabled?") do
# Logic to check if `feature_flag` is ON or OFF
# For eg:
ENV[feature_flag] == "ENABLE"
end
end
end
end
Примечание: флажки функций регулярно добавляются / удаляются сверху AppUtils::FeatureFlags
модуль