Sono nuovo di rotaie e facendo una sorta di niubbo errore: ho spesso bisogno di contare il numero di linee in un file, quindi sto cercando di scimmia classe patch di file in questo modo:Rails 3: come caricare i file in/lib?
class File
def self.line_count(filename)
%x{wc -l #{filename}}.split.first.to_i
end
end
I salvato questo in /lib/file_util.rb. Ho pensato che questo doveva essere auto-richiesta, in modo che ho potuto solo usarlo, ma che non funziona:
$ rails console
>> File.line_count('Gemfile')
NoMethodError: undefined method `line_count' for File:Class
...
così cerco di richiedere manualmente, nessuna gioia:
>> require '<myproj>/lib/file_util.rb' # same result with require 'file_util.rb'
=>nil
Ma funziona se ho bisogno entro IRB:
$ irb
>> require '<myproj>/lib/file_util.rb'
=> true
>> File.line_count('Gemfile')
=> 22
ho anche cercato di aggiungere il richiedono di config/application.rb:
...
Bundler.require(:default, Rails.env) if defined?(Bundler)
require 'file_util.rb'
module <myproj>
...
e ottengo:
$ rails console
<myproj>/config/application.rb:9:in `require': no such file to load -- file_util.rb (LoadError)
Che cosa sto facendo di sbagliato?
Sì, la denominazione del file per il caricamento automatico ha funzionato per me. Non sapevo che fosse cablato in quel modo ora. – squarism
Ho incontrato anche questo problema. Questo è quello che faccio per forzare automaticamente tutti i file in lib da richiedere: http://stackoverflow.com/questions/4235782/rails-3-library-not-loading-until-require/6797707#6797707 –