Почему class_inheritable_reader в ActiveSupport не задокументирован? - PullRequest
1 голос
/ 03 февраля 2010

Потянув меня за волосы, пытаясь выяснить, где class_inheritable_reader документирован в Rails.

Поиск в Google показал его существование, и, взглянув на само сокровище, вы нашли метод:

def class_inheritable_reader(*syms)
  syms.each do |sym|
    next if sym.is_a?(Hash)
    class_eval <<-EOS
      def self.#{sym}                        # def self.before_add_for_comments
        read_inheritable_attribute(:#{sym})  #         read_inheritable_attribute(:before_add_for_comments)
      end                                    # end
                                             #
      def #{sym}                             # def before_add_for_comments
        self.class.#{sym}                    #   self.class.before_add_for_comments
      end                                    # end
    EOS
  end
end
....

Но, взглянув на rdoc для ActiveSupport и 'rake doc: rails', вы не найдете документации ... как получилось?

Ответы [ 2 ]

1 голос
/ 06 февраля 2010

Если вы откроете папку, в которой установлены драгоценные камни на вашем компьютере, вы можете перейти к:

ActiveSupport / Библиотека / active_support / core_ext / класс / inheritable_attributes.rb

чтобы увидеть, где класс на самом деле реализован. Кроме того, вы можете увидеть последнюю версию файла в репозитории Rails на GitHub.

В этом файле доступна документация уровня класса (ниже), но нет документации уровня метода, поэтому вы, вероятно, ничего не смогли найти.

# Allows attributes to be shared within an inheritance hierarchy, but where each descendant gets a copy of
# their parents' attributes, instead of just a pointer to the same. This means that the child can add elements
# to, for example, an array without those additions being shared with either their parent, siblings, or
# children, which is unlike the regular class-level attributes that are shared across the entire hierarchy.
0 голосов
/ 03 февраля 2010

Я нашел его в APIdock . Похоже, это расширение класса. Нет документации, но вы можете увидеть реализацию.

...