Undr

На память

Настройка Rails приложений

1 Star2 Stars3 Stars4 Stars5 Stars (2 голосов, средний: 5.00 из 5)
Loading ... Loading ...

without comments

Перевод: Configuring Rails Applications

Это руководство описывает настройку Rails приложений, и инициализацию разных возможностей, доступных для Rails приложений . Прочтя это руководство, Вы сможете:

  • Корректировать поведение своих Rails приложений
  • Добавлять дополнительный код, который будет выполнен на этапе загрузки приложения

1 Местоположения кода инициализации

Rails предлагает как минимум пять возможных мест для размещения кода, который должен будет выполнен на этапе загрузки приложения:

  • Предварительные инициализаторы
  • environment.rb
  • Конфигурационные файлы, зависящие от среды окружения
  • Инициализаторы (load_application_initializers)
  • Пост-инициализаторы

2 Использование предварительных инициализаторов

Rails позволяет использовать предварительный инициализатор, чтобы выполнить код до того, как сам фреймворк будет загружен. Файл RAILS_ROOT/config/preinitializer.rb, если он есть, всегда загружается первым, перед любым компонентом фреймворка (Active Record, Action Pack, и так далее.), Если Вы хотите изменить поведение одного из классов, который используется в процессе инициализации, Вы можете сделать это в этом файле.

3 Настройка компонентов Rails

В сущности настройка Rails, это настройка его компонентов. Файл environment.rb кнфигурационные файлы зависимые от среды окружения (такие как config/environments/production.rb) позволяют Вам определить разные настройки компонентов фреймворка. К примеру, по-умолчанию в Rails 2.3 файл environment.rb содержит:

config.time_zone = 'UTC'

Это опция непосредственно для фреймворка. Если Вы хотите определить опцию для конкретного компонента фреймворка, Вы можете использовать тот же объект:

config.active_record.colorize_logging = false

Эта настройка оттносттся непосредственно к Active Record.

3.1 Настройка Active Record

ActiveRecord::Base имеет следующие опции:

  • logger принимает регистрирующий объект, с интерфейсом Log4r или стандартный для Ruby 1.8.x класс Logger, который передается любым соединениям Active Record. Вы можете получить к нему доступ используя метод ActiveRecord.logger. Установка nil отключит регистрацию событий.

  • primary_key_prefix_type позволяет устанавливать название колонки являющейся первичным ключом. По умолчанию Rails считает что эти колонки называются id. Существуют два других варианта:

    • :table_name использует для первичного ключа модели Customer поле с именем customerid
    • :table_name_with_underscore использует для первичного ключа модели Customer поле с именем customer_id
  • table_name_prefix позволяет определить строку, которая будет добавляться спереди ко всем именам таблиц в БД. Если Вы установите опицию в ActiveRecord::Base.table_name_prefix = "northwest_", то таблица класса Customer будет northwest_customers. По-умолчанию пустая строка.

  • table_name_suffix позволяет определить строку, которая будет добавляться сзади ко всем именам таблиц в БД. Если Вы установите опицию в ActiveRecord::Base.table_name_suffix = "_northwest", то таблица класса Customer будет customers_northwest. По-умолчанию пустая строка.

  • pluralize_table_names определяет будут ли использоваться имена таблиц во множественном числе или в единственном. Если установить в true(по-умолчанию), то модель Customer будет иметь таблицу customers. Если установить в false, то модель Customer будет иметь таблицу customer.

  • colorize_logging (по-умолчанию true) определяет будут ли использоваться или нeт ANSI-коды цветов при протоколировании событий через ActiveRecord.

  • default_timezone определяет будет ли использоваться Time.local (если установленно в :local) или Time.utc (если установленно в :utc) при инициализации полей модели, содержащих дату или время. По-умолчанию :local.

  • schema_format определяет формат в котором будет храниться схема БД в файле. Если указать :ruby (по-умолчанию), то будет использоваться независимый от конкретной БД формат, основанный на миграциях, если :sql, то будет использоваться формат основанный на SQL выражениях используемой БД.

  • timestamped_migrations определяет нумерацию миграций: последовательная нумерация или временная метка. По-умолчанию стоит trueи используются временные метки, что более предпочтительно в случае, если над приложением работает несколько разработчиков.

  • lock_optimistically указывает ActiveRecord использовать оптимистическую блокировку. По-умолчанию true.

