asset:.js文件的预编译?铁轨3.1

时间:2012-02-19 03:33:13

标签: ruby-on-rails

问题:

如何让资产管道处理所有你的.js文件?(我希望它们单独提供,而不是捆绑到application.js中)

对于我的网页试图引用的javascript文件,我得到了大量的404:

GET http://<myStagingServer>.heroku.com/assets/<javascriptFilename1_MD5fingerprint> 404 (Not Found)
GET http://<myStagingServer>.heroku.com/assets/<SubDir>/<javascriptFilename2_MD5fingerprint> 404 (Not Found)

我尝试将其添加到config/application.rb

config.assets.precompile << '*.js'

但据我所知,这并没有做任何事情。

背景:

我正在从Rails 3.0升级到3.1并启用资产管道。

到目前为止的亮点:

  • 从Bamboo切换到Heroku的Cedar堆栈:heroku create --stack cedar
  • 切换为“精简”作为生产服务器,修复了各种问题:gem 'thin'
  • 将我的资源从public/assets移至app/assets,更新代码中的引用以使用stylesheet_link_tagjavascript_include_tag。 (无论我为图像做了什么 - 它们都有效。)
  • 删除x_sendfile_header配置选项,因为Heroku doesn't support it

相关文件:

//  
// application.js  
//  
//= require_self  
//  

2 个答案:

答案 0 :(得分:4)

OMG:我发现了问题:

javascripts和样式表,其名称中的句点需要显式扩展名

例如:

# WORKS
javascript_include_tag "application"
stylesheet_link_tag "application"

# BROKEN
javascript_include_tag "jueryui.custom"
stylesheet_link_tag "jueryui.custom"

# WORKS
javascript_include_tag "jueryui.custom.js"
stylesheet_link_tag "jueryui.custom.css"

我想我可以理解为什么会这样,但我认为在任何资产管道教程中都没有很好地记录。众所周知,您的资产文件名中不应包含句点吗?

答案 1 :(得分:0)

我认为在application.js和application.css中都需要以下内容:

// = require_tree。

这会加载CSS和JS的assets目录中的所有文件。

还要升级到3.1和资产管道信息:

http://railscasts.com/episodes?utf8=✓&安培;搜索=资产+管道

另外:Using Rails 3.1 assets pipeline to conditionally use certain css