警告:已在 config/routes.rb 中初始化常量
warning: already initialized constant within config/routes.rb
我在 config/routes.rb
中有以下 class。当我使用包含 post-部署脚本的 .ebextensions
文件通过 Elastic Beanstalk 部署应用程序以启动 delayed_job
我收到:
...
warning: already initialized constant DistributionSlugConstraint::MATCH_REGEX
warning: previous definition of MATCH_REGEX was here
delayed_job: running [pid 14867]
...
Class 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
发生此错误的原因有很多,但解决方法是不声明常量。不确定您是否在代码的其他地方使用了 DistributionSlug::MATCH_REGEX
,但如果您没有使用,您可以这样做:
class DistributionSlugConstraint
def self.matches?(request)
request.fullpath =~ /B[a-zA-Z1-9_]{5}/
end
end
如果您在代码的其他地方使用它,您可以将它设为 class 方法并调用它而不是常量。另一种方法可能是将其声明为 application.rb
中的配置
我在使用像 puma
这样的多线程应用程序服务器时或在 Sidekiq
作业中看到过这种情况。在不了解您的基础设施的情况下很难说更多。
我在 config/routes.rb
中有以下 class。当我使用包含 post-部署脚本的 .ebextensions
文件通过 Elastic Beanstalk 部署应用程序以启动 delayed_job
我收到:
...
warning: already initialized constant DistributionSlugConstraint::MATCH_REGEX
warning: previous definition of MATCH_REGEX was here
delayed_job: running [pid 14867]
...
Class 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
发生此错误的原因有很多,但解决方法是不声明常量。不确定您是否在代码的其他地方使用了 DistributionSlug::MATCH_REGEX
,但如果您没有使用,您可以这样做:
class DistributionSlugConstraint
def self.matches?(request)
request.fullpath =~ /B[a-zA-Z1-9_]{5}/
end
end
如果您在代码的其他地方使用它,您可以将它设为 class 方法并调用它而不是常量。另一种方法可能是将其声明为 application.rb
我在使用像 puma
这样的多线程应用程序服务器时或在 Sidekiq
作业中看到过这种情况。在不了解您的基础设施的情况下很难说更多。