创建gem包时,我经常有以下的目录结构:
|--lib
|-- helpers.rb
`-- helpers
|-- helper_a.rb
`-- helper_b.rb
在 helpers.rb
内部,我只是在 helpers
目录中 require
文件。但我必须像这样做:
$:.push(File.dirname(__FILE__) + '/helpers')
require 'helper_a'
require 'helper_b'
有没有一种方法可以使这一行不需要再添加任何内容呢?我只是很快就想出了这个解决方法:
dir = File.join(File.dirname(__FILE__), "helpers")
Dir.entries(dir)[2..-1].each { |file| require "#{dir}/#{file[0..-4]}" }
但这是两行且难看的。你都用了哪些巧妙的技巧使它变成一行呢?
Dir ["/path/to/directory/*.rb"] .each {| file | require file}
来要求从目录中的所有文件的最佳方法。 - Marcel Jackwerth