【发布时间】:2019-05-01 09:09:48
【问题描述】:
我的代码库中的一个实用程序类使用元编程动态生成类方法。
我的问题:
- 目前,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 模块上方添加/删除
【问题讨论】:
标签: ruby-on-rails ruby metaprogramming rubymine