我正在使用 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 .
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>]
答案 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未加载。当我在不同的帖子上阅读时,您可以尝试以下内容:
使用以下代码行将文件包含在config/initializers/assets.rb
中:
Rails.application.config.assets.precompile += %w( user.js )
启动rails c
并运行Rails.application.config.assets.paths
此命令将以红色显示自动包含的路径,例如App,Lib和Vendor中的路径,以绿色显示的路径,通过在config/application.rb
内添加以下代码来添加新路径
config.assets.paths << Rails.root.join("vendor","assets", "fonts")
我在过去犯的另一个错误是没有使用正确的sprockets语法,您可以在以下链接中检查它(我使用的是require_user而不是require用户):
https://github.com/rails/sprockets#sprockets-directives
另一个问题是我在App / assets / javascript下有两个名为user(user.coffee和user.js)的文件。第一个加载的是user.coffee,它是空的。