Как я могу вызвать код во время выполнения из инициализатора 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 реализовали процесс, который можно использовать для динамической установки тегов во время выполнения.
Хотя все еще представляет общий интерес, моя конкретная проблема теперь решена.