Commit Graph

11 Commits

Author SHA1 Message Date
José Valim d1abf29e79 Remove NilClass whiners feature.
Removing this feature causes boost in performance when using Ruby 1.9.

Ruby 1.9 started to do implicit conversions using `to_ary` and `to_str`
in some STDLIB methods (like Array#join). To do such implicit conversions,
Ruby 1.9 always dispatches the method and rescues the NoMethodError exception
in case one is raised.

Therefore, since the whiners feature defined NilClass#method_missing, such
implicit conversions for nil became much, much slower. In fact, just defining
NilClass#method_missing (even without the whiners feature) already causes a
massive slow down. Here is a snippet that shows such slow down:

    require "benchmark"
    Benchmark.realtime { 1_000.times { [nil,nil,nil].join } }

    class NilClass
      def method_missing(*args)
        raise NoMethodError
      end
    end

    Benchmark.realtime { 1_000.times { [nil,nil,nil].join } }
2011-12-08 20:28:09 +01:00
dmathieu e722fbb50f remove the warning when testing whiny_nil 2011-07-07 11:21:23 +02:00
Andrew White 5e7ce47fb9 Report the correct value of nil.id in the exception message
as different ruby implementations may have different values,
for example Rubinius returns 53 for nil.id.

[#6444 state:resolved]
2011-03-06 15:23:31 +00:00
wycats 39d6f9e112 Make many parts of Rails lazy. In order to facilitate this,
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
2010-03-07 06:24:30 -08:00
José Valim 9f1c359a20 Fix whiny_nil tests, improve error messages and make CI happy. 2009-12-25 22:00:36 +01:00
Jeremy Kemper 9acc824d96 Ruby 1.9.2: disallow explicit coercion via method_missing. Only give friendly nil errors for Array and Active Record methods. 2009-11-13 12:25:54 -08:00
Jeremy Kemper f6d8526659 require abstract_unit directly since test is in load path
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8563 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2008-01-05 13:31:04 +00:00
Jeremy Kemper 71234daef1 r4487@asus: jeremy | 2006-04-29 12:21:39 -0700
Check whether @flash is defined? for warnings-safety.
 r4488@asus:  jeremy | 2006-04-29 12:23:15 -0700
 Check whether @flash is defined? for warnings-safety. Obviates nil? check.
 r4489@asus:  jeremy | 2006-04-29 12:45:18 -0700
 Check whether @session is defined? for warnings-safety.
 r4490@asus:  jeremy | 2006-04-29 12:50:41 -0700
 Check whether @rendering_runtime is defined? for warnings-safety.
 r4491@asus:  jeremy | 2006-04-29 12:55:01 -0700
 Check whether @_cycles is defined? for warnings-safety.
 r4492@asus:  jeremy | 2006-04-29 12:59:19 -0700
 Check whether instance variables are defined? for warnings-safety.
 r4493@asus:  jeremy | 2006-04-29 13:14:09 -0700
 Add nil @template to PrototypeHelperTest to suppress unitialized instance variable warning.
 r4494@asus:  jeremy | 2006-04-29 13:31:34 -0700
 Check whether @auto_index defined? for warnings-safety.
 r4495@asus:  jeremy | 2006-04-29 13:32:24 -0700
 Wrap content_columns redefinitions with silence_warnings.
 r4496@asus:  jeremy | 2006-04-29 13:35:28 -0700
 Wrap more redefinitions with silence_warnings.
 r4829@asus:  jeremy | 2006-07-08 10:59:20 -0700
 abstract unit, fix warnings
 r4830@asus:  jeremy | 2006-07-08 11:06:12 -0700
 Use parens to silence warning.
 r4831@asus:  jeremy | 2006-07-08 11:06:48 -0700
 Use parens to silence warning.


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4595 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2006-07-08 18:14:49 +00:00
Nicholas Seckar 43c34e20d2 Updated whiny nil to be more concise and useful.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2602 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-15 02:24:05 +00:00
David Heinemeier Hansson a995f42be0 Added tests for whiny nil #1476 [court3nay/marcel]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1507 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-25 11:15:38 +00:00
David Heinemeier Hansson 9113aa2744 Forgot to actually add the whiny nil
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1455 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-20 11:15:46 +00:00