aboutsummaryrefslogtreecommitdiffstats
path: root/guides/rails_guides.rb
diff options
context:
space:
mode:
authorGenadi Samokovarov <gsamokovarov@gmail.com>2016-02-04 10:40:04 +0100
committerGenadi Samokovarov <gsamokovarov@gmail.com>2016-02-04 10:40:17 +0100
commit5a4e878876a5813dca09fbf8b62180e3c1ba7aa6 (patch)
tree62608f2a0f6ee1d7f253776622cd6b0e23706463 /guides/rails_guides.rb
parenta69281614a7ed6c134d9a799419dd34dd5293a81 (diff)
downloadrails-5a4e878876a5813dca09fbf8b62180e3c1ba7aa6.tar.gz
rails-5a4e878876a5813dca09fbf8b62180e3c1ba7aa6.tar.bz2
rails-5a4e878876a5813dca09fbf8b62180e3c1ba7aa6.zip
Don't publicize Kernel core extensions
This is a reaction to a [bug] we hit in web-console. The cause of it was a `Kernel` extension called `#console` that was public and was fighting over Railties with console block to be run on `rails console`. We solved it by making the method private. We did that through `module_function` so `::Kernel.console` can be invoked even in `BasicObject`. I'm proposing to make most of the core Active Support `Kernel` extensions `module_function` as well. Those are currently public and we are polluting every `Object` public interface with them. ```ruby >> Object.new.respond_to? :silence_warnings => true >> Object.new.respond_to? :with_warnings => true >> Object.new.respond_to? :enable_warnings => true >> Object.new.respond_to? :suppress => true `` Some extensions like `Kernel#class_eval` should be public, but most of them don't really need to be. [bug]: https://github.com/rails/web-console/issues/184
Diffstat (limited to 'guides/rails_guides.rb')
0 files changed, 0 insertions, 0 deletions