предупреждение: уже инициализированная константа в config / rout.rb - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть следующий класс в config/routes.rb.Когда я развертываю приложение через Elastic Beanstalk с файлом .ebextensions, включающим сценарий после развертывания для запуска delayed_job, я получаю:

...
warning: already initialized constant DistributionSlugConstraint::MATCH_REGEX
warning: previous definition of MATCH_REGEX was here
delayed_job: running [pid 14867]
...

Класс в config/routes.rb.

class DistributionSlugConstraint
  MATCH_REGEX = /B[a-zA-Z1-9_]{5}/
  def self.matches?(request)
    request.fullpath =~ MATCH_REGEX
  end
end

Rails.application.routes.draw do

  constraints(DistributionSlugConstraint) do
    get "/:slug" => "distributions#show", as: :distribution
  end

end

1 Ответ

0 голосов
/ 24 декабря 2018

Существует ряд причин, по которым может происходить эта ошибка, но исправлением было бы не объявлять константу.Не уверен, что вы используете DistributionSlug::MATCH_REGEX в другом месте вашего кода, но если вы этого не сделаете, вы можете сделать:

class DistributionSlugConstraint
  def self.matches?(request)
    request.fullpath =~ /B[a-zA-Z1-9_]{5}/
  end
end

Если вы используете его в другом месте в своем коде, вы можете сделать его классомметод и вызовите это вместо константы.Другой путь может состоять в том, чтобы объявить его как конфигурацию в application.rb

Я видел, что такого рода вещи всплывают при использовании многопоточного сервера приложений, такого как puma или в Sidekiqрабочие места.Трудно сказать больше, не зная больше о вашей инфраструктуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...