MySQL адаптер имеет дополнительные опции:

  • ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans указывает ActiveRecord что в булевы значения нужно хранить в колонках с типом tinyint(1). By default this is true.

Дампер схемы БД, тоже имеет дополнительные опции:

  • ActiveRecord::SchemaDumper.ignore_tables определяет массив таблиц которые не должны описываться в создаваемой схеме БД. Эта опция игнорируется при ActiveRecord::Base.schema_format == :ruby.

3.2 Настройка Action Controller

ActionController::Base имеет следующие опции:

  • asset_host определяет строку которая добавляется ко всем URL сгенерированным хелперами из AssetHelper. Это позволит перенести весь javascript, CSS и изображения на отдельный хост.

  • consider_all_requests_local обычно установленно в true во время разработки и в false во время промышленной работы; Если установить в true, то все ошибки будут детально выводиться в браузер. Для более тонкой настройки установите опцию в false и определите метод local_request? для определения того, какой запрос должен выводить детальную информацию, а какой нет.

  • allow_concurrency должен быть установлен в true чтобы позволить ActionController параллельную (threadsafe) обработку запросов . По-умолчанию установленно в false. Вы вероятно не будете пользоваться этим напрямую, потому что необходима серия других настроек, чтобы параллельная обработка заработала. Вместо этого можно просто вызвать config.threadsafe! внутри файла production.rb, это включит все необходимые настройки для безопасной параллельной обработки запросов.

Параллельная обработка запросов не совместима с нормальной работой в в режиме разработки. В частности, если вы используете config.threadsafe!, не работает автоматическая загрузка зависимостей и перезагрузка классов.

  • param_parsers определяет массив обработчиков, которые могут извлекать информацию из входящих HTTP запросов и добавлять ее в хэш params. По-умолчанию, активны парсеры для multipart форм, URL-encoded форм, XML и JSON.

  • default_charset определяет кодировку по умолчанию для отрисовки шаблонов. По-умолчанию это “utf-8″.

  • logger принимает регистрирующий объект, с интерфейсом Log4r или стандартный для Ruby 1.8.x класс Logger, используемый для протоколирования в Action Controller. Вы можете получить к нему доступ используя метод ActionController::Base.logger. Установка nil отключит регистрацию событий.

  • resource_action_separator определяет символ который используется как разделитель между ресурсами и действиями при генерации и распозновании RESTfull URL. По-умолчанию это “/”.

  • resource_path_names определяет хэш с именами RESTfull действий.

  • request_forgery_protection_token sets the token parameter name for RequestForgery. Calling protect_from_forgery sets it to :authenticity_token by default.

  • optimise_named_routes включает некоторую оптимизацию при генерации таблицы маршрутов. Оптимизация включена по-умолчанию.

  • use_accept_header sets the rules for determining the response format. If this is set to true (the default) then respond_to and Request#format will take the Accept header into account. If it is set to false then the request format will be determined solely by examining params[:format]. If there is no format parameter, then the response format will be either HTML or Javascript depending on whether the request is an AJAX request.

  • allow_forgery_protection включает защиту от CSRF. По-умолчанию защита выключена в тестовом режиме и включена во всех остальных.

  • relative_url_root используется чтобы сообщить Rails, что он установлен в поддиректорию. По-умолчанию имеет значение переменной окружения ENV['RAILS_RELATIVE_URL_ROOT'].

