自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Sentry 開發(fā)者貢獻(xiàn)指南-Feature Flag

開發(fā) 前端
功能 flag 在 Sentry 的代碼庫中聲明。對(duì)于自托管用戶,這些標(biāo)志然后通過 sentry.conf.py 進(jìn)行配置。對(duì)于 Sentry 的 SaaS 部署,F(xiàn)lagr 用于在生產(chǎn)中配置標(biāo)志。

本文轉(zhuǎn)載自微信公眾號(hào)「黑客下午茶」,作者為少。轉(zhuǎn)載本文請(qǐng)聯(lián)系黑客下午茶公眾號(hào)。

功能 flag 在 Sentry 的代碼庫中聲明。對(duì)于自托管用戶,這些標(biāo)志然后通過 sentry.conf.py 進(jìn)行配置。對(duì)于 Sentry 的 SaaS 部署,F(xiàn)lagr 用于在生產(chǎn)中配置標(biāo)志。

您可以通過查看 sentry/features/__init__.py 找到可用的功能列表。它們?cè)?FeatureManager 上聲明如下:

  1. # Don't set entity_feature, or set it to False if you don't plan to use Flagr 
  2. default_manager.add("organizations:onboarding", OrganizationFeature, entity_feature=True

該功能可以在你的 sentry.conf.py 中使用以下內(nèi)容啟用,通常位于 ~/.sentry/:

  1. SENTRY_FEATURES["organizations:onboarding"] = True 

您可以使用 context manager 修改測(cè)試中功能 flag的狀態(tài)。

  • https://develop.sentry.dev/testing/#setting-options-and-feature-flags

創(chuàng)建新的 Feature Flag

確定功能應(yīng)該具有的范圍

功能可以按 organization 和 project 劃分范圍。如果您不確定是否需要 project 功能,請(qǐng)創(chuàng)建一個(gè) organization 級(jí)別。在此示例中,我們將構(gòu)建一個(gè)名為 test-feature 范圍在 organization 級(jí)別的功能。

將您的功能添加到 server.py

conf/server.py 包含應(yīng)用程序中的許多默認(rèn)設(shè)置。在這里,您將添加您的功能,并決定它應(yīng)該保持什么默認(rèn)值,除非用戶指定。

  • https://github.com/getsentry/sentry/blob/master/src/sentry/conf/server.py

SENTRY_FEATURES 字典包含應(yīng)用程序中的所有功能及其相應(yīng)的范圍。默認(rèn)情況下,您的功能應(yīng)處于禁用狀態(tài):

  1. SENTRY_FEATURES = { 
  2.     'organizations:test-feature'False
  3.     'auth:register'True
  4.     # ... 
  5.     'projects:minidump'False

將您的功能添加到 FeatureManager

FeatureManager 處理應(yīng)用程序功能。我們將所有功能添加到 FeatureManager, 包括我們要添加到文件 /src/sentry/features/__init__.py 中的功能類型。

如果您計(jì)劃在生產(chǎn)中使用 flagr, 請(qǐng)?jiān)谔砑庸δ軙r(shí)添加第三個(gè)可選布爾參數(shù),例如:

  • https://develop.sentry.dev/feature-flags/#enabling-your-feature-in-production
  1. default_manager.add('organizations:test-feature', OrganizationFeature, True

如果您不打算使用 flagr,請(qǐng)不要傳遞這第三個(gè)參數(shù),例如:

  1. default_manager.add('organizations:test-feature', OrganizationFeature) 

將其添加到 Organization Model Serializer

Organization model serializer (src/sentry/api/serializers/models/organization.py) 構(gòu)建了一個(gè)名為 feature_list 的列表,供前端使用。默認(rèn)情況下,檢查所有功能,并將存在的功能添加到列表中。如果您的功能需要額外的自定義邏輯,則必須更新 organization serializer

使用 Model Flag(不太常見)

有時(shí) model 上的 flag 用于指示 feature flag,如下所示。除非有特定原因需要更改 model,否則不建議這樣做。例如,require_2fa flag 會(huì)影響后端的行為以強(qiáng)制執(zhí)行 two-factor 身份驗(yàn)證。

  1. feature_list = [] 
  2.  
  3. if getattr(obj.flags, 'allow_joinleave'): 
  4.     feature_list.append('open-membership'
  5. if not getattr(obj.flags, 'disable_shared_issues'): 
  6.     feature_list.append('shared-issues'
  7. if getattr(obj.flags, 'require_2fa'): 
  8.     feature_list.append('require-2fa'

檢查您的功能

在 Python 代碼中

FeatureManager 的 has 方法檢查該功能是否存在。 has 方法接收該功能的名稱,即與該功能范圍對(duì)應(yīng)的對(duì)象 (即組織級(jí)別功能的組織或項(xiàng)目級(jí)別功能的項(xiàng)目) 和 actor(又名 user)。在我們的例子中,該功能將添加如下:

  1. if features.has('organizations:test-feature', obj, actor=user): 
  2.     feature_list.append('test-feature'

如果為 organization 和給定的 user 類型啟用了該功能, 則只會(huì)將該 feature 添加到 feature_list 中。請(qǐng)注意,當(dāng)我們將 feature 提供給前端時(shí),我們刪除了 scope 前綴, 我們的 'organizations:test-feature' 變成了 'test-feature'。

在 JavaScript 中

在 Sentry 和 GetSentry 中使用 flag 是有區(qū)別的。在這個(gè)階段,您還沒有準(zhǔn)備好在 GetSentry 中使用您的 feature flag,但您可以在 Sentry 中使用它。

帶有 Feature 組件的聲明性功能

React 使用聲明式編程范式。因此,我們有一個(gè) utility 組件,用于根據(jù) organization/project 可用的 feature 標(biāo)志隱藏組件

  1. import Feature from 'app/components/acl/feature'
  2.  
  3. const toRender = ( 
  4.   <Feature features={['test-feature']}> 
  5.     <MyComponentToFlag /> 
  6.   </Feature> 
  7. ); 

命令式功能 flag 檢查

強(qiáng)制生成 React 組件時(shí)有一些例外(例如表的標(biāo)題/列)。在這樣的情況下,Organization / Project 對(duì)象有一個(gè) feature flag 數(shù)組, 您可以通過以下方式使用它們:

  1. const {organization} = this.props; 
  2.  
  3. // Method 2 
  4. organization.features.includes('test-feature'); // evals to True/False 

在開發(fā)中啟用功能

在 Sentry 中,您可以運(yùn)行 sentry devserver 來查看您在開發(fā)模式下的更改。如果您想查看 feature flag 背后的更改,則需要在本地計(jì)算機(jī)上打開文件 ~/.sentry/sentry.config.py。此文件包含 sentry 應(yīng)用程序的本地設(shè)置,可以查看和編輯。如果您想打開或關(guān)閉 flag,請(qǐng)將其添加到您的配置文件中:

  1. SENTRY_FEATURES['organizations:test-feature'] = True 

其中,SENTRY_FEATURES 將對(duì)應(yīng)于 step 2 中的 SENTRY_FEATURES。如果您希望該功能可用,請(qǐng)將其設(shè)置為 True,否則設(shè)置為 False。

開發(fā)中的 Flagr(Sentry SaaS)

通常,您不需要在開發(fā)中運(yùn)行 flagr 來測(cè)試您的功能標(biāo)記。如果您確實(shí)想運(yùn)行 flagr,則需要運(yùn)行 getsentry:

  • 設(shè)置環(huán)境變量:export SENTRY_USE_FLAGR=true
  • 啟動(dòng)你的 devservices

您可以在 localhost:18000 找到您本地的 flagr 實(shí)例

  • https://develop.sentry.dev/sentry-vs-getsentry/
  • https://develop.sentry.dev/services/devservices/

在生產(chǎn)中啟用您的功能(Sentry SaaS)

功能 flag 在 Sentry 的代碼庫中聲明。對(duì)于自托管用戶,這些 flag 然后通過 sentry.conf.py 進(jìn)行配置。對(duì)于 Sentry 的 SaaS 部署,F(xiàn)lagr 用于在生產(chǎn)中配置 flag。

如果您想為一部分生產(chǎn)用戶啟用您的功能,您需要在 Flagr 中設(shè)置您的功能。如果您尚未確保在 sentry 中添加 flag 時(shí)您通過了第三個(gè)選項(xiàng),以便 Flagr 知道在生產(chǎn)中檢查此功能。

  1. default_manager.add("organizations:onboarding", OrganizationFeature, True)  # NOQA 

 

責(zé)任編輯:武曉燕 來源: 黑客下午茶
相關(guān)推薦

2022-01-17 19:34:43

SentryWeb APISentry API

2022-01-15 23:33:47

SentryPyCharm配置

2022-01-18 23:26:45

開發(fā)

2022-01-02 23:26:08

開發(fā)SDK Sentry

2021-12-15 20:06:48

ReactJSSentry開發(fā)者

2021-12-25 22:31:55

Sentry 監(jiān)控SDK 開發(fā) 性能監(jiān)控

2022-01-21 21:33:03

開發(fā)JavaScript應(yīng)用

2022-01-16 22:16:59

數(shù)據(jù)庫Sentry開發(fā)者

2022-01-13 20:13:31

元宇宙搜索引擎

2022-01-03 22:59:30

開發(fā)SDK數(shù)據(jù)

2021-12-31 18:35:40

監(jiān)控Sentry開發(fā)

2022-01-02 06:59:43

SentrySDK 開發(fā)客戶端報(bào)告

2022-01-19 19:49:53

Sentry瀏覽器SDK

2021-12-16 20:12:37

后端開發(fā)Sentry

2022-01-20 19:49:10

Sentry開發(fā)Scope

2021-12-17 19:15:51

前端蟲洞狀態(tài)

2015-07-22 16:08:46

OpenStack開源貢獻(xiàn)代碼

2018-03-27 23:25:40

Paddle

2019-08-16 10:55:37

開發(fā)者技能AI

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)