mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
39d6f9e112
add lazy_load_hooks.rb, which allows us to declare code that should be run at some later time. For instance, this allows us to defer requiring ActiveRecord::Base at boot time purely to apply configuration. Instead, we register a hook that should apply configuration once ActiveRecord::Base is loaded. With these changes, brings down total boot time of a new app to 300ms in production and 400ms in dev. TODO: rename base_hook
53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
# Stub to enable testing without Active Record
|
|
module ActiveRecord
|
|
class Base
|
|
def save!
|
|
end
|
|
end
|
|
end
|
|
|
|
require 'abstract_unit'
|
|
require 'active_support/whiny_nil'
|
|
|
|
NilClass.add_whiner ::ActiveRecord::Base
|
|
|
|
class WhinyNilTest < Test::Unit::TestCase
|
|
def test_unchanged
|
|
nil.method_thats_not_in_whiners
|
|
rescue NoMethodError => nme
|
|
assert_match(/nil:NilClass/, nme.message)
|
|
end
|
|
|
|
def test_active_record
|
|
nil.save!
|
|
rescue NoMethodError => nme
|
|
assert_no_match(/nil:NilClass/, nme.message)
|
|
assert_match(/nil\.save!/, nme.message)
|
|
end
|
|
|
|
def test_array
|
|
nil.each
|
|
rescue NoMethodError => nme
|
|
assert_no_match(/nil:NilClass/, nme.message)
|
|
assert_match(/nil\.each/, nme.message)
|
|
end
|
|
|
|
def test_id
|
|
nil.id
|
|
rescue RuntimeError => nme
|
|
assert_no_match(/nil:NilClass/, nme.message)
|
|
end
|
|
|
|
def test_no_to_ary_coercion
|
|
nil.to_ary
|
|
rescue NoMethodError => nme
|
|
assert_no_match(/nil:NilClass/, nme.message)
|
|
assert_match(/nil\.to_ary/, nme.message)
|
|
end
|
|
|
|
def test_no_to_str_coercion
|
|
nil.to_str
|
|
rescue NoMethodError => nme
|
|
assert_match(/nil:NilClass/, nme.message)
|
|
end
|
|
end
|