The document discusses ActiveSupport::Concern, a module in Ruby on Rails that provides a way to write reusable modules. It handles dependencies between modules and includes common functionality like scopes. ActiveSupport also allows pluggable JSON backends for improved performance and includes helper methods like presence that simplify checking for blank values. Classes can also define inheritable class attributes using ClassAttribute.
4. module M
def self.included(base)
base.extend, ClassMethods
base.send(:include, InstanceMethods)
scope :disabled, where(:disabled => true)
end
module ClassMethods
...
end
module InstanceMethods
...
end
end
Sunday, September 12, 2010
7. module M
extend ActiveSupport::Concern
included do
scope :disabled, where(:disabled => true)
end
module ClassMethods
...
end
module InstanceMethods
...
end
end
Sunday, September 12, 2010
10. module Bar
extend ActiveSupport::Concern
include Foo
included do
self.method_injected_by_foo
end
end
class Host
include Bar
end
Sunday, September 12, 2010
12. module Mongoid #:nodoc
module Indexes #:nodoc
extend ActiveSupport::Concern
included do
cattr_accessor :index_options
self.index_options = {}
end
module ClassMethods #:nodoc
# Send the actual index creation comments to the MongoDB driver
def create_indexes
return unless index_options
current_collection = self._collection || set_collection
index_options.each do |name, options|
current_collection.create_index(name, options)
end
end
...
end
end
end
Sunday, September 12, 2010
19. BEFORE
name = params[:name] unless params[:name].blank?
Sunday, September 12, 2010
20. NOW
name = params[:name] if params[: name].present?
Sunday, September 12, 2010
21. BEFORE
state = params[:state] unless params[:state].blank?
country = params[:country] unless params[:country].blank?
region = state || country || 'US'
Sunday, September 12, 2010
22. NOW
region = params[:state].presence || params[:country].presence || 'US'
Sunday, September 12, 2010