设为首页 加入收藏

TOP

Ruby On Rails 常用的精品Gem汇总(四)
2017-10-10 12:07:49 】 浏览:7219
Tags:Ruby Rails 常用 精品 Gem 汇总
der
, vendor: 'twitter' format :json prefix :api helpers do def current_user @current_user ||= User.authorize!(env) end def authenticate! error!('401 Unauthorized', 401) unless current_user end end resource :statuses do desc 'Return a public timeline.' get :public_timeline do Status.limit(20) end desc 'Return a personal timeline.' get :home_timeline do authenticate! current_user.statuses.limit(20) end desc 'Return a status.' params do requires :id, type: Integer, desc: 'Status id.' end route_param :id do get do Status.find(params[:id]) end end desc 'Create a status.' params do requires :status, type: String, desc: 'Your status.' end post do authenticate! Status.create!({ user: current_user, text: params[:status] }) end desc 'Update a status.' params do requires :id, type: String, desc: 'Status ID.' requires :status, type: String, desc: 'Your status.' end put ':id' do authenticate! current_user.statuses.find(params[:id]).update({ user: current_user, text: params[:status] }) end desc 'Delete a status.' params do requires :id, type: String, desc: 'Status ID.' end delete ':id' do authenticate! current_user.statuses.find(params[:id]).destroy end end end end

CANCANCAN

gem 'cancancan', '~> 1.10'

它是 CanCan 项目的代替品,它其实就是为我们的应用加入操作权限控制,而且比较好的地方是可以将所有的操作权限放在至到一个独立的文件之中。

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :all
    else
      can :read, :all
    end
  end
end

而它的另一个比较新后来者就可以数 pundit 了, 由于在RubyGems上的下载量才7万多,所以就不独列出数了。但值得注意的是它在GitHub上的start是6K多,已超越CanCanCan的Repository。

如果有做过操作权限控制的朋友可能都会发现,操作极权限控制是很耗费性能的,而 pundit 则号称在性能上会超越 CanCanCan,

Pundit 更为模块化,对于体量较大的程序我觉得更为之合适,至少不会写出一个几百行的大文件出来,不利于维护。

ActiveAdmin

gem 'activeadmin', github: 'activeadmin'

这是一个相当不错的管理界面应用gem, 基本不需要做什么需求就能上项目了。从RubyGems的百万级下载量也可以得知其受欢迎的程度了。感觉上是有点仿 Wordpress 的 Dashboard。

我个人是很喜欢 ActivateAdmin 的DSL定义的,因为既简单又快速:

ActiveAdmin.register Product do
    scope :all, default: true
    scope :available
    scope :drafts

    filter :title
    filter :author, as: :select, collection: ->{ Product.authors }
    filter :price
    filter :create_at

    index do
        column :title
        column "Price", sortable: :price do |product|
            number_to_currency product.price
        end
        defualt_actions
    end
end 

这样的代码几乎就是秒懂,不解释了。这家伙谁用谁说好 ^_^

他们的官网也做得挺好的,这里是一些关于 ActivateAdmin 的资源链接:

相关 gem

rails_admin

$ rails g rails_admin:install

与 ActiveAdmin 相比 rails_admin 就逊色的多了,但在 GitHub 上却表现不俗。在代码质量上其实两者相去不远,只是 ActiveAdmin 更好看一些,而 rails_admin 的界面就做得有点渣,要上项目的话必须得作出很多的修改。

以下是 rails_admin 的特色:

  • 对任何数据都可支持 CRUD
  • 自定义操作
  • 自动化表单验证
  • 支持查找与过滤
  • 可以将数据导出为 CSV/JSON/XML 格式
  • 支持 Devise 的身份验证
  • 支持 CanCanCan 或 Pundit 的权限判定
  • 通过 PaperTrail 支持用户操作历史
  • 支持多种ORM
    • ActiveRecord
    • Mongoid

Sunspot

gem 'sunspot_rails'
gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development

Sunspot 是一个 Solr 搜索引擎的 Ruby 库。它基于 RSolr 库构建,提供低级别的 Solr 集成接口。它的定义很简单,使用也相当容易,用DSL就可索引对象和启用搜索了。

它的主要特点:

  • 全文搜索
  • ActiveRecord
  • 英文分词
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇scrapy 使用 下一篇Ruby On Rails 常用的精品Gem汇总

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目