在Rails中,如何为String类添加一个新的方法?

我想为我的Rails项目中的不同对象构build一个索引,并希望添加一个可以在String对象上调用的“count_occurences”方法。

我看到我可以做类似的事情

class String def self.count_occurences do_something_here end end 

定义这个方法的确切方法是什么,在哪里把代码放在我的Rails项目中?

谢谢

你可以在lib/ext/string.rb应用程序中定义一个新的类,并把这个内容放在里面:

 class String def to_magic "magic" end end 

要加载这个类,你需要在你的config/application.rb文件或初始化程序中。 如果你有很多这样的扩展,初始化就更好了! 加载它的方法很简单:

 require 'ext/string' 

to_magic方法将在应用程序/控制台内的String类的实例上可用,即:

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

没有插件必要。

我知道这是一个古老的线程,但它似乎并不像接受的解决scheme在Rails 4+(至less不是我)。 将扩展名为rb的文件放在config / initializers中。

或者,您可以将/ lib添加到Rails自动加载器(在config / application.rb中的Application类中:

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

看到这个: http : //brettu.com/rails-ruby-tips-203-load-lib-files-in-rails-4/

当你想扩展一些核心类的时候,你通常需要创build一个插件(在另一个应用程序中需要这个代码的时候很方便)。 在这里你可以find一个指南如何创build一个插件http://guides.rubyonrails.org/plugins.html和点#3向您展示如何扩展string类:; http : //guides.rubyonrails.org/plugins.html#延伸核心类