瞎扯淡 碰到 Assets Pipeline 里的 “幽灵文件”,我被自己给逗乐了

adamshen · 发布于 2016年03月23日 · 最后由 jpman 回复于 2016年03月25日 · 1077 次阅读
20859

这个故事是这样的。

我在assets/javascipts和assets/stylesheets目录下存放了一个js文件和一个css文件。

为了方便使用,我把这两个文件和一些helper方法单独封装成了一个gem。

接着写了一些东西之后,我删除了这两个文件,修改Gemfile加载这个本地gem。

运行测试之后发现gem里的js和css并没有被成功载入,打开firebug发现浏览器确实加载了这两个文件,但是内容却是空白的。

于是我在assets里删除了这两个文件的require,然而这两个空白文件居然还会被加载。

一定是我没有把rails目录里的文件删干净,经过检查我确实是删除了这两个文件的。

没办法我只能用git diff一点点查到底哪里的改动会导致这个问题,结果,我被自己逗乐了。

原来,在删除了文件以后,我新建了一个controller,自动生成了xxx.coffee和xxx.sass,而这个controller的名字正好和那个文件是一样的。

所以,application里require的优先级应该是coffee和sass大于js和css的吧。

宝贵的时间就这么被浪费掉了,唉,不如就泡杯茶,休息一下好了。

共收到 5 条回复
3757

逗逼~

15139

补充一个更恶心的事。 如果你不小心用了脚手架,会自动生成一个全局css文件,然后会部分覆盖掉你自己的样式。 所以每次生成完都要自己去把 scaffold.css 文件干掉才行。

845

#2楼 @msg7086 在 application.rb 中加下面配置,就不会有生成 css, js 了

config.generators do |g|
  g.assets false
end
96

纯使用命令行看改动的都是高手啊, 其实使用界面的git工具挺好用啊, 我每次提交之前都会仔细在SourceTree里面详细检查一下每个文件的变动(包括看每个文件里面每行的改动), 同事也出现了好几次错误都是没有仔细检查的.

3980

所以,application里require的优先级应该是coffee和sass大于js和css的吧。

http://guides.rubyonrails.org/asset_pipeline.html#asset-organization 这个才是真正的原因

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册