Rails 源代码里一些常用方法

Active Support

eager_autoloadautoload

class_attribute

定义一个类属性,子类继承于父类。
子类可以更改自己的属性,但不影响到父类的。

attr_internal

alias_method :attr_internal, :attr_internal_accessor

声明一个读、写属性,功能类似 attr_accessor, 但内部实现有一点点不同。

mattr_accessor

alias :cattr_accessor :mattr_accessor

定义一个类属性,同时具备类和实例级别的读、写。(这里类似全局变量了)

delegate

委托,将它人的方法做为已用。

后面是个对象即可,而 Ruby 又号称"一切皆对象"。

最终通过 module_eval 并重新定义了方法。

委托类方法给实例对象使用。

config_accessor

define_callbacks

run_callbacks

attr_internal_writer

info debug warn error fatal unknown 也就是 Rails.logger 的各个级别(或者说类别)。

included

extract_options!

Abstract Controller

abstract!

我们自定义的 Controller 里的 public instance methods(公开实例方法) 都会被当做 action 来对待。 因此,继承的时候要做一些处理, 以避免父类的实例方法被当做 action. 目前,解决方法是把父类声明为:abstract = true

helper

helper_method

Railtie

delegate :config, to: :instance

Initializable

initializer

最后更新于

这有帮助吗?