Как я могу вызвать код во время выполнения из инициализатора Rail?

Я использую Raygun для отслеживания ошибок в приложении, которое использует защищенную базу данных. Отдельные клиенты хранят свои данные на собственном осколке сервера БД.

rails c
1> MultiSite.get_shard
#=> master
2> Post.count
#=> 0
3> MultiSite.set_shard :client1_prod
#=> nil
4> MultiSite.get_shard
#=> client1_prod
5> Post.count
#=> 123

При использовании Raygun я могу установить теги ошибок с помощью Raygun config/initializers/raygun.rb:

Raygun.setup do |config|
  config.api_key = LOCAL_SETTINGS["raygun_token"]
  config.filter_parameters = Rails.application.config.filter_parameters
  config.version = EnvironmentInformation.get_version
  config.tags = [
                  EnvironmentInformation.get_server_name,
                  EnvironmentInformation.get_version,
                  EnvironmentInformation.get_commit_hash,
                  EnvironmentInformation.shard_name
                ]
  config.enable_reporting = true
end

Так вот, я пытаюсь использовать EnvironmentInformation.shard_name чтобы сказать мне, какой клиент (какой осколок) испытывает ошибку, чтобы я мог отфильтровать этот тег в приложении Raygun.

К сожалению, при запуске приложения (когда выполняется код в этом инициализаторе), мы все еще находимся на master осколок. Это означает, что Raygun помечает каждую ошибку как master осколок.

Можно ли как-то изменить свой инициализатор, чтобы я мог позвонить EnvironmentInformation.shard_name когда ошибка действительно происходит?

Погуглить вокруг еще ничего не придумало.

1 ответ

Решение

Посредством запроса функций ребята из Raygun реализовали процесс, который можно использовать для динамической установки тегов во время выполнения.

Хотя все еще представляет общий интерес, моя конкретная проблема теперь решена.

https://raygun.com/thinktank/suggestion/94060

Другие вопросы по тегам