我是Rails的新手,做了一些初学者的错误:我经常需要计算文件中的行数,因此我尝试像这样对File类进行猴子补丁:
class File
def self.line_count( filename )
%x{wc -l #{filename}}.split.first.to_i
end
end
我把它保存到/lib/file_util.rb文件中。我以为这个文件会被自动引用,所以我可以直接使用它,但是这样却行不通:
$ rails console
>> File.line_count('Gemfile')
NoMethodError: undefined method `line_count' for File:Class
...
所以我尝试手动require它,但没有成功:
>> require '<myproj>/lib/file_util.rb' # same result with require 'file_util.rb'
=>nil
但如果我在IRB中要求它,它就可以正常工作:
$ irb
>> require '<myproj>/lib/file_util.rb'
=> true
>> File.line_count('Gemfile')
=> 22
我也尝试将require添加到config/application.rb中:
...
Bundler.require(:default, Rails.env) if defined?(Bundler)
require 'file_util.rb'
module <myproj>
...
我得到的结果是:
$ rails console
<myproj>/config/application.rb:9:in `require': no such file to load -- file_util.rb (LoadError)
我做错了什么?