Railsプロジェクトでさまざまなオブジェクトのインデックスを作成し、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
クラスのinstancesで利用可能になります。
>> "not magic".to_magic
=> "magic"
プラグインは必要ありません。
私はこれが古いスレッドであることを知っていますが、受け入れられた解決策がRails 4+(少なくとも私にとってはそうではありません)で動作するようには見えません。イニシャライザが機能しました。
または、/ libをRails autoloader(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/
コアクラスを拡張する場合、通常はプラグインを作成します(別のアプリケーションでこのコードが必要な場合に便利です)。ここでは、プラグインの作成方法のガイドを見つけることができます http://guides.rubyonrails.org/plugins.html およびポイント#3は、Stringクラスを拡張する方法を示します: http:/ /guides.rubyonrails.org/plugins.html#extending-core-classes