From: "wardrop (Tom Wardrop)" Date: 2012-10-19T10:11:44+09:00 Subject: [ruby-core:48078] [ruby-trunk - Feature #7121] Extending the use of `require' Issue #7121 has been updated by wardrop (Tom Wardrop). I personally don't mind your suggestion. It makes sense to me. I can't think of any potential negative side effects. On that note, I think the return value should always be a boolean, instead of a boolean OR an array of booleans depending on the input. #require should return true if any of the listed files were loaded, or false if none of them were. If you need to determine the loaded state of each file (the lesser common use case I'd imagine), then you should resort to looping over multiple calls to #require. ---------------------------------------- Feature #7121: Extending the use of `require' https://bugs.ruby-lang.org/issues/7121#change-31029 Author: mjones (Morgan Jones) Status: Open Priority: Normal Assignee: Category: Target version: =begin I was playing with Ruby tonight and thought up an interesting idea to make (({require})) a bit better, so you can load multiple files sequentially using one method call. Currently, (({require})) supports one argument, and throws a (({TypeError})) if you pass an array: irb(main):001:0> require %w(json yaml) TypeError: can't convert Array into String However, there's a way to patch Kernel that makes it respond to multiple objects passed in an (({Array})). module Kernel @@require = method :require def require *args args.flatten! args.collect! do |a| raise ArgumentError.new "arguments to `require' must be strings or symbols" unless a.is_a?(String) || a.is_a?(Symbol) @@require.call a.to_s end args.length == 1 ? args.first : args end end The new behavior doesn't actually require the modification of any code that calls (({require})) (pretty much anything, really), and new code can take advantage of the new functionality instantly. irb> require %w(json yaml) => [true, false] irb> require :pp => false irb> require 'rails' => true irb> require %w(json yaml), :pp, 'rails' => [true, false, false, true] =end Thanks for considering this. -- http://bugs.ruby-lang.org/