Настройки кэширования имеют дополнительные опции:

  • ActionController::Caching::Pages.page_cache_directory определяет директорию где Rails будет создавать кэшированные страницы Вашего сайта. По-умолчанию это Rails.public_path ( то есть обычно RAILS_ROOT + “/public”).

  • ActionController::Caching::Pages.page_cache_extension определяет расширение для файлов генерируемых при кэшировании (эта опция игнорируется если входящий запрос уже имеет расширение). По-умолчанию это .html.

Диспетчер имеет такие опции:

  • ActionController::Dispatcher.error_file_path задает путь к папке где Rails ищет файлы ошибок, такие как 404.html. По-умолчанию это Rails.public_path.

Хранение сессий в Active Record тоже может быть настроено:

  • CGI::Session::ActiveRecordStore::Session.data_column_name определяет имя колонки в которой хранятся данные сессии. По-умолчанию “data”

3.3 Настройка Action View

ActionView::Base имеет следующие опции:

  • debug_rjs включает для RJS ответов обертку из try/catch блока в котором alert()ится сообщение об ошибке (and then re-raises it). По-умолчанию выключено.

  • warn_cache_misses сообщает Rails о том, что нужно показывать сообщения, если кэш для данного действия отсутствует. По умолчанию выключено.

  • field_error_proc provides an HTML generator for displaying errors that come from Active Record. The default is Proc.new{ |html_tag, instance| “”fieldWithErrors\“>#{html_tag}

” }

  • default_form_builder сообщает Rails какой генератор веб-форм использовать по-умолчанию. По-умолчанию это ActionView::Helpers::FormBuilder.

The ERB шаблонизатор определяет дополнительные опции:

  • ActionView::TemplateHandlers::ERB.erb_trim_mode определяет режим ERB, обрезающий переносы строк. По-умолчанию это ‘-’. Смотри ERB документацию для детальной информации.

3.4 Настройка Action Mailer

ActionMailer::Base имеет следующие опции:

  • template_root задает конревую папку для шаблонов используемых Action Mailer.

  • logger принимает регистрирующий объект, с интерфейсом Log4r или стандартный для Ruby 1.8.x класс Logger, используемый для протоколирования в Action Mailer. Вы можете получить к нему доступ используя метод ActionMailer::Base.logger. Установка nil отключит регистрацию событий.

  • smtp_settings позволяет детально настроить :smtp метод отправки писем. Содержит хэш из следующих значений:

    • :address – Адрес удаленного почтового сервера. По-умолчанию “localhost”.
    • :port – Если Ваш SMTP сервер работает не на 25 порту, то укажите порт тут.
    • :domain – Если требуется указать HELO домен.
    • :user_name – Если SMTP сервер требует авторизацию, то укажите тут имя пользователя.
    • :password – Если SMTP сервер требует авторизацию, то укажите тут пароль.
    • :authentication – Если SMTP сервер требует авторизацию, то укажите тут тип авторизации. Один из: :plain, :login, :cram_md5.
  • sendmail_settings позволяет детально настроить :sendmail метод отправки писем. Содержит хэш из следующих значений:

    • :location – Путь до sendmail. По-умолчанию: /usr/sbin/sendmail.
    • :arguments – параметры коммандной строки, с которыми вызовется sendmail. По-умолчанию: -i -t.
  • raise_delivery_errors включает выброс исключения если доставка письма небыла завершена. По-умолчанию: true.

  • delivery_method определяет метод отправки писем. Один из: :smtp (default), :sendmail, and :test.

  • perform_deliveries определяет будет ли фактически отправленно письмо. По-умолчанию true; Для тестов удобно отключать отправку, устанавливая опцию в false.

  • default_charset сообщает Action Mailer в какой кодировке передать письмо. По-умолчанию: utf-8.

  • default_content_type определяет content type используемый для основной части письма. По-умолчанию “text/plain”

  • default_mime_version Версия MIME. По-умолчанию: 1.0.

  • default_implicit_parts_order – Если письмо состоит из разных частей (html, plaintext…) имеющих свой content type, то эта опция определяет порядок в котором они будут следовать в письме. По-умолчанию: ["text/html", "text/enriched", "text/plain"].

