如何从 Rail 初始值设定项在 运行 时调用代码?
How can I call code at run-time from a Rail initializer?
我在使用分片数据库的应用程序中使用 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
?
谷歌搜索还没有找到任何结果。
通过功能请求,Raygun 的人员已经实现了一个可用于在运行时动态设置标签的过程。
虽然大家仍然很感兴趣,但我的具体问题现在已经解决了。
我在使用分片数据库的应用程序中使用 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
?
谷歌搜索还没有找到任何结果。
通过功能请求,Raygun 的人员已经实现了一个可用于在运行时动态设置标签的过程。
虽然大家仍然很感兴趣,但我的具体问题现在已经解决了。