Шестисторонний вопрос! О боже. Давайте, кхм, приступим.1 Надеюсь, тогда я получу в 6 раз больше голосов? :)
<сильный>1. MyApp – это модуль?
Да, это модуль. Он действует как «контейнер» для всего, что относится к вашему приложению. Например, вы можете определить такой класс:
module MyApp
class MyFunClass
def my_fun_method
end
end
end
Тогда, если у кого-то еще есть MyFunClass
, он не будет мешать вашему MyFunClass
. Это просто хороший способ отделить код.
<сильный>2. MyApp::Application - это...? Что, тоже модуль?
MyApp::Application
на самом деле является классом, который наследуется от Rails::Application
. Это делает довольно много вещей, включая настройку объекта Rails.application
, который на самом деле является экземпляром MyApp::Application
, с которым вы можете делать всевозможные забавные вещи, такие как запросы к вашему приложению (в сеансе rails console
или rails c
). Этот код, например, сделает фиктивный запрос к корневому пути вашего приложения, возвращая массив 3-х размеров, который является просто ответом Rack:
Rails.application.call(Rack::MockRequest.env_for("/"))
Вы также можете получить маршруты для своего приложения, вызвав это:
Rails.application.routes
Основная цель определения MyApp::Application
заключается не в этих забавных вещах, которые вы, вероятно, никогда не будете использовать, а в том, чтобы вы могли определить конфигурацию для конкретного приложения внутри config/application.rb
. Например, какие параметры фильтруются, часовой пояс приложения или какие каталоги должны загружаться автоматически. Все это описано в Руководстве по настройке Rails.
<сильный>3. MyApp::Application.configure — это метод?
На самом деле это метод, и он позволяет вам добавлять дополнительные параметры конфигурации в конфигурацию вашего приложения после загрузки config/application.rb
. Вы, вероятно, видели, как это используется в config/environments/development.rb
или в одном из двух других файлов в этом каталоге, но в основном все они используют те же параметры, что и в этом Руководство по настройке, ссылка на которое приведена ранее.
<сильный>4. конфиг это переменная? Как это увидеть в консоли?
«Переменная» config
на самом деле является методом, определенным в коде, используемом для Rails::Application
, и возвращает просто объект конфигурации, в котором хранится конфигурация для приложения.
Чтобы получить к нему доступ в консоли, просто используйте Rails.application.config
. Это вернет довольно большой объект Rails::Application::Configuration
для вашего удовольствия.
<сильный>5. config.logger — это ???
Я предполагаю, что метод, о котором вы говорите, исходит из этой строки в config/environments/production.rb
:
# Use a different logger for distributed setups
# config.logger = SyslogLogger.new
Метод в этом примере не config.logger
, а скорее config.logger=
, который в Ruby-land называется методом "setter". Тот, у кого нет знака равенства, называется «геттер». Этот метод устанавливает альтернативный регистратор для производственной среды в Rails, к которому затем можно получить доступ, используя Rails.logger
в консоли или в самом приложении.
Это полезно, если вы хотите что-то вывести в логи, так как вы можете просто вызвать этот код:
Rails.logger.info("DEBUG INFO GOES HERE")
<сильный>6. config.paths.log.first - это ...?? --в консоли я вижу "MyApp::Application.configure.config.paths.log.first", но не знаю, что это значит и как извлечь из него информацию!?!
В приложении Rails вы можете изменить расположение определенных каталогов. Таким образом, этот метод config.paths
является способом отслеживания того, куда эти каталоги сопоставляются. За всю мою жизнь с Rails мне никогда не приходилось использовать или изменять эту переменную, и это может означать одно из двух:
- Он не часто используется программистами Rails или;
- Я живу не очень разнообразной жизнью.
Интерпретируйте это как хотите. Моя главная мысль заключается в том, что вы, вероятно, никогда не будете использовать его.
Я надеюсь, что они помогут вам лучше понять Rails!
1 Ужасная шутка с костями.
person
Ryan Bigg
schedule
15.07.2011