Rails 源代码里一些常用方法
Active Support
eager_autoload 和 autoload
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
最后更新于
这有帮助吗?