Je suis nouveau sur les rails et de faire une sorte d'erreur noob: Je dois souvent compter le nombre de lignes dans un fichier, donc je suis en train de fichier de classe patch singe comme ceci:Rails 3: comment charger les fichiers dans/lib?
class File
def self.line_count(filename)
%x{wc -l #{filename}}.split.first.to_i
end
end
I enregistré cela dans /lib/file_util.rb. Je pensais que cela était censé être nécessaire automatiquement, de sorte que je pouvais l'utiliser, mais cela ne fonctionne pas:
$ rails console
>> File.line_count('Gemfile')
NoMethodError: undefined method `line_count' for File:Class
...
J'essaie donc d'exiger manuellement, pas de joie:
>> require '<myproj>/lib/file_util.rb' # same result with require 'file_util.rb'
=>nil
Mais cela fonctionne si je le redemanderai au sein de la CISR:
$ irb
>> require '<myproj>/lib/file_util.rb'
=> true
>> File.line_count('Gemfile')
=> 22
J'ai aussi essayé d'ajouter le besoin de config/application.rb:
...
Bundler.require(:default, Rails.env) if defined?(Bundler)
require 'file_util.rb'
module <myproj>
...
et je reçois:
$ rails console
<myproj>/config/application.rb:9:in `require': no such file to load -- file_util.rb (LoadError)
Qu'est-ce que je fais mal?
Oui, le nom du fichier à charger automatiquement a fonctionné pour moi. Je ne savais pas qu'il était câblé de cette façon maintenant. – squarism
J'ai aussi rencontré ce problème. C'est ce que je fais pour forcer automatiquement tous les fichiers en lib nécessaires: http://stackoverflow.com/questions/4235782/rails-3-library-not-loading-until-require/6797707#6797707 –