Rails:Stylesheets / Javascripts在Dev中工作,而不是Prod

时间:2013-06-12 15:03:27

标签: javascript css ruby-on-rails asset-pipeline

作为一个RoR新手,我一直在阅读/试图了解资产管道的工作原理,以及在我的应用程序中使用样式表/ javascripts时它如何影响开发与生产,但我仍然感到困惑

在我的应用程序中,我从application.css / .js文件中调用经常使用的CSS / JS文件,然后根据需要显式调用其他.css / .js文件,例如:

<%= stylesheet_link_tag 'reset.css',"application",'bootstrap.min.css', 'bootstrap-responsive.min.css','font-awesome.css','http://fonts.googleapis.com/css?family=Raleway:400,600,700', 'fancybox.css' %>
<%= javascript_include_tag "application", 'modernizr.js', 'bootstrap.js'%>

这在开发中运行得很好,但是一旦我将代码推送到生产环境,显式调用的.css / .js文件就不再起作用了。如果我查看源代码,我会看到文件被正确调用到页面中。

为了让这项工作投入生产,我错过了哪些步骤?感谢您的时间和帮助。

更新: 根据Martin M的建议,我将.css / .js添加到我的config / environments / production.rb中。

例如:

config.assets.precompile += %w(reset.css grepfrut.css jquery-ui.css base-admin.css reports.css signin.css daterangepicker.css bootstrap.min.css bootstrap-responsive.min.css font-awesome.css fancybox.css)
config.assets.precompile += %w(modernizr.js bootstrap.js ddsmoothmenu.js wice_grid.js date.js daterangepicker.js signin.js)

然后我重新预编译,当我看到我的公共/资产中的文件时,javascripts仍然无法正常工作,并且某些CSS在Chrome中不起作用。我已经尝试清除浏览器中的所有内容,但仍尝试使用Chrome,Firefox和Safari无效。

不确定它是否值得一提,但由于我的托管服务提供商,我目前不得不在Ruby 1.8.7-p370中运行它。我稍后会转向更适合RoR的提供商。

再次感谢。

2 个答案:

答案 0 :(得分:2)

application.cssapplication.js未加载的资产(js和css)由rake assets:precompile自动编译

您必须在config/environment/production.rb

中明确说明
  config.assets.precompile += %w(reset.css bootstrap.min.css bootstrap-responsive.min.css font-awesome.css fancybox.css)
  config.assets.precompile += %w(modernizr.js bootstrap.js)

生成的production.rb中有一个注释示例。

这有点令人困惑,因为在development资产以任何方式加载 是的,每次更改css / js中的位时,都必须运行rake assets:precompile

答案 1 :(得分:0)

您应该运行rake assets:precompile以使其在生产中运行。