设为首页 加入收藏

TOP

Ruby On Rails 常用的精品Gem汇总(一)
2017-10-10 12:07:55 】 浏览:2847
Tags:Ruby Rails 常用 精品 Gem 汇总

首先需要注明一点,本文是原创的并不是从其它地方转载。所有的数据是我从 GitHub 和 RubyGems 上码下来的,数据的截取时间就是本文的发布日期。

RubyGems 的下载量可以看到在用这个 gem 的人数,所以数值很大(这里收藏的下载量至少会大于10万级)。而在 GitHub 上的则代表关注这个gem的源码的人数(本文收藏的至少是过 1k以上 Star 的 repository)

Nokogiri

gem 'nokogiri'

采集数据是我们需要解析复杂的 HTML 结构,从中获得需要的数据,Nokogiri 可以帮助我们完美的处理不同网页上面不同的 HTML 结构,并且有很好的编码处理能力,用它你不用担心页面是 GB2312 还是 GBK 还是 UTF-8,它都很很好的处理,解析结构可以用类似 jQuery 的 CSS Selector 的方式查找,很是方便。曾经用过 Ruby 的好几个类似插件,最终发现 Nokogiri 才是最好的。

Faraday

gem 'faraday', '~> 0.9.1'

Faraday 是一个HTTP的客户端,可以提供一般化的接口和多种的适配器 (例如 Net::HTTP)。

做一些网络服务API集成它是一个很好用的助手。

conn = Faraday.new(:url => 'http://sushi.com') do |faraday|
  faraday.request  :url_encoded             # form-encode POST params
  faraday.response :logger                  # log requests to STDOUT
  faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
end

## GET ##
response = conn.get '/nigiri/sake.json'     # GET http://sushi.com/nigiri/sake.json
response.body

conn.get '/nigiri', { :name => 'Maguro' }   # GET http://sushi.com/nigiri?name=Maguro

conn.get do |req|                           # GET http://sushi.com/search?page=2&limit=100
  req.url '/search', :page => 2
  req.params['limit'] = 100
end

## POST ##
conn.post '/nigiri', { :name => 'Maguro' }  # POST "name=maguro" to http://sushi.com/nigiri

# post payload as JSON instead of "www-form-urlencoded" encoding:
conn.post do |req|
  req.url '/nigiri'
  req.headers['Content-Type'] = 'application/json'
  req.body = '{ "name": "Unagi" }'
end

## Per-request options ##

conn.get do |req|
  req.url '/search'
  req.options.timeout = 5           # open/read timeout in seconds
  req.options.open_timeout = 2      # connection open timeout in seconds
end

RSPEC-RAILS

gem 'rspec-rails', '~> 3.4'

如果没有用过 RSpec 都不能算是懂 Ruby 吧,respec_rails 顾名思义是将 rspec 集成至 rails 中的测试框架了:

require "spec_helper"

describe User do
  it "orders by last name" do
    lindeman = User.create!(first_name: "Andy", last_name: "Lindeman")
    chelimsky = User.create!(first_name: "David", last_name: "Chelimsky")

    expect(User.ordered_by_last_name).to eq([chelimsky, lindeman])
  end
end

Devise

gem 'devise', '~> 3.5', '>= 3.5.2'

Devise 是一个用于快速构建基本用户功能,如:注册,登陆,找回密码。 同时它还集成了第三方的登入支持,代码也相当简单:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :confirmable, :recoverable, stretches: 20
end

Devise 是一个大集成包,单看看它集成了什么就能知道到大至上的功能了:

  • Database Authenticatable: 支持加密的身份验证并能将验证信息存储于数据内。
  • Omniauthable: 集成 OmniAuth 实现三方平台(如: Twitter, Facebook, 新浪微博, 腾讯 QQ)账号登陆的支持。
  • Confirmable: 发送邮件以验证注册用户的身份。
  • Recoverable: 支持密码重置。
  • Registerable:支持注册新用户。
  • Rememberable: 支持自动登录
  • Trackable: 可跟踪用户的登入次数,时间戳和 IP
  • Timeoutable: 支持自动用户会话的过期
  • Validatable: 可验证用户的邮件的与密码的正确性,且可定制化。
  • Lockable: 可以锁定多次尝试登录失败的用户账号。

如果没有它,光想想要我们自己来码上面的这些功能都够浪费时间的。重点是每个项目都得用啊。

FACTORY_GIRL_RAILS

gem 'factory_girl_rails'

Factory Girl可能是ROR测试中最常用到的数据工厂,没有它也只能手工写Fixture了。不解释了,它太常用了。

# spec/factories/user.rb
FactoryGirl.define do
  factory :user do
    first
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Ruby On Rails 常用的精品Gem汇总 下一篇在Linux上Ruby的安装

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目