Диагностика видимых версий нескольких драгоценных камней, используемых в приложении Rails - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть приложение Rails (v2.5.3), работающее на сервере Puma, в котором используется пользовательский Gem (link_engine). Я сталкиваюсь с проблемой, когда кажется, что несколько версий Gem работают в одном приложении. Журнал стандартного вывода Puma печатает идентификатор экземпляра соединителя в предварительном запросе CORS (кажется, что использует последнюю версию гема), но не в последующем запросе актуальной информации (очевидно, используя старую версию гема). Кроме того, производственный журнал показывает старую версию сообщения Connector Instance is not found., в которой нет with Id:, показанного в файле apartment.rb ниже.

Соответствующий код от apartment.rb (последняя версия гема, 0.1.13):

puts headers.inspect
puts "connector instance: #{headers.with_indifferent_access['Connector-Instance']}"
if headers['Connector-Instance'] == nil
  fail StandardError, "Connector Instance header is not found in the request '#{headers.with_indifferent_access['Connector-Instance']}'"
  return Apartment::Tenant.current
end

# example: look up some tenant from the db based on this request
tenant = LinkEngine::ConnectorInstance.find_by(id: headers.with_indifferent_access['Connector-Instance'])
fail StandardError, "Connector Instance is not found with Id: '#{headers.with_indifferent_access['Connector-Instance']}'" if tenant.blank?
   return tenant.id
end

Из текущего журнала / production.log:

F, [2019-04-18T13:02:52.008520 #1294] FATAL -- : [f9d6b219-71e4-48df-a0a6-61b9b3fe9172] StandardError (Connector Instance is not found):

Из текущего общего ресурса / log / puma.stdout.log:

This is the request path: /api/v1/execution_history
non_restricted_paths are: ["/api/v1/connector_instances", "/health_check"]
{"Accept"=>"application/json", "Accept-Encoding"=>"gzip, ... }
connector instance: 54

This is the request path: /api/v1/tasks
non_restricted_paths are: ["/api/v1/connector_instances", "/health_check"]
{"Accept"=>"application/json", "Accept-Encoding"=>"gzip, ... }
connector instance: 54

This is the request path: /api/v1/settings
non_restricted_paths are: ["/api/v1/connector_instances", "/health_check"]
{"Accept"=>"application/json", "Accept-Encoding"=>"gzip, ... }
connector instance: 54

This is the path: /api/v1/execution_history
non_restricted_paths: ["/api/v1/connector_instances", "/health_check"]
{"Accept"=>"application/json", "Accept-Encoding"=>"gzip, ... }

This is the path: /api/v1/tasks
non_restricted_paths: ["/api/v1/connector_instances", "/health_check"]
{"Accept"=>"application/json", "Accept-Encoding"=>"gzip, ... }

This is the path: /api/v1/settings
non_restricted_paths: ["/api/v1/connector_instances", "/health_check"]
{"Accept"=>"application/json", "Accept-Encoding"=>"gzip, ... }

И Gemfile, и Gemfile.lock отражают последнюю версию gem (0.1.13). Я вручную удалил все предыдущие версии гема, перезапустил службу puma и даже выполнил полную перезагрузку сервера.

Мое лучшее предположение заключается в том, что Puma где-то кэширует версию драгоценного камня, которую я не могу найти, и использую ее вместо последней версии. Я провел глобальный поиск того, к чему у пользователя приложения есть доступ для чтения, и я нашел только последнюю версию Gem. Кто-нибудь имел дело с чем-то подобным?

Рассматриваемый самоцвет устанавливается как Rails Engine, если это имеет значение.

...