2

Ruby Gemの「メール」を使用していると、オブジェクトを初期化せずに変数を格納する方法について混乱していますか?例えば:

Mail.defaults do
  retriever_method :pop3, :address    => "pop.gmail.com",
                          :port       => 995,
                          :user_name  => '<username>',
                          :password   => '<password>',
                          :enable_ssl => true
end

その後、などのメソッドを呼び出しMail.firstて、設定されたデフォルトでメールボックス内の最初のメッセージを返すようにすることができます。

Rubyのすべてがオブジェクトであり、クラスであっても、呼び出されたときに、実際に作成されて狂っrequire 'mail'たオブジェクトを含むオブジェクトをプログラムで使用できるようになりますか?class Mailここで何が起こっているのですか?

4

1 に答える 1

1

の内容は、ステートメントを含むmail.rbファイルにロードされます。require 'mail'

gemを確認した後、モジュールmail.rbが含まれます。Mailモジュールには、他の多くのrequireステートメントが含まれます。

mail.rb

module Mail
  ## skipped for brevity

  # Finally... require all the Mail.methods
  require 'mail/mail'
end

mail / mail.rb

module Mail
  ## skipped for brevity

  # Receive the first email(s) from the default retriever
  # See Mail::Retriever for a complete documentation.
  def self.first(*args, &block)
    retriever_method.first(*args, &block)
  end
end

そのため、メソッドはプログラムで利用できるようになります。

于 2012-09-07T18:09:27.013 に答える