2023-07-12 07:47:08 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-02-09 22:04:47 +00:00
|
|
|
enabled = ENV['ES_ENABLED'] == 'true'
|
|
|
|
host = ENV.fetch('ES_HOST') { 'localhost' }
|
|
|
|
port = ENV.fetch('ES_PORT') { 9200 }
|
2023-10-13 17:00:53 +00:00
|
|
|
user = ENV.fetch('ES_USER', nil).presence
|
|
|
|
password = ENV.fetch('ES_PASS', nil).presence
|
|
|
|
fallback_prefix = ENV.fetch('REDIS_NAMESPACE', nil).presence
|
2018-02-09 22:04:47 +00:00
|
|
|
prefix = ENV.fetch('ES_PREFIX') { fallback_prefix }
|
2024-02-12 09:54:06 +00:00
|
|
|
ca_file = ENV.fetch('ES_CA_FILE', nil).presence
|
2024-02-07 12:09:43 +00:00
|
|
|
|
|
|
|
transport_options = { ssl: { ca_file: ca_file } } if ca_file.present?
|
2018-02-09 22:04:47 +00:00
|
|
|
|
|
|
|
Chewy.settings = {
|
|
|
|
host: "#{host}:#{port}",
|
|
|
|
prefix: prefix,
|
|
|
|
enabled: enabled,
|
|
|
|
journal: false,
|
2021-10-24 15:20:03 +00:00
|
|
|
user: user,
|
|
|
|
password: password,
|
2023-08-14 17:00:56 +00:00
|
|
|
index: {
|
|
|
|
number_of_replicas: ['single_node_cluster', nil].include?(ENV['ES_PRESET'].presence) ? 0 : 1,
|
|
|
|
},
|
2024-02-07 12:09:43 +00:00
|
|
|
transport_options: transport_options,
|
2018-02-09 22:04:47 +00:00
|
|
|
}
|
|
|
|
|
2020-12-22 16:13:55 +00:00
|
|
|
# We use our own async strategy even outside the request-response
|
2021-11-26 07:30:02 +00:00
|
|
|
# cycle, which takes care of checking if Elasticsearch is enabled
|
2020-12-22 16:13:55 +00:00
|
|
|
# or not. However, mind that for the Rails console, the :urgent
|
|
|
|
# strategy is set automatically with no way to override it.
|
2023-04-03 13:05:39 +00:00
|
|
|
Chewy.root_strategy = :bypass_with_warning if Rails.env.production?
|
2022-05-18 21:29:14 +00:00
|
|
|
Chewy.request_strategy = :mastodon
|
2019-09-30 23:19:11 +00:00
|
|
|
Chewy.use_after_commit_callbacks = false
|
2018-02-09 22:04:47 +00:00
|
|
|
|
2021-11-26 07:30:02 +00:00
|
|
|
# Elasticsearch uses Faraday internally. Faraday interprets the
|
2020-04-17 13:14:24 +00:00
|
|
|
# http_proxy env variable by default which leads to issues when
|
|
|
|
# Mastodon is run with hidden services enabled, because
|
2021-11-26 07:30:02 +00:00
|
|
|
# Elasticsearch is *not* supposed to be accessed through a proxy
|
2020-04-17 13:14:24 +00:00
|
|
|
Faraday.ignore_env_proxy = true
|