gorynich 1.1.0.142046 → 1.1.0.142139
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -15
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aee7ffe7b4db3dde88e3f9a030c1b20aa62852c2a08c99493c08f32471e9a4b1
|
4
|
+
data.tar.gz: 1578af4b7190c906f81119e9cb5c578b35a242778ad629f6d85d986e3fd28966
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15d3067e236561b87930de7b4f0865129e1dea0d7a576bb461fc84a924d138760050edc823e75108859edd6087bb56834ae4574c7934440f05573849c5c1cfea
|
7
|
+
data.tar.gz: 595cff64c46bf9c29d7384b9a52bab40e2b41e4bb57d3a190437993b6cbeb4a07df567452a0d1d6e96f4a3bb2f4127c30ddc5a8d2111705acc92586a7ed8f3f7
|
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
|
|
@@ -26,13 +26,13 @@ Since a multi-tenant application is closely related to the separation of data, w
|
|
26
26
|
|
27
27
|
<div align="left">
|
28
28
|
<a href="https://rnds.pro/" >
|
29
|
-
<img src="https://library.rnds.pro/repository/public-blob/logo/RNDS.svg" alt="Supported by RNDSOFT" height="
|
29
|
+
<img src="https://library.rnds.pro/repository/public-blob/logo/RNDS.svg" alt="Supported by RNDSOFT" height="60">
|
30
30
|
</a>
|
31
31
|
</div>
|
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
|
)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gorynich
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.0.
|
4
|
+
version: 1.1.0.142139
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Poliev Alexey
|
@@ -364,7 +364,7 @@ files:
|
|
364
364
|
- spec/lib/gorynich_spec.rb
|
365
365
|
- spec/rails_helper.rb
|
366
366
|
- spec/spec_helper.rb
|
367
|
-
homepage: https://
|
367
|
+
homepage: https://github.com/RND-SOFT/gorynich
|
368
368
|
licenses:
|
369
369
|
- MIT
|
370
370
|
metadata: {}
|