在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#延伸核心类