ruby-on-rails - 与乘客一起在生产中使用 resque 时,没有路线匹配 [GET] "/resque/overview"
问题描述
我正在使用 resque 进行后台处理,路线 /resque 在开发中工作正常,但在生产中(使用乘客)它没有,log/production.log 显示错误:
ActionController::RoutingError (No route matches [GET] "/resque/overview")
当我运行命令时
rails routes | grep resque
表明:
/resque
#<Resque::Server app_file="/var/www/webroot/ROOT/vendor/bundle/ruby/2.7.0/gems/resque-2.0.0/lib/resque/server.rb">
我的宝石文件:
gem 'resque'
我的配置/初始化程序/resque.rb
require 'resque/server' # this is needed for resque web UI
redis_url = {
development: 'localhost:6379',
production: Redis.new(url: 'redis://{user}:{password}/{host_url}:6379/0')
}
rails_env = Rails.env.to_sym || 'development'
Resque.redis = redis_url[rails_env.to_sym]
我的路线
authenticated :user, -> user { user.admin? } do
mount Resque::Server.new, :at => "/resque"
end
解决方案
我会回答我的问题,
问题是以下行
authenticated :user, -> user { user.admin? } do
这似乎不适用于我安装的设计版本 4.7.3
一旦我摆脱它, /resque 路线就开始起作用了!但我需要一种方法来限制仅管理员用户查看该路线,所以这就是我所做的,
在 config/initializers/resque.rb 我添加了这个:
require 'resque/server' # this is needed for resque web UI
class SecureResqueServer < Resque::Server
before do
redirect '/' unless request.env['warden'].user&.admin?
end
end
然后在 routes.rb 我的 /resque 路线变成:
mount SecureResqueServer.new, :at => "/resque"
以上类和路由来自Resque、Devise 和 admin 认证
这解决了我的问题......不确定,但似乎这个问题与此有关:
推荐阅读
- python-3.x - Scrapy:从页面内容派生的字段名称
- javascript - 根据 id 和 date 删除数组中的重复对象
- jquery - Django ajax 帖子在 Web 主机上引发 500 错误,但在 localhost 上有效
- java - 我的通知代码突然停止工作
- windows - Windows 回收站信息文件二进制格式
- python - 如何在没有堆栈跟踪的情况下创建 Python 异常?
- dart - Riverpod StreamProvider 访问流
- python - Django admin Page 404 Not Found & 错误处理页面不工作(DEBUG_PROPAGATE_EXCEPTIONS)
- xamarin - 无法从 Visual Studio For Mac 在 iPhone 模拟器中运行 Xamarin 应用程序
- ios - 快速绘制带有笔画动画的复选标记