Skip to content

Commit

Permalink
Merge pull request #393 from ydakuka/update2105
Browse files Browse the repository at this point in the history
Update 21.05
  • Loading branch information
mikdiet committed Jun 23, 2018
2 parents 6d66da7 + 2442421 commit 3cc6632
Show file tree
Hide file tree
Showing 26 changed files with 353 additions and 189 deletions.
2 changes: 1 addition & 1 deletion .yaspellerrc
Expand Up @@ -100,7 +100,7 @@
"междоменн(ая|ое|ой|ую|ые|ым|ый|ых|ого|ыми)",
"межклиентск(ая|ое|ой|ую|ого|)",
"межсайтов(ая|ое|ой|ом|ую|ые|ым|ый|ых|ого|ыми)",
"местозаполнител(и|ь|ей|ю|ем|ям|ями)",
"местозаполнител(и|ь|ей|я|ю|ем|ях|ям|ями)",
"метатег(а|е|и|у|ах|ов|ом|ами|)",
"минимизатор(ы|а|ов|у|ам|е|ах|)",
"минификатор(ы|а|ов|у|ам|е|ах|)",
Expand Down
2 changes: 1 addition & 1 deletion source/3_0_release_notes.md
Expand Up @@ -230,7 +230,7 @@ Action Pack

