- acts_like?
- blank?
- duplicable?
- instance_exec
- instance_variable_defined?
- instance_variable_names
- returning
- to_json
- to_param
- to_query
- unloadable
- with_options
- InstanceExecMethods
A duck-type assistant method. For example, Active Support extends Date to define an acts_like_date? method, and extends Time to define acts_like_time?. As a result, we can do "x.acts_like?(:time)" and "x.acts_like?(:date)" to do duck-type-safe comparisons, since classes that we want to act like Time simply need to define an acts_like_time? method.
[ show source ]
# File lib/active_support/core_ext/object/misc.rb, line 56
56: def acts_like?(duck)
57: respond_to? "acts_like_#{duck}?"
58: end
An object is blank if it‘s false, empty, or a whitespace string. For example, "", " ", nil, [], and {} are blank.
This simplifies
if !address.nil? && !address.empty?
to
if !address.blank?
[ show source ]
# File lib/active_support/core_ext/blank.rb, line 12
12: def blank?
13: respond_to?(:empty?) ? empty? : !self
14: end
Can you safely .dup this object? False for nil, false, true, symbols, and numbers; true otherwise.
[ show source ]
# File lib/active_support/core_ext/duplicable.rb, line 4 4: def duplicable? 5: true 6: end
Evaluate the block with the given arguments within the context of this object, so self is set to the method receiver.
From Mauricio‘s eigenclass.org/hiki/bounded+space+instance_exec
[ show source ]
# File lib/active_support/core_ext/object/extending.rb, line 42
42: def instance_exec(*args, &block)
43: begin
44: old_critical, Thread.critical = Thread.critical, true
45: n = 0
46: n += 1 while respond_to?(method_name = "__instance_exec#{n}")
47: InstanceExecMethods.module_eval { define_method(method_name, &block) }
48: ensure
49: Thread.critical = old_critical
50: end
51:
52: begin
53: send(method_name, *args)
54: ensure
55: InstanceExecMethods.module_eval { remove_method(method_name) } rescue nil
56: end
57: end
[ show source ]
# File lib/active_support/core_ext/object/instance_variables.rb, line 4 4: def instance_variable_defined?(variable) 5: instance_variables.include?(variable.to_s) 6: end
[ show source ]
# File lib/active_support/core_ext/object/instance_variables.rb, line 37
37: def instance_variable_names
38: instance_variables.map(&:to_s)
39: end
A Ruby-ized realization of the K combinator, courtesy of Mikael Brockman.
def foo
returning values = [] do
values << 'bar'
values << 'baz'
end
end
foo # => ['bar', 'baz']
def foo
returning [] do |values|
values << 'bar'
values << 'baz'
end
end
foo # => ['bar', 'baz']
[ show source ]
# File lib/active_support/core_ext/object/misc.rb, line 27
27: def returning(value)
28: yield(value)
29: value
30: end
Dumps object in JSON (JavaScript Object Notation). See www.json.org for more info.
[ show source ]
# File lib/active_support/json/encoders/object.rb, line 3 3: def to_json(options = {}) 4: ActiveSupport::JSON.encode(instance_values, options) 5: end
Alias of to_s.
[ show source ]
# File lib/active_support/core_ext/object/conversions.rb, line 3 3: def to_param 4: to_s 5: end
Converts an object into a string suitable for use as a URL query string, using the given key as the param name.
Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
[ show source ]
# File lib/active_support/core_ext/object/conversions.rb, line 11
11: def to_query(key)
12: "#{CGI.escape(key.to_s)}=#{CGI.escape(to_param.to_s)}"
13: end
Mark the given constant as unloadable. Unloadable constants are removed each time dependencies are cleared.
Note that marking a constant for unloading need only be done once. Setup or init scripts may list each unloadable constant that may need unloading; each constant will be removed for every subsequent clear, as opposed to for the first clear.
The provided constant descriptor may be a (non-anonymous) module or class, or a qualified constant name as a string or symbol.
Returns true if the constant was not previously marked for unloading, false otherwise.
[ show source ]
# File lib/active_support/dependencies.rb, line 529
529: def unloadable(const_desc)
530: ActiveSupport::Dependencies.mark_for_unload const_desc
531: end
An elegant way to refactor out common options
with_options :order => 'created_at', :class_name => 'Comment' do |post|
post.has_many :comments, :conditions => ['approved = ?', true], :dependent => :delete_all
post.has_many :unapproved_comments, :conditions => ['approved = ?', false]
post.has_many :all_comments
end
Can also be used with an explicit receiver:
map.with_options :controller => "people" do |people|
people.connect "/people", :action => "index"
people.connect "/people/:id", :action => "show"
end
[ show source ]
# File lib/active_support/core_ext/object/misc.rb, line 47
47: def with_options(options)
48: yield ActiveSupport::OptionMerger.new(self, options)
49: end