Dans Rails, comment append une nouvelle méthode à la classe Ssortingng?

Je veux créer un index pour différents objects dans mon projet Rails et je voudrais append une méthode “count_occurences” que je peux appeler sur des objects Ssortingng.

J’ai vu que je pouvais faire quelque chose comme

class Ssortingng def self.count_occurences do_something_here end end 

Quelle est la manière exacte de définir cette méthode et où placer le code dans mon projet Rails?

Merci

Vous pouvez définir une nouvelle classe dans votre application à lib/ext/ssortingng.rb et y placer ce contenu:

 class Ssortingng def to_magic "magic" end end 

Pour charger cette classe, vous devrez l’exiger dans votre fichier config/application.rb ou dans un initialiseur. Si vous aviez beaucoup de ces extensions, un initialiseur est mieux! Le moyen de le charger est simple:

 require 'ext/ssortingng' 

La méthode to_magic sera alors disponible sur les instances de la classe Ssortingng intérieur de votre application / console, à savoir:

 >> "not magic".to_magic => "magic" 

Aucun plugin nécessaire.

Je sais que c’est un vieux thread, mais il ne semble pas que la solution acceptée fonctionne dans Rails 4+ (du moins pas pour moi). Mettre le fichier d’extension rb dans config / initializers a fonctionné.

Alternativement, vous pouvez append / lib au chargeur automatique Rails (dans config / application.rb, dans la classe Application:

 config.autoload_paths += %W(#{config.root}/lib) require 'ext/ssortingng' 

Voir ceci: http://brettu.com/rails-ruby-tips-203-load-lib-files-in-rails-4/

Lorsque vous souhaitez étendre une classe de base, vous devez généralement créer un plug-in (il est pratique lorsque vous avez besoin de ce code dans une autre application). Vous trouverez ici un guide expliquant comment créer un plugin http://guides.rubyonrails.org/plugins.html et le point 3 vous montrer comment étendre la classe Ssortingng: http://guides.rubyonrails.org/plugins.html# cours de base