【问题标题】:Sprockets::Rails::Helper::AssetNotPrecompiled in ResqueWebSprockets::Rails::Helper::AssetNotPrecompiled 在 ResqueWeb 中
【发布时间】:2021-06-17 07:44:25
【问题描述】:

我已经尝试解决此问题大约两天了,但我无处可去。我正在尝试显示 resque-web 页面,但我一直遇到错误

Sprockets::Rails::Helper::AssetNotPrecompiled in ResqueWeb::Overview#show

消息显示

ActionView::Template::Error (resque_web/plugins/resque_scheduler/application.css):
    12:         file_path = "#{p.name.underscore.downcase}/application.css"
    13:         if (Rails.application.assets && Rails.application.assets.find_asset(file_path)) ||
    14:            (Rails.application.assets_manifest && Rails.application.assets_manifest.assets[file_path])
    15:           stylesheet_link_tag "#{p.name.underscore.downcase}/application"
    16:         end
    17:       end.join("\n").html_safe
    18:   %>

从堆栈调用什么

     def raise_unless_precompiled_asset(path)
        raise Helper::AssetNotPrecompiled.new(path) if @check_precompiled_asset && !precompiled?(path)
      end
  end
end

宝石版本

resque (2.0.0)
resque-multi-job-forks (0.5.1)
resque-scheduler (4.4.0)
resque-web (0.0.12)
sprockets (4.0.2, 3.7.2)
sprockets-rails (3.2.2)

routes.rb

require "resque_web"
require 'resque-scheduler'
require 'resque/scheduler/server'

Rails.application.routes.draw do
  mount ResqueWeb::Engine => "/resque_web"
  root to: "pages#home"
.
.
.
end

理想情况下,将'admin/resque_web' 用于生产目的。

我已经通过“bitterloa”https://github.com/resque/resque-web/issues/106 尝试了这个修复,因为我的文件结构使用 webpacker 设置相同

我查看了 development.rb 以检查调试是否为假

我在使用 sprock-rails rails assets:clobber 销毁资产后重新编译了我的资产

如果我能找到任何想法或其他人遇到此问题,请伸出援手。

从终端运行命令显示 resque 正在运行并接受我的 scheduler.yml 文件中的计划作业我只是无法让 css 让它工作。

如果您需要更多信息,请告诉我。

谢谢

【问题讨论】:

  • 您无法访问 /resque 上的任何页面,还是只能访问“计划”选项卡?
  • 请更新您在路线中安装 resque 的方式。
  • @razvans 更新了路线,这是 /resque 上的所有页面

标签: ruby-on-rails ruby-on-rails-6 resque sprockets


【解决方案1】:

resque 带有内置服务器。你不需要resque-web,而且它似乎没有被维护(最后一次提交是在 2018 年)。

让我们试试这个:

gem 'resque', require: 'resque/server'

#  routes.rb 
mount Resque::Server.new, :at => "admin/resque"

确保您只允许管理员在生产环境中访问该页面。为此,您可以阅读有关 Route Constraints 的信息来执行以下操作:

constraints IsResqueAllowed do
  mount Resque::Server.new, :at => "admin/resque"
end

class IsResqueAllowed 
 def self.matches?(request)
   # use the request to do something
 end
end
 

更多关于保护路由here的信息。

【讨论】:

  • 谢谢这是问题所在,简单的修复只是想多了。以及将我指向路线约束。
  • 是的,我投了赞成票,但我的声誉低于 15,所以它没有显示
猜你喜欢
  • 2021-01-12
  • 1970-01-01
  • 2016-06-11
  • 2021-05-13
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多