/usr/lib/ruby/vendor_ruby/celluloid/properties.rb is in ruby-celluloid 0.16.0-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | module Celluloid
# Properties define inheritable attributes of classes, somewhat similar to
# Rails cattr_*/mattr_* or class_attribute
module Properties
def property(name, opts = {})
default = opts.fetch(:default, nil)
multi = opts.fetch(:multi, false)
ivar_name = "@#{name}".to_sym
ancestors.first.send(:define_singleton_method, name) do |value = nil, *extra|
if value
value = value ? [value, *send(name), *extra].uniq : [] if multi
instance_variable_set(ivar_name, value)
elsif instance_variables.include?(ivar_name)
instance_variable_get(ivar_name)
elsif superclass.respond_to? name
superclass.send(name)
else
default
end
end
end
end
end
|