Hegwin.Me

朱雀桥边野草花,乌衣巷口夕阳斜。

运行特定版本的 bundle

Run specific version of bundler

Ruby小(没)技(鸟)巧(用)系列。 当你同时安装了两个版本的bundler,比如 2.0.1 和 1.17.2,默认情况下 bundle exec 等命令都是使用的最新版本的bundler;而你要维护的程序比较古老,那么你可能就会遇到这个神奇的问题: Bundler could not find compatible versions for gem "bundler" ...

Rails优化SQL可能用到的工具

Tools to Help to Improve SQL in Rails

Rails查询数据慢?想找到性能瓶颈在哪里? 目前我个人是用到了以下几个工具: 1. New Relic 老牌的性能检测工具,与Rails集成之后,在Database监控中能显示最慢的Query之类的,不过这需要New Relic至少订购了Essentials级别的计划。 2. Gem: active_record_query_trace 你可以在log中看到每个SQL是来...

修改Repo地址后Capistrano部署问题

How to Deploy with Capistrano after Repo URL changed?

其实有点闹妖的成分, 我们用Capistrano部署项目,最近把项目仓库从BitBucket迁移到了Github上,本以为只要把 `config/deploy.rb` 里 `set :repo_url`改一下就好,但事实并非如此。 用Cap执行部署时,看到Log里还是从BitBucket的repo里拿的代码,所有迁移到GIhub之后的改动都没有包含进去。 在网上搜了下,需要自己s...

在Rails中实现HTTP Long Polling

Implement HTTP Long Polling in Rails with Action Controller Live

通过使用 ActionController::Live,我们可以实现实时的Push通信。官方文档在这里 http://edgeapi.rubyonrails.org/classes/ActionController/Live.html,但总觉得学习起来,这个文档太简略。这里面主要是利用了这几个技术:当HTTP/1.1 的Header指定为 Transfer-Encoding: chunked...

Rails权限验证工具Pundit

Rails authorization with Pundit

在人们开始使用Rails 4之后, cancan 的复杂以及兼容性修复不及时而遭人诟病,大家将目光投向了新的工具 Pundit。 Pundit 是一个纯ruby的gem,用于权限验证。 基本思路是Pundit针对当前模型对象,以及操作,会去相应的模型的policy中寻找操作验证的方法,继而实现验证。

Nginx部署时Assets静态文件请求的配置

Handle Assets with Nginx Instead of Thin

将Rails项目部署到production环境时,在asset方面遇到的问题似乎不少。 现在你们看到的Hegwin.me是用Nginx和Thin部署的,因为也没有太多机会要部署,所以我基本上都是手动来的。可是在执行完 `RAILS_ENV=production bundle exec rake assets:precompile`,并且以production模式启动时,assets(C...

Rails项目持久集成工具:RSpec+Guard+Spork

Rails CI: RSpec+Guard+Spork

*RSpec*是Rails的一套测试框架。 *Guard*,人如其名,监视着项目中的所有文件,当项目中某个文件发生变化,便会根据配置去启动相应的测试脚本。 *Spork*,可以将其认为是一种服务,自动加载了Rails项目所有文件,当文件发生变化时才会重新加载部分文件,这样就减少了测试启动时加载的时间,大大缩短了测试的准备时间。当然随着Ruby2.0的到来,这个组件的必要性可能就没那么大。...