3.5 Настройка Active Resource

ActiveResource::Base имеет следующие опции:

  • logger принимает регистрирующий объект, с интерфейсом Log4r или стандартный для Ruby 1.8.x класс Logger, используемый для протоколирования в Active Resource. Вы можете получить к нему доступ используя метод ActiveResource::Base.logger. Установка nil отключит регистрацию событий.

3.6 Настройка Active Support

ActiveSupport::Base имеет следующие опции:

  • ActiveSupport::BufferedLogger.silencer is set to false to disable the ability to silence logging in a block. The default is true.

  • ActiveSupport::Cache::Store.logger определяет регистрирующий объект, с интерфейсом Log4r или стандартный для Ruby 1.8.x класс Logger, используемый для протоколирования операций связанных с кэшированием.

  • ActiveSupport::Logger.silencer is set to false to disable the ability to silence logging in a block. The default is true.

3.7 Настройка Active Model

Active Model на сегодняшний момент имеет только одну опцию:

  • ActiveModel::Errors.default_error_messages – это массив содержащий сообщения об ошибках, возникающих при проверке данных моделей.

4 Использование инициализаторов

После того, как загружается фреймворк и все гемы и плагины Вашего приложения, Rails обращается к инициализаторам. Инициализатор – это любой ruby файл, сохраненный в директории /config/initializers Вашего приложения. Вы можете использовать инициализаторы, чтобы выполнить любой код после загрузки фреймворка, гемов и плагинов.

Для организации Ваших инициализаторов Вы можете использовать подпапки, Rails загрузит файлы из всех вложенных директорий, начиная с /config/initializers.

Если Вам нужно загружать файлы в определенном порядке, то называйте файлы соответственно, потому что Rails загружает их отсортировав по названию. Например, 01_critical.rb будет загружен раньше, чем 02_normal.rb.

5 Использование пост-инициализаторов

Пост-инициализаторы выполняются после того, как любые инициализаторы загружены. Вы можете вставить блок after_initialize (или массив таких блоков), в любом файле конфигурации Rails:

config.after_initialize do  
  SomeClass.init
end

Некоторые части приложения, особенно наблюдатели или маршрутизация, еще не определены в месте вызова after_initialize.

6 Параметры настройки среды Rails

Некоторые части Rails могут также быть настроены используя переменные среды. Вот список переменных среды, которые распознанаются различными частями Rails:

  • ENV['RAILS_ENV'] определяет режим работы Rails (production, development, test, или другие) в котором он будет запущен.

  • ENV['RAILS_RELATIVE_URL_ROOT'] используется маршрутизацией, чтобы распознать URL, когда Ваше приложение запускается в поддиректории.

  • ENV["RAILS_ASSET_ID"] отменяет, создаваемую по-умолчанию, временную метку передываемую как параметр для файлов css и javascript, чтобы исключить кэширование.

  • ENV["RAILS_CACHE_ID"] и ENV["RAILS_APP_VERSION"] используется для генерации расширенных ключей для кеширования в Rails. Позволяет создавать несколько отдельных кешей для одного и того же приложения.

  • ENV['RAILS_GEM_VERSION'] определяет версию гема Rails, если константа RAILS_GEM_VERSION не определена в environment.rb.

7 Изменения

  • 13 Октября 2009: Перевод сделан Лепешкиным Андреем
  • 3 Января, 2009: Первая черновая редакция сделана Mike Gunderloy
  • 5 Ноября, 2008: Набросок сделан Mike Gunderloy

Написал undr ()

13 октября 2009 в 13:03

Оставьте комментарий