anonymelon's Blog

人生苦短 可以python, 偶尔node, 顺便ruby

Rails Assets Pipeline Bug小记

前段时间在用Rails部署生产环境时遇到一个诡异的情况,在生产环境的集群下面每台机器build出来的assets摘要(digest)后缀不一样,这导致了在loadbalance访问时随机出现assets 404 的情况。

经过debug后发现是由于一个第三方的前端类库(angular-rails-templates)在做assets pipeline的时候根据项目的path改了Rails.application.config.assets.version,这导致只要项目的path不一样算出来的asset version都不一样。而asset version是用来计算所有assets的digest后缀的key。

在我们生产集群环境中的每个project root path都不一样(根据自动化部署的时间),所以每台机器经过assets pipeline打出来的assets后缀也都不同了。(Rails assets pipeline是个坑?也许。。)

我们总是在挖坑填坑中积累经验,所以在debug期间研究了一下Rails做assets pipeline的过程,简单记录一下。

Rails.application.assets.digest

在development环境下Rails.application.assets是一个Sprockets::Environment对象(关于Sprockets),但是在production环境下面,Rails.application.assets确是一个Sprockets::Index对象(虽然都继承自Base但需要继续研究为什么),里面几乎包含了Rails所需要的所有assets信息。虽然对象不一样,但是都有一个digest方法(来自Sprockets::Base),能够拿到一个经过SHA1或者MD5算过的digest。这个digest会用来计算之后所有assets的digest后缀。 而这个Rails.application.assets.digest是根据Rails.application.config.assets.version计算出来的。

总结

废话了这么多,简单用个过程表示吧:

1
2
3
4
::Rails环境准备
    --> 计算Rails.application.config.assets.version
        --> 通过version计算Rails::application.assets.digest
            --> 通过digest计算assets digest后缀

在这期间还有很多复杂的过程,这里只是简单做过记录。

可以提高生产力的Chrome插件(带安装文件)

插件列表

Adblock Plus

不想看乱七八糟的广告页面,弹出框,视频广告,这个插件还是挺好用的

下载:adblock-plus.crx

AngularJS Batarang (Stable)

AngularJS 开发工具,能够深入到每个scope中,很好的AngularJS Debug工具。(最新的AngularJS Batarang好像有问题,所以现在stable版本比较好用)

下载:angularjs-batarang-stable.crx

Clear Cache

Web开发经常遇到cache问题,这个插件可以设置强行清除页面cache,还可以配置是否清cookies,重现reload页面,可以当做第二个reload button使用。

下载:clear-cache.crx

Context Menu Search

这个插件在右键菜单中添加选项,让你可以在选中内容时选择用各种不同的搜索引擎搜索,比如百度,google,yahoo,bing,等等,翻墙时用google,翻不过去的时候bing,实在不行再百度。。方便切换而不用自己去设置里切换搜索引擎。

下载:context-menu-search.crx

Cookies

查看,修改,清除Cookies的好工具,掉坑的时候用它会比较爽。

下载:cookies.crx

Full Page Screen Capture

当一个页面很长,你需要把整个页面截图下来的时候,点它就好了,方便好用

下载: full-page-screen-capture.crx

Ghostery

作为Web Dev肯定知道上网是会被跟踪的,用这个可以看你要访问的网站有没有记录你的行为,可以让世界清静些。不想被分析了推荐买东西,这个可以帮忙,虽然不是绝对。

下载: ghostery.crx

Give Me CRX

Chrome插件是个.crx文件,怎么把你喜欢的插件弄下来,分享给别人,假设他翻不了墙的话,这个插件可以去appstore上面把插件抓下来,这里所有的插件都是这么下来的。什么时候能直接上google了才是对生产力最大的提高。。

下载: give-me-crx.crx

JSONView

服务器返回的json数据没法看,安个这个世界就清静了,json是个好东西,js也是。同样有个xmlview,也是好东西

下载: jsonview.crx

OneTab

这个插件是多tab使用者的福音,对于我这种经常Chrome开3个窗口,每个窗口20多个tab的人来说太有用了。Chrome吃内存众所周知,内存不够用的时候点下这个,一个窗口的所有tab被关掉了,然后下次还可以打开,在需要时各种方便。

下载: onetab.crx

RSS Feed Reader

这个对于信息的通知很有用,用github来说,假设有人提交了代码,它会给你通知,然后你可以去看谁提交了什么改动,及时性比较高。当然,这个主要还是用来订阅博客的

下载: rss-feed-reader.crx

Xmarks Bookmark Sync

Google上不去的时候怎么同步书签,用这个可以解决不少问题,可以指定家里,工作的电脑上书签的同步,在不同机器上开了哪些tab,各种方便回家加班用,同步一下,回家继续干活吧。。

下载: xmarks-bookmark-sync.crx

有道词典Chrome划词插件

有道自己开发的,对看英文是个福利

下载: 有道词典Chrome划词插件.crx

Proxy SwitchyOmega

SwitchySharp的升级版,翻墙越狱神器,加上了未加载资源的检测,好用到爆,放上github地址 FelisCatus/SwitchyOmega,去点个星吧,非常感谢作者。 顺便传份自己的备份文件,翻墙一步到位

下载: proxy-switchyomega.crx 备份文件: OmegaOptions.bak

后记

熟悉和使用工具是提高效率的有效方式

转载请注明出处: anonymelon

About Me

Web后台Dev, 主攻脚本方向,熟悉linux,喜欢命令行,现以Rails谋生,正准备被前端折腾中。

搞过自动化测试,折腾过自动化部署,脑子里想着怎么通过自动化偷懒。。

写过python, 用过node, 发现还是对ruby情有独钟。经常大脑洞开,喜欢折腾。

工作3年,只是想好好地码代码,开开心心的吃喝玩乐,单线程生物。

Email

anonymelon#163.com