0
我正在使用功能标志使用flip gem的Rails项目。我们都有一个要素类中,你可以声明要使用不同的功能标志,通过在“包含”方法中评估模块化类级方法调用
# app/models/feature.rb
class Feature < ActiveRecord::Base
extend Flip::Declarable
strategy Flip::DeclarationStrategy
feature :ivans_feature_A
feature :ivans_feature_B
feature :ivans_feature_C
feature :kramers_feature_X
feature :kramers_feature_X
end
随着项目的发展,所以做的,我们已经有了在这个文件中声明的特征标志的数量。一位同事建议我们将相关的特征声明分解成单独的模块来组织事物。
我发现了一种方法来做到这一点,但它不是我见过的模式,所以我不知道是否有更标准的方法。我定义的功能,每串命名空间模块,我想组合到一起:
应用/型号/功能/ ivans_features.rb
module Features::IvansFeatures
def self.included(base)
base.feature :ivans_feature_A
base.feature :ivans_feature_B
base.feature :ivans_feature_C
end
end
应用/型号/功能/ kramers_features.rb
module Features::KramersFeatures
def self.included(base)
base.feature :kramers_feature_X
base.feature :kramers_feature_Y
end
end
...并让他们参与特征模型:
# app/models/feature.rb
class Feature < ActiveRecord::Base
extend Flip::Declarable
strategy Flip::DeclarationStrategy
include Features::IvansFeatures
include Features::KramersFeatures
end
是很奇怪混合模块为了使用included
回调在类上运行一些方法调用的唯一目的而进入类中?
伟大的作品,谢谢 – ivan