1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

uses Object#metaclass and Object#class_eval in a few spots

[#2797 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
This commit is contained in:
Xavier Noria 2009-06-13 01:01:42 +02:00 committed by Jeremy Kemper
parent 54a5446641
commit d32965399c
6 changed files with 11 additions and 7 deletions

View file

@ -1,6 +1,7 @@
require 'stringio'
require 'uri'
require 'active_support/test_case'
require 'active_support/core_ext/object/metaclass'
require 'rack/mock_session'
require 'rack/test/cookie_jar'
@ -191,7 +192,7 @@ module ActionController
unless defined? @named_routes_configured
# install the named routes in this session instance.
klass = class << self; self; end
klass = metaclass
Routing::Routes.install_helpers(klass)
# the helpers are made protected by default--we make them public for

View file

@ -11,6 +11,7 @@ require 'active_support/core_ext/hash/indifferent_access'
require 'active_support/core_ext/hash/slice'
require 'active_support/core_ext/string/behavior'
require 'active_support/core_ext/symbol'
require 'active_support/core_ext/object/metaclass'
module ActiveRecord #:nodoc:
# Generic Active Record exception class.
@ -2040,7 +2041,7 @@ module ActiveRecord #:nodoc:
# end
# end
def define_attr_method(name, value=nil, &block)
sing = class << self; self; end
sing = metaclass
sing.send :alias_method, "original_#{name}", name
if block_given?
sing.send :define_method, name, &block

View file

@ -1,3 +1,5 @@
require 'active_support/core_ext/object/metaclass'
module ActiveRecord
class IrreversibleMigration < ActiveRecordError#:nodoc:
end
@ -300,8 +302,7 @@ module ActiveRecord
case sym
when :up, :down
klass = (class << self; self; end)
klass.send(:alias_method_chain, sym, "benchmarks")
metaclass.send(:alias_method_chain, sym, "benchmarks")
end
ensure
@ignore_new_methods = false

View file

@ -1,5 +1,6 @@
require 'active_support/core_ext/array'
require 'active_support/core_ext/hash/except'
require 'active_support/core_ext/object/metaclass'
module ActiveRecord
module NamedScope
@ -99,7 +100,7 @@ module ActiveRecord
end
end, &block)
end
(class << self; self end).instance_eval do
metaclass.instance_eval do
define_method name do |*args|
scopes[name].call(self, *args)
end

View file

@ -1,7 +1,7 @@
class Proc #:nodoc:
def bind(object)
block, time = self, Time.now
(class << object; self end).class_eval do
object.class_eval do
method_name = "__bind_#{time.to_i}_#{time.usec}"
define_method(method_name, &block) # define_method("__bind_1230458026_720454", &block)
method = instance_method(method_name) # method = instance_method("__bind_1230458026_720454")

View file

@ -307,7 +307,7 @@ module ActiveSupport
def _normalize_legacy_filter(kind, filter)
if !filter.respond_to?(kind) && filter.respond_to?(:filter)
filter.metaclass.class_eval(
filter.class_eval(
"def #{kind}(context, &block) filter(context, &block) end",
__FILE__, __LINE__ - 1)
elsif filter.respond_to?(:before) && filter.respond_to?(:after) && kind == :around