Ответ 1
Шестисторонний вопрос! О, мой. Пусть г-н рулон. 1 В этом случае я надеюсь, что я получу в 6 раз больше очков для него?:)
1. MyApp - это модуль?
Да, это модуль. Он действует как "контейнер" для всех вещей, относящихся к вашему приложению. Например, вы можете определить класс следующим образом:
module MyApp
class MyFunClass
def my_fun_method
end
end
end
Тогда, если у кого-то есть MyFunClass
, он не будет мешать вашему MyFunClass
. Это просто отличный способ отделить код.
2. MyApp:: Приложение - это...? Что, модуль тоже?
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
или одном из двух других файлов в этом каталоге, но в основном все они используют те же параметры, что и в Configuration Руководство, связанное с ранее.
4. config - переменная? Как это увидеть на консоли?
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. Единица без знака равенства называется "геттером". Этот метод устанавливает альтернативный журнал для рабочей среды в 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 Ужасная шутка.