объявление класса для ruby - PullRequest
1 голос
/ 11 июля 2010

Я новичок в рубине и рельсах.

в RoR3 контроллер наследуется от ActionController::Base

request.env["SERVER_ADDR"]

поэтому запрос - это метод в базовом классе (то есть внутри модуля ActionController)?

что такое env тогда и ["SERVER_ADDR"]?

было бы здорово, если бы кто-нибудь смог сделать небольшой пример кода ... это было бы очень полезно понять!

спасибо!

Ответы [ 2 ]

1 голос
/ 11 июля 2010
request.env["SERVER_ADDR"]
  1. request равно либо

    а. разыменование локальной переменной request или

    б. отправка сообщения :request без аргументов неявному получателю self,

  2. env отправляет сообщение :env без аргументов объекту, полученному путем разыменования request или объекту, возвращенному в ответ на отправку сообщения :request на self на шаге 2,
  3. ["SERVER_ADDR"] отправляет сообщение :[] с аргументом "SERVER_ADDR" объекту, возвращенному в ответ на отправку сообщения :env на шаге 2 и
  4. "SERVER_ADDR" - строковый литерал.

Вы могли бы более явно написать это так:

self.request.env.[]("SERVER_ADDR")

или даже более явно, как это:

self.request().env().[]("SERVER_ADDR")

и даже полный:

self.send(:request).send(:env).send(:[], "SERVER_ADDR")
1 голос
/ 11 июля 2010

request.env["SERVER_ADDR"] также можно записать как request().env()["SERVER_ADDR"].Итак, env - это метод, который вызывается без аргументов для объекта, возвращаемого request(), а затем вы вызываете [] для объекта, возвращаемого этим аргументом "SERVER_ADDR".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...