Ruby on rails 未提供生产中的rails资产(另一个资产问题)
我正在使用 apache 2.2.15 乘客5.1.2 轨道4.2.6 ruby 2.3.3 在rails日志中,我得到Ruby on rails 未提供生产中的rails资产(另一个资产问题),ruby-on-rails,assets,Ruby On Rails,Assets,我正在使用 apache 2.2.15 乘客5.1.2 轨道4.2.6 ruby 2.3.3 在rails日志中,我得到 (No route matches [GET] application-xxxxx.js 以及 (No route matches [GET] application-xxxxx.css 我可以在public/assets目录中找到资产 我的舱单: app/assets/stylesheets/application.css.less: /* *= require jq
(No route matches [GET] application-xxxxx.js
以及
(No route matches [GET] application-xxxxx.css
我可以在public/assets目录中找到资产
我的舱单:
app/assets/stylesheets/application.css.less:
/*
*= require jquery-ui
*= require font-awesome
*= require bootstrap_and_overrides
*= require awesome-bootstrap-checkbox
*= require lists
*= require mailgroups
*= require general
*= require colors
*= require print
*= require loader
*= require tooltips
*= require_self
*= require_tree .
*/
app/assets/javascripts/application.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery-ui
//= require twitter/bootstrap
//= require bootstrap
//= require turbolinks
//= require twitter/bootstrap/rails/confirm
//= require_self
//= require_tree .
我在config/production.rb中设置了(下面是其他答案)
config.serve_static_files = true
in-app/views/layouts/application.html.erb
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => "reload" %>
<%= javascript_include_tag "application", "data-turbolinks-track" => "reload" %>
my config/initializers/assets.rb已包含以下内容:
Rails.application.config.assets.precompile += ['.svg', '*.eot', '*.woff', '*.woff2', '*.ttf', '*.otf', '*.js', '*.css']
这是我的建议
我添加了以下可能有助于找到解决方案的资源
我阅读了通过搜索rails资产管道可以找到的所有指南,但我不会将它们全部链接起来
我的建议是使用Chrome开发者工具检查application.css和application.js的指纹(进入任何屏幕元素,用f12打开开发者工具箱,检查任何div或任何js文件的任何样式)。您需要检查使用的文件指纹版本,然后使用文本编辑器打开该版本,并检查文件指纹版本中加载的内容
如果您的文件(对于ex.user.js)加载在清单的底部,您应该很容易在指纹应用程序.js的底部找到它
如果要更新此文件,可以运行
rake资产:预编译
这将仅在开发中预编译资产,对于生产,您需要指定环境。通过您所做的编辑,它将更改指纹文件application.css和application.js
RAILS_ENV=production bundle exec rake assets:precompile
您还可以在以下地址检查文件localhost:3000/assets/yourjsfile.js
或通过以下localhost:3000/assets/application yourfingerprint.js
如您所见,许多文件都包含在该公共/资产文件夹中,您可以使用rake-assets:clean
或-rf-public/assets
删除它们,然后运行rake-assets:precompile
,它将再次预编译资源
如果未包含任何内容,则不会加载application.js。当我在不同的帖子上阅读时,您可以尝试以下内容:
config/initializers/assets.rb
中包含文件,并包含以下代码行:
Rails.application.config.assets.precompile += %w( user.js )
rails c
并运行rails.application.config.assets.path
此命令将以红色显示自动包含的路径,例如App、Lib和供应商中的路径,以绿色显示通过在config/application.rb中添加以下代码来添加新路径而包含的路径
config.assets.paths << Rails.root.join("vendor","assets", "fonts")
config.assets.path您的application.rb中有这个吗config.assets.enabled=true
您如何部署应用程序?卡皮斯特拉诺?什么时候开始的?如果在检查github历史记录之前它不存在。告诉我们你是否可以在http上看到你的文件//yourip/assets/yourfile.js我听说您在公共目录中看到了它们,但可能您无法在主机上访问它们。在我看来,get操作没有在文件夹中找到该文件。感谢Fabrizio的详细解释。我阅读了这些链接,我意识到我仍然不清楚是使用链轮还是javascript_include_标记/样式表_include_标记还是config.assets.paths@Phipsen,网上有更多文档,但据我所知,您应该在rails控制台中运行rails.application.config.assets.paths
,因此,您将知道是否需要使用config.assets.paths@Phipsen添加一个新文件夹,因为您的问题是错误消息application-xxxxx.js获取请求失败,我们谈论的是指纹文件,但事实并非如此。问题不在于rails没有在你的app/assets/folders中找到你的资产,而在于rails没有在你的public/assets
文件夹中找到application-xxx.js,或者没有找到带有该指纹的特定文件,或者没有在生产中找到该文件。如果问题是生产,则需要预编译开发、生产和执行git-add
plusgit commit
plusgit push heroku master
@Phipsen非常感谢您接受我的回答。这真的有用吗?因为我将把它包括在我的最终答案中,这样我们就可以涵盖未来问题的所有场景!再见,法布里齐奥这个解决方案实际上是你在帖子中描述的一切:1。我读了很多关于我困惑的链接。我在config/initializers/assets.rb
3中输入了您的提示。我为控制器特定资产添加了
。
config.assets.paths << Rails.root.join("vendor","assets", "fonts")