生产中的铁路资产未送达(另一个资产问题)

时间:2017-03-14 16:11:22

标签: ruby-on-rails assets

我正在使用 apache 2.2.15 乘客5.1.2 铁轨4.2.6 红宝石2.3.3

在rails日志中,我得到了

configureConversionService

以及

(No route matches [GET] application-xxxxx.js

我可以在public / assets目录中找到资产。

我的清单:

应用程序/资产/样式表/ application.css.less:

(No route matches [GET] application-xxxxx.css

应用程序/资产/ Javascript角/ application.js中

/*
 *= 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 .
*/

我在config / production.rb

中设置(在SO上有其他答案)
//= 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 .
/ app / views / layouts / application.html.erb

config.serve_static_files = true

我失去了,谢谢你的帮助。

更新:我不会使用Capistrano,只需手动部署。

在rails控制台中运行<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => "reload" %> <%= javascript_include_tag "application", "data-turbolinks-track" => "reload" %> 时,我得到以下信息:

Rails.application.config.assets.paths

我的config / initializers / assets.rb已包含此内容:

 => ["/var/www/myappname/app/assets/fonts",
 "/var/www/myappname/app/assets/images",
 "/var/www/myappname/app/assets/javascripts",
 "/var/www/myappname/app/assets/stylesheets",
 "/var/www/myappname/vendor/assets/fonts",
 "/var/www/myappname/vendor/assets/images",
 "/var/www/myappname/vendor/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/twitter-bootstrap-rails-confirm-1.0.6/vendor/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/local_time-1.0.3/app/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/font-awesome-rails-4.7.0.1/app/assets/fonts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/font-awesome-rails-4.7.0.1/app/assets/stylesheets",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/less-rails-fontawesome-0.5.1/vendor/assets/fonts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/less-rails-fontawesome-0.5.1/vendor/assets/stylesheets",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/less-rails-bootstrap-3.3.5.0/app/assets/fonts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/less-rails-bootstrap-3.3.5.0/app/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/less-rails-bootstrap-3.3.5.0/app/assets/stylesheets",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/twitter-bootstrap-rails-3.2.0/app/assets/fonts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/twitter-bootstrap-rails-3.2.0/app/assets/images",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/twitter-bootstrap-rails-3.2.0/app/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/twitter-bootstrap-rails-3.2.0/app/assets/stylesheets",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/twitter-bootstrap-rails-3.2.0/vendor/assets/stylesheets",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/jquery-turbolinks-2.1.0/vendor/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/jquery-ui-rails-6.0.1/app/assets/images",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/jquery-ui-rails-6.0.1/app/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/jquery-ui-rails-6.0.1/app/assets/stylesheets",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/jquery-rails-4.2.2/vendor/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/coffee-rails-4.0.1/lib/assets/javascripts",
 "/var/www/myappname/vendor/bundle/ruby/2.2.0/gems/turbolinks-source-5.0.0/lib/assets/javascripts",
 #<Pathname:/var/www/myappname/app/assets/fonts>,
 #<Pathname:/var/www/myappname/app/views>,
 #<Pathname:/var/www/myappname/app/assets/stylesheets>,
 #<Pathname:/var/www/myappname/app/assets/javascripts>]

1 个答案:

答案 0 :(得分:1)

这是我的建议。

我添加了以下可能有助于找到解决方案的资源。

https://launchschool.com/blog/rails-asset-pipeline-best-practices

https://railsapps.github.io/rails-javascript-include-external.html

https://reinteractive.com/posts/116-12-tips-for-the-rails-asset-pipeline

我阅读了搜索rails资产管道可以找到的所有指南,但我不会将它们全部链接

我的建议是使用Chrome开发者工具检查application.css和application.js的指纹(通过任何屏幕元素,用f12打开开发人员工具箱并检查任何div或任何js文件的任何样式) )。您需要检查文件的指纹版本,然后使用文本编辑器打开该版本,并检查文件指纹版本中加载的内容。

如果您的文件(例如用户名.js)已加载到清单底部,您应该可以在指纹应用程序的底部找到它。

如果您想更新此文件,可以运行

rake assets:precompile

这将仅在开发中预编译资产,对于需要指定环境的生产。它将使用您完成的编辑更改指纹文件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未加载。当我在不同的帖子上阅读时,您可以尝试以下内容:

  1. 使用以下代码行将文件包含在config/initializers/assets.rb中:

    Rails.application.config.assets.precompile += %w( user.js )
    
  2. 启动rails c并运行Rails.application.config.assets.paths 此命令将以红色显示自动包含的路径,例如App,Lib和Vendor中的路径,以绿色显示的路径,通过在config/application.rb内添加以下代码来添加新路径

    config.assets.paths << Rails.root.join("vendor","assets", "fonts")
    
  3. 我在过去犯的另一个错误是没有使用正确的sprockets语法,您可以在以下链接中检查它(我使用的是require_user而不是require用户):

    https://github.com/rails/sprockets#sprockets-directives

    另一个问题是我在App / assets / javascript下有两个名为user(user.coffee和user.js)的文件。第一个加载的是user.coffee,它是空的。