Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未提供生产中的rails资产(另一个资产问题)_Ruby On Rails_Assets - Fatal编程技术网

Ruby on rails 未提供生产中的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

我正在使用 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 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
    plus
    git commit
    plus
    git push heroku master
    @Phipsen非常感谢您接受我的回答。这真的有用吗?因为我将把它包括在我的最终答案中,这样我们就可以涵盖未来问题的所有场景!再见,法布里齐奥这个解决方案实际上是你在帖子中描述的一切:1。我读了很多关于我困惑的链接。我在
    config/initializers/assets.rb
    3中输入了您的提示。我为控制器特定资产添加了
    config.assets.paths << Rails.root.join("vendor","assets", "fonts")