“accessorize”方法 - Ruby,Rack还是Sinatra?

时间:2014-03-05 06:40:26

标签: ruby sinatra rack

我见过以下成语,并想知道accessorize的意思是什么,它来自哪里 - Ruby,Rack还是Sinatra?

use Rack::Flash, accessorize: [:error, :success]

1 个答案:

答案 0 :(得分:1)

accessorize不是方法,从列表中我看到这是Rack::Flash关键选项。在源头深处,我看到了这一点:

# Generate accessor methods for the given entry key if :accessorize is true.
def def_accessor(key)
  raise ArgumentError.new('Invalid entry type: %s' % key) if respond_to?(key)

    class << self; self end.class_eval do
      define_method(key) { |*args| val = args.first; val ? (self[key]=val) : self[key] }
      define_method("#{key}=") { |val| self[key] = val }
      define_method("#{key}!") { |val| cache[key] = val }
    end
  end
end

在文档中

  

或者您可以传递:accessorize选项来声明您的Flash类型。   其中每个都将在flash对象上定义访问器

source code