Rails rails 开发中必备的 gem 推荐

seaify · July 09, 2015 · Last by caiqinghua replied at July 11, 2015 · 8005 hits

推荐一些工作中用到过的好用的 gem

hirb

将 rails console 下 model 的输出变得更标准好看,类似于 mysql,看下图感受下带来的变化 当然,不想每次进 rails console, 都敲遍 Hirb.enable,那在~/.irbrc 中加入

require 'rubygems'
require 'hirb'
require 'active_record'
Hirb.enable

rails_panel

chrome 下的插件,能方便的看 status,controller#action, params, log, activerecord 查询语句,不用去看终端日志,因为日志一股脑的全输出,很难看清晰的。react 在 chrome 下也有类似的插件。

better_errors

替换掉 rails 默认的出错页面,支持在错误页面里直接输入变量值进行查看,注意图片左侧除输入了@company,有显示值

exception_notification

搭配slack-notifier使用,exception 发生时,将错误信息发生到 slack 上的某个 channel,flowerwrong推荐

simplecov

配置好后,每次 rspec 运行完测试,会在本地生成覆盖率测试的页面,flowerwrong推荐

awesome_print

将 object 输出的更好看, qhwa推荐

i18n-js

应用场景,前端需要对表单进行验证,验证失败后的信息,是要使用 i18n 的,但其在 rails 里。在没使用 i18n-js 前,传递值是这样的,controller 里将需要传递的 i18n 值,传到页面,写入到某个节点的属性值里,然后在 js 里读取该属性值。想想都知道,这 TM 多蛋疼。 i18n-js 配置正确后,是这样的,直接可以在 js 里,使用 I18n.t,和 rails 的使用完全一致。

$('#form-submit-tips').text(I18n.t("validate.error.real_name")).removeClass('bg-success').addClass('bg-warning')

它的原理,实质上,是读取了 config/locales/*.yml,生成了一个 translation.js,也就是 translation.js 是 rails i18n 的一份 js 版,然后再暴露接口 I18n.t 去读取 translation.js 中的数据

gon

更方便的将 rails 的变量传递到 js 里,和 i18n-js 的效果有些类似。 应用创建,页面需要前端验证,验证的规则,需要从后台传递过来 配置正确后,在 rails controller,

gon.mobile_regex_format = Setting.mobile_regex_format

在 js 里

real_name_regex = new RegExp(gon.real_name_regex_format)

guard 系列

  1. guard-bundler, gemfile 变更后,自动执行 bundle
  2. guard-migrate, 新产生 migration 文件,变更后,自动执行 rake db:migrate
  3. guard-annotate, db schema 文件变更后,自动 annotate, 与 guard-migrate 搭配非常好
  4. guard-shell, 文件变更后,执行相应 shell 命令,场景:使用 i18n-js 时,config/locale/*.yml 变更了的话,需要更新 translation.js 文件,要执行相应的 rake i18n:js:export

参考链接

Rails Console irb 裡的方便工具-Hirb

ps: 求助啊。链接在 h3 里为啥显示有问题啊,在 github 里是正常的。

赞,第一次听说>rails_panel,赶紧试下……

好多都第一次看到,赞 :plus1:

第一个 解救了我!

gon,i18n-js 让代码更优雅,hirb,rails-panel 让调试定位问题更方便。 :plus1:

#1 楼 @chairy11 三贱客 😄

gem 'better_errors'
gem 'binding_of_caller'
gem 'meta_request'

#5 楼 @mimosa

O(∩_∩)O~,对这 2 个也是,我是看到 wiki 页面上已经有 better_errors, 就没有重复推荐。

后面给 ruby-china wiki 提个 pr 吧。

我去_好像也有问题,觉得 ruby-china 的 markdown 语法也应该改改。

@caiqinghua 后期,将部分帖子链接,追加到我们项目的 readme 吧。后面项目新入小伙伴会有用。

#8 楼 @qhwa

嗯。我收图更新了哈。我也是在用这个。就是有些 gem,觉得其他地方推荐过,就没加进来。

现在看来,重复也没事,说明它够好,都推荐。

gem 'foreman'
gem 'exception_notification'

gem 'spring'
gem 'awesome_print', require: false
gem 'brakeman', require: false
gem 'rails_best_practices', require: false
gem 'rubocop', require: false
gem 'simplecov', require: false
gem 'better_errors'
gem 'binding_of_caller'

赞,好东西要顶,好紧张,终于站在前头了。

#10 楼 @flowerwrong

哇。觉得 exception_notification, brakeman, simplecov 很赞。而跟代码风格检查相关的,觉得还是偏个人些,不要去强制

#5 楼 @mimosa better_errors 我一直在用,剩下两个还没听过,赶紧瞅瞅去:)

#10 楼 @flowerwrong 你都不给讲讲每个 gem 都干嘛的,自己一个个查,好忧伤……

#14 楼 @chairy11 😪

gem 'foreman'  # 统一管理多个启用应用,例如rails sidekiq等
gem 'exception_notification'  # exception邮件提醒,配合hook也可以到HipChat等

gem 'spring'
gem 'awesome_print', require: false  # 打印hash等 beautify
gem 'brakeman', require: false  # 漏洞检查,sql注入等
gem 'rails_best_practices', require: false  # 如其名,代码检查
gem 'rubocop', require: false  # 代码检查
gem 'simplecov', require: false  # 测试覆盖率
gem 'better_errors'  # 友好错误
gem 'binding_of_caller'  # debug

我说一下 yaml db 主要是用来 seed data 的 像http://productchase.coding.io/,yaml就是最开始先把数据爬到本地,存成 db 到服务器上。之后在线上只是做增量更新了

#15 楼 @flowerwrong

将 exception_notification,结合 slack 使用了,效果很好。simplecov 也使用了。没想到引出这么好的 gem 推荐,O(∩_∩)O~

刚才试了下 rails_panel 和 better_errors,在浏览器查看参数调试程序看上去很酷,但用起来并不爽,不如在 terminal 中爽,至少对键盘党来说,在浏览器中调试的不爽

#7 楼 @seaify agree,好建议

You need to Sign in before reply, if you don't have an account, please Sign up first.