Подробнее:
* [Render Options in Rails 3](https://www.engineyard.com/blog/render-options-in-rails-3)
* [Three reasons to love ActionController::Responder](http://weblog.rubyonrails.org/2009/8/31/three-reasons-love-responder)
* [Three reasons to love ActionController::Responder](https://weblog.rubyonrails.org/2009/8/31/three-reasons-love-responder)

### Action Dispatch

Expand Down
2 changes: 1 addition & 1 deletion source/4_0_release_notes.md
Expand Up @@ -47,7 +47,7 @@ $ ruby /path/to/rails/railties/bin/rails new myapp --dev
Основные особенности
--------------------

[![Rails 4.0](/images/rails4_features.png)](/images/rails4_features.png)
[![Rails 4.0](/images/4_0_release_notes/rails4_features.png)](/images/4_0_release_notes/rails4_features.png)

### Апгрейд

Expand Down
2 changes: 2 additions & 0 deletions source/5_2_release_notes.md
Expand Up @@ -45,6 +45,8 @@ Rails 5.2 поддерживает [HTTP/2 Early Hints](https://tools.ietf.org/h

Добавлен файл `config/credentials.yml.enc` для хранения секретов приложения в production. Это разрешает сохранять любые учетные данные аутентификации для сторонних сервисов напрямую в репозиторий, зашифрованный с помощью ключа в файле `config/master.key` или переменной среды `RAILS_MASTER_KEY`. Это в конечном итоге заменит `Rails.application.secrets` и зашифрованные секреты, представленные в Rails 5.1. Кроме того, Rails 5.2 [открывает API соответствующие учетным данным](https://github.com/rails/rails/pull/30940), поэтому можно легко справиться с другими зашифрованными конфигурациями, ключами и файлами.

Подробнее об этом можно узнать в руководстве [Безопасность приложений на Rails](/ruby-on-rails-security-guide#custom-credentials).

### Политика безопасности контента

[Pull Request](https://github.com/rails/rails/pull/31162)
Expand Down
28 changes: 6 additions & 22 deletions source/action_controller_overview.md
Expand Up @@ -399,14 +399,16 @@ class LoginsController < ApplicationController
end
```

Чтобы убрать что-то из сессии, присвойте этому ключу `nil`:
Чтобы убрать что-то из сессии, удалите пару ключ/значение:

```ruby
class LoginsController < ApplicationController
# "Удаляем" логин (при выходе пользователя)
def destroy
# Убираем id пользователя из сессии
@_current_user = session[:current_user_id] = nil
session.delete(:current_user_id)
# Очистить мемоизированного текущего пользователя
@_current_user = nil
redirect_to root_url
end
end
Expand All @@ -425,7 +427,7 @@ Flash - это специальная часть сессии, которая о
```ruby
class LoginsController < ApplicationController
def destroy
session[:current_user_id] = nil
session.delete(:current_user_id)
flash[:notice] = "You have successfully logged out."
redirect_to root_url
end
Expand Down Expand Up @@ -1084,22 +1086,4 @@ NOTE: Некоторые исключения перехватываемы то
Навязывание протокола HTTPS
---------------------------

Иногда хочется навязать определенному контроллеру быть доступным только через протокол HTTPS по причинам безопасности. Можно использовать в контроллере метод `force_ssl` для принуждения к этому:

```ruby
class DinnerController
force_ssl
end
```

Подобно фильтру, можно также передать `:only` и `:except` для обеспечения безопасного соединения только определенным экшнам.

```ruby
class DinnerController
force_ssl only: :cheeseburger
# или
force_ssl except: :cheeseburger
end
```

Пожалуйста, отметьте, что если добавить `force_ssl` во многие контроллеры, то вместо этого можно заставить все приложение использовать HTTPS. В этом случае можно установить `config.force_ssl` в файле окружения.
Если необходимо обеспечить доступ к определенному контроллеру только через HTTPS, нужно сделать это, включив промежуточную программу `ActionDispatch::SSL` через `config.force_ssl` в конфигурациях среды.
4 changes: 2 additions & 2 deletions source/action_view_overview.md
Expand Up @@ -1252,8 +1252,8 @@ password_field_tag 'pass'
Создает радиокнопку; используйте группу радиокнопок с одинаковым именем, чтобы пользователи могли выбирать из группы опций.

```ruby
radio_button_tag 'gender', 'male'
# => <input id="gender_male" name="gender" type="radio" value="male" />
radio_button_tag 'favorite_color', 'maroon'
# => <input id="favorite_color_maroon" name="favorite_color" type="radio" value="maroon" />
```

#### select_tag
Expand Down
24 changes: 11 additions & 13 deletions source/active_record_migrations.md
Expand Up @@ -733,17 +733,15 @@ end
### Для чего нужны файлы схемы?
Миграции, какими бы не были они мощными, не являются авторитетным источником для вашей схемы базы данных. Это роль достается или файлу `db/schema.rb`, или файлу SQL, которые генерирует Active Record при исследовании базы данных. Они разработаны не для редактирования, они всего лишь отражают текущее состояние базы данных.
Миграции, какими бы не были они мощными, не являются авторитетным источником для схемы базы данных. База данных остается авторитетным источником. По умолчанию Rails генерирует `db/schema.rb`, которая пытается охватить текущее состояние схемы базы данных.
Не нужно (это может привести к ошибке) развертывать новый экземпляр приложения, путем воспроизведения всей истории миграций. Намного проще и быстрее загрузить в базу данных описание текущей схемы.
Она имеет тенденцию быть более быстрой и менее подверженной ошибкам, связанным с созданием нового экземпляра базы данных приложения, загружая файл схемы через `rails db:schema:load`, чем при повторном воспроизведении всей истории миграций. Старые миграции могут работать неправильно, если эти миграции используют изменения внешних зависимостей или полагаются на код приложения, который развивается отдельно от этих миграций.
Например, как создается тестовая база данных: текущая рабочая база данных выгружается (или в `db/schema.rb`, или в `db/structure.sql`), а затем загружается в тестовую базу данных.
Файлы схемы также полезны, если хотите быстро взглянуть, какие атрибуты есть у объекта Active Record. Эта информация не содержится в коде модели и часто размазана по нескольким миграциям, но собрана воедино в файле схемы. Имеется гем [annotate_models](https://github.com/ctran/annotate_models), который автоматически добавляет и обновляет комментарии в начале каждой из моделей, составляющих схему, если хотите такую функциональность.
Файлы схемы также полезны, если необходимо быстро посмотреть, какие атрибуты есть у объекта Active Record. Эта информация не содержится в коде модели и часто распределена по нескольким миграциям, но собрана воедино в файле схемы.
### Типы выгрузок схемы
Есть два способа выгрузить схему. Они устанавливаются в `config/environment.rb` в свойстве `config.active_record.schema_format`, которое может быть или `:sql`, или `:ruby`.
Формат выгрузки схемы, сгенерированный Rails, управляется настройкой `config.active_record.schema_format` в `config/application.rb`. Форматом по умолчанию является `:ruby`, но также он может быть установлен в `:sql`.
Если выбрано `:ruby`, тогда схема хранится в `db/schema.rb`. Посмотрев в этот файл, можно увидеть, что он очень похож на одну большую миграцию:
Expand All @@ -765,19 +763,19 @@ ActiveRecord::Schema.define(version: 20080906171750) do
end
```
Во многих случаях этого достаточно. Этот файл создается с помощью проверки базы данных и описывает свою структуру, используя `create_table`, `add_index` и так далее. Так как он не зависит от типа базы данных, он может быть загружен в любую базу данных, поддерживаемую Active Record. Это очень полезно, если Вы распространяете приложение, которое может быть запущено на разных базах данных.
Во многих случаях этого достаточно. Этот файл создается путем проверки базы данных и описывает свою структуру, используя `create_table`, `add_index` и так далее.
NOTE: `db/schema.rb` не может описать специфичные элементы базы данных, такие как триггеры, последовательности, хранимые процедуры, ограничения `CHECK` и так далее. Отметьте, в то время, как в миграциях вы можете выполнить произвольные выражения SQL, эти выражения не смогут быть воспроизведены выгрузчиком схемы. Если вы используете подобные особенности, нужно установить формат схемы `:sql`.
`db/schema.rb` не может описать все, что может поддерживать база данных, например триггеры, последовательности, хранимые процедуры, ограничения `CHECK` и так далее. Отметьте, в то время как в миграциях можно выполнить произвольные выражения SQL, эти выражения не смогут быть воспроизведены выгрузчиком схемы. Если используете подобные особенности, необходимо установить формат схемы как `:sql`, чтобы получить точный файл схемы, который будет полезен для создания новых экземпляров базы данных.
Вместо использования выгрузчика схемы Active Records, структура базы данных будет выгружена с помощью инструмента, предназначенного для этой базы данных (с помощью задачи rails `db:structure:dump`) в `db/structure.sql`. Например, для PostgreSQL используется утилита `pg_dump`. Для MySQL и MariaDB этот файл будет содержать результат `SHOW CREATE TABLE` для разных таблиц.
Когда формат схемы установлен в `:sql`, структура базы данных будет выгружена с помощью инструмента, предназначенного для этой базы данных в `db/structure.sql`. Например, для PostgreSQL используется утилита `pg_dump`. Для MySQL и MariaDB этот файл будет содержать результат `SHOW CREATE TABLE` для разных таблиц.
Загрузка таких схем это просто выполнение содержащихся в них выражений SQL. По определению создастся точная копия структуры базы данных. Использование формата `:sql` схемы, однако, предотвращает загрузку схемы в СУБД иную, чем использовалась при ее создании.
Чтобы загрузить схему из `db/structure.sql`, запустите `rails db:structure:load`. Загрузка этого файла осуществляется путем выполнения содержащихся в нем выражений SQL. По определению создастся точная копия структуры базы данных.
### Выгрузки схем и контроль исходного кода
### Выгрузки схем и управление версиями
Поскольку выгрузки схем это авторитетный источник для вашей схемы базы данных, очень рекомендовано включать их в контроль исходного кода.
Поскольку файлы схемы обычно используются для создания новых баз данных, настоятельно рекомендуется проверять файл схемы в системе управления версиями.
`db/schema.rb` содержит число текущей версии базы данных. Это обеспечивает возникающие конфликты в случае слияния двух веток, каждая из которых затрагивала схему. Когда такое случится, исправьте конфликты вручную, оставив наибольшее число версии.
Конфликты слияния могут возникать в файле схемы, когда две ветки модифицируют схему. Для разрешения этих конфликтов, запустите `rails db:migrate`, чтобы восстановить файл схемы.
(Active Record and Referential Integrity) Active Record и ссылочная целостность
-------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion source/active_record_postgresql.md
Expand Up @@ -342,7 +342,7 @@ create_table :users, force: true do |t|
t.column :settings, "bit(8)"
end

# app/models/device.rb
# app/models/user.rb
class User < ApplicationRecord
end

Expand Down

0 comments on commit 3cc6632

Please sign in to comment.