質問する前に、私はプログラミングの初心者であることをみんなに警告したいので、ばかげたことを聞いたら訂正してください。
私はRubyがオープンクラスを持っていることについて読んでいます。つまり、メソッドを追加することができます。ただし、Railsが既存のRubyクラスにどのように追加されたかの例をいくつか取得しようとしています。
質問する前に、私はプログラミングの初心者であることをみんなに警告したいので、ばかげたことを聞いたら訂正してください。
私はRubyがオープンクラスを持っていることについて読んでいます。つまり、メソッドを追加することができます。ただし、Railsが既存のRubyクラスにどのように追加されたかの例をいくつか取得しようとしています。
Railsには非常に多くのコア拡張機能があり、それらは別の宝石であるActiveSupportにあります。
ここですべてを説明しようとしても意味がありません。Railsガイドを紹介します。それらに精通した後、必要に応じてドキュメントを参照してください。
私は2番目のマテウスです。ActiveSupportは良い例です。ここでいくつかのソースコードファイルを見てください:
https://github.com/rails/rails/tree/master/activesupport/lib/active_support/core_ext
そして、これは典型的で単純な例であり、Rubyの標準のArrayクラスに有用でやや物議を醸すメソッドを追加します。
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/access.rb
ほとんどのRubyライブラリには、「core_ext」、「ext」などの名前のディレクトリがあり、Rubyのコアライブラリを何らかの方法で拡張するメソッドが含まれています。人々は常にメソッドを再発明し、ある意味でActiveSupportはそれらの決定的なコンパイルです。
時間。
Loading development environment (Rails 3.2.3)
1.9.3p125 :001 > Time.
Display all 252 possibilities? (y or n)
Time.module_exec
Time.__delay__ Time.mongo_thread_local_accessor
Time.__id__ Time.name
...
Total = 252
$ irb
1.9.3p125 :001 > Time.
Time.hash Time.private_method_defined?
Time.__id__ Time.include? Time.private_methods
Time.__send__ Time.included_modules Time.protected_instance_methods
...
Total = 93