Yard doc 和常量、实例和类方法的动态分配

tho*_*mad 5 ruby ruby-on-rails yard

我有一个模块来帮助定义某些方法、常量和类方法。它正在动态地创建它们。我需要帮助了解如何使用 Yard Doc 的@macro功能来对齐文档并从包含的模块内部设置实例、类和常量文档。

在它的基本情况下,它看起来像这样:

module Constantizer
  extend ActiveSupport::Concern

  # @!macro [attach] define_constant
  #   @method $1?
  #   Is this a $1?
  #   @return [Boolean]

  module ClassMethods

    def define_constant(label, value, description)
      const_set(label.to_s.upcase, value)
      define_method("#{label}?") { self.id == value }
      define_singleton_method(label) { find(value) }
    end

  end
end

class MyRecord < ActiveRecord::Base
  include Constantizer 
  # @!parse include Constantizer

  attr_accessor :label, :id

  define_constant :one, 1, 'the number one'
  define_constant :two, 2, 'the number two'
  # ... etc ...
end
Run Code Online (Sandbox Code Playgroud)

这将define_constant创建一个实例方法、一个常量和一个类方法。

MyRecord::ONE #=> 1
MyRecord.one  #=> MyRecord.find(1)
MyRecord#one? #=> true || false
Run Code Online (Sandbox Code Playgroud)

帮忙打理院子

在 SO这篇文章找到了这个答案,我可以通过上面看到的内容在实例方法级别进行排序。但是,我无法获取要记录的类方法或类上的常量。我尝试在里面添加相同类型的东西,ClassMethods但它正在使用label而不是传递给define_constant.

有点只是复制粘贴并试图猜测,所以我想我会问。