gorynich 1.1.0.142046 → 1.1.0.142136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +14 -14
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ea478dfe8db1b6a076f7d6a644daaca8548184ec23f09a3d741f6af8ebcfb3e3
|
|
4
|
+
data.tar.gz: 785d8557531806da8cd9752258568b0c9825fbbf5816b055729af974b7d2586a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a755a9cafbc3f487d076a761a42800e25216a72a63a5ba610604126a7530c8092adfad6db6da64e2bb314619469a18d86c198bbdfb23d291be3f5395f7579f55
|
|
7
|
+
data.tar.gz: 6f30b45a2c47a0ba926d45940e4f6a6c1c22bf23cf8e8ebe3208324ae8c1cc111c5804b53cd422f3700538f4a8465d44116ab4f52a2bfe2cc352794506b045c2
|
data/README.md
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
|
-
`Gorynich` это гем для реализации [мультитенантности](https://ru.wikipedia.org/wiki/Мультиарендность) (мультиарендности) в Ruby on Rails приложении. Позволяет обеспечить строгую изоляцию данных в нескольких СУБД, поддерживаемых в ActiveRecord.
|
|
17
|
+
`Gorynich` - это гем для реализации [мультитенантности](https://ru.wikipedia.org/wiki/Мультиарендность) (мультиарендности) в Ruby on Rails приложении. Позволяет обеспечить строгую изоляцию данных в нескольких СУБД, поддерживаемых в ActiveRecord.
|
|
18
18
|
|
|
19
|
-
Поскольку мультитенантное приложение тесно связано с
|
|
19
|
+
Поскольку мультитенантное приложение тесно связано с разделением данных, которые в свою очередь могут находиться в разных источниках (СУБД, S3, Redis и пр.), а также с их обработкой в разных подсистемах (ActiveJob, ActionCable), мы выбрали название ["Горыныч"](https://ru.wikipedia.org/wiki/Змей_Горыныч), чтобы подчеркнуть ~многоголовость~ многогранность интеграций.
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -32,7 +32,7 @@ Since a multi-tenant application is closely related to the separation of data, w
|
|
|
32
32
|
|
|
33
33
|
## Возможности / Features
|
|
34
34
|
|
|
35
|
-
- Прозрачное переключение БД/СУБД на основании данных
|
|
35
|
+
- Прозрачное переключение БД/СУБД на основании данных запросов / Transparent request based DB/DBMS switching
|
|
36
36
|
- Интеграция с / Integrations:
|
|
37
37
|
- ActiveRecord
|
|
38
38
|
- ActionCable
|
|
@@ -61,7 +61,7 @@ If you'd rather install `Gorynichr` using bundler, add a line for it in your `Ge
|
|
|
61
61
|
gem 'gorynich'
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Затем
|
|
64
|
+
Затем выполните / Then run:
|
|
65
65
|
|
|
66
66
|
```sh
|
|
67
67
|
bundle install # для установки гема / gem installation
|
|
@@ -71,7 +71,7 @@ rails generate gorynich:install # для добавления шаблонов
|
|
|
71
71
|
|
|
72
72
|
## Что такое тенант? / What tenant is?
|
|
73
73
|
|
|
74
|
-
Тенант в данном случае это активное подключение к СУБД, а также доступный в любом месте объект `Gorynich::Current`, в котором находятся параметры текущего тенанта. К нему можно обратиться в любом месте.
|
|
74
|
+
Тенант (в данном случае) - это активное подключение к СУБД, а также доступный в любом месте объект `Gorynich::Current`, в котором находятся параметры текущего тенанта. К нему можно обратиться в любом месте.
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
@@ -92,7 +92,7 @@ end
|
|
|
92
92
|
|
|
93
93
|
Перед обработкой запроса с помощью [Gorynich::Rack::RackMiddleware](./lib/gorynich/head/rack_middleware.rb) соединение Active Record переключается на указанную БД, а с помощью [ActiveSupport::CurrentAttributes](https://api.rubyonrails.org/classes/ActiveSupport/CurrentAttributes.html) в любом месте приложения становятся доступны дополнительные параметры через обращение к `Gorynich::Current`. ActionCable, ActiveJob и другие "головы" используют настройки из `Gorynich::Current` для сохранения контекста и дальнейшего исполнения.
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
Например, при отправке писем изнутри ActiveJob использование выглядит так:
|
|
96
96
|
|
|
97
97
|
---
|
|
98
98
|
|
|
@@ -212,7 +212,7 @@ end
|
|
|
212
212
|
TENANT=tenant rails gc # default tenant name id 'default'
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
Для создания статичного файла `database.yml` из источника данных (Fetcher)
|
|
215
|
+
Для создания статичного файла `database.yml` из источника данных (Fetcher) используйте:
|
|
216
216
|
|
|
217
217
|
---
|
|
218
218
|
|
|
@@ -240,7 +240,7 @@ rails gc:db:prepare
|
|
|
240
240
|
|
|
241
241
|
2. Полуавтоматический режим / Semi-automated mode
|
|
242
242
|
|
|
243
|
-
Второй вариант это создание конфигурации `database.yml` при старте Rails приложения - данные
|
|
243
|
+
Второй вариант - это создание конфигурации `database.yml` при старте Rails приложения - данные будут прочитаны из настроенного источника. В этом случае конфигурация СУБД может изменяться только при перезапуске приложения, но остальные настройки, такие как привязка тенантов к доменам и secrets, будут подхватываться "на лету" непосредственно во время работы приложения. Rake-задачи `db:create`, `db:migrate` работают для всех тенантов на момент запуска.
|
|
244
244
|
|
|
245
245
|
---
|
|
246
246
|
|
|
@@ -257,9 +257,9 @@ Second option is dynamic `database.yml` creation while starting Rails applicatio
|
|
|
257
257
|
<%= Gorynich.instance.database_config %>
|
|
258
258
|
```
|
|
259
259
|
|
|
260
|
-
3. Дополнительные БД / Additional
|
|
260
|
+
3. Дополнительные БД / Additional databases
|
|
261
261
|
|
|
262
|
-
Если вам нужны дополнительные БД, не являющиеся тенантами,
|
|
262
|
+
Если вам нужны дополнительные БД, не являющиеся тенантами, например общая БД, то в `database.yml` можно дописать всё необходимое, как в обычном Rails приложении:
|
|
263
263
|
|
|
264
264
|
---
|
|
265
265
|
|
|
@@ -282,13 +282,13 @@ your_database:
|
|
|
282
282
|
```
|
|
283
283
|
|
|
284
284
|
### В коде / Inside code
|
|
285
|
-
|
|
285
|
+
Проверить, в каком вы тенанте, можно с помощью / Check in which tenant you are:
|
|
286
286
|
|
|
287
287
|
```ruby
|
|
288
288
|
Gorynich::Current.tenant
|
|
289
289
|
```
|
|
290
290
|
|
|
291
|
-
Переключение тенантов работает
|
|
291
|
+
Переключение тенантов работает автоматически, и внутри Rails приложения не нужно предпринимать никаких дополнительных действий - вы всегда подключены к той базе данных, к которой привязан домен текущего запроса (или иной параметр). Но если необходимо явно выполнить действия в контексте конкретного тената, это можно сделать:
|
|
292
292
|
|
|
293
293
|
---
|
|
294
294
|
|
|
@@ -306,7 +306,7 @@ Switching tenants is automatic and no additional steps need to be taken inside a
|
|
|
306
306
|
end
|
|
307
307
|
```
|
|
308
308
|
|
|
309
|
-
## Примеры дополнительных интеграций и
|
|
309
|
+
## Примеры дополнительных интеграций и использований / Additional integration examples
|
|
310
310
|
|
|
311
311
|
### Redis / Rails.cache
|
|
312
312
|
|
|
@@ -386,7 +386,7 @@ class ApplicationController < ActionController::Base
|
|
|
386
386
|
def around_action_notification(&block)
|
|
387
387
|
ActiveSupport::Notifications.instrument(
|
|
388
388
|
'around_action.action_controller',
|
|
389
|
-
current_user:
|
|
389
|
+
current_user: current_user,
|
|
390
390
|
request: request,
|
|
391
391
|
tenant: Gorynich::Current.tenant, &block
|
|
392
392
|
)
|