83 votes

Dans Ruby on Rails, pour étendre la classe String, où le code doit-il être placé?

Si sur Ruby on Rails, je dois ajouter une méthode appelée

 class String
  def capitalize_first
    # ...
  end
end
 

Où le fichier doit-il aller? (quel répertoire et nom de fichier, et est-ce que du code d'initialisation est nécessaire?) Ceci est pour un projet Rails 3.0.6.

147voto

Mike Lewis Points 29305

J'ajoute toujours un répertoire core_ext dans mon lib dir.

Vous avez donc besoin de la ligne suivante dans votre configuration d’initialisation:

 Dir[File.join(Rails.root, "lib", "core_ext", "*.rb")].each {|l| require l }
 

et avoir votre extension comme:

lib/core_ext/string.rb

 class String
  def capitalize_first
    # ...
  end
end
 

66voto

njorden Points 1826

Vous pouvez le faire dans config / initializers / string.rb

 class String
  def capitalize_first
    # ...
  end
end
 

devrait être tout ce dont vous avez besoin (à part un redémarrage de l'application).

7voto

Hopstream Points 1913

Les instructions de Rails 3.1 sont la voie à suivre:

http://guides.rubyonrails.org/plugins.html#extending-core-classes

Si vous suivez la convention par défaut, vous n'aurez pas besoin de vous embrouiller avec une configuration d'initialiseur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X