Gruff和缓存图表
之前已经介绍了一些关于Gruff的基础知识和应用,当然gruff的图表是生成的,当时生产,就存在缓存的问题。那么,我们看一个Gruff缓存的例子:
[b]
1. 安装插件[/b]
sudo gem install gruff
[b]2. Rails中进行配置 [/b]
Rails::Initializer.run do |config| config.gem 'gruff', :lib => 'gruff', :version => '0.3.4 end
[b]3. 在Controller的调用[/b]
class GruffController < PortalController append_before_filter :load_graph, :only => [total_orders_graph, :top_sellers_graph] caches_action :recent_orders_graph, :expires_in => 1.day.to_i
def total_orders_graph orders_graph = @graph.generate_total_orders send_data orders_graph.to_blob , :type => 'image/png' end
private def load_graph @graph = Graphs::ClientGraph.new(@CURRENT_CLIENT) end end
[b]4. 在model中进行cache[/b]
class Graphs::ClientGraph def initialize(client) @client = client end
def generate_total_orders total_orders_graph = Gruff::Bar.new total_orders_graph.title = "Orders" dates = working_week total_orders_graph.labels = Hash[*dates.collect{|date|[dates.index(date), date.strftime("%d %b")]}.flatten]
datasets = [] for date in dates datasets.push(@client.orders.on_day (date.beginning_of_day,date.end_of_day).count) end
total_orders_graph.data(:total_orders,datasets, '#009900') total_orders_graph.x_axis_label = 'Date' total_orders_graph.y_axis_label = "Total" total_orders_graph.hide_legend = true total_orders_graph end
private def working_week days_in_a_week = 7 dates = [] days_in_a_week.times do |day_value| date = Date.today - day_value.days dates.push date if date.wday != 0 && date.wday != 6 end dates.reverse end end
[b]5. Html的显示[/b]
<%= image_tag( url_for(:action => :total_orders_graph, :controller => :client_dashboard), :size => '500x400') -%>
[b]6. 生成效果如下[/b]
[img]/upload/attachment/131711/0ab5b269-07de-3e92-ac7c-5d6774afcca6.png[/img]
Gruff和缓存图表相关推荐
- Gruff: Rails 经典图表生成库简介
Rails:Gruff进阶应用 [url=http://hlee.iteye.com/admin/blogs/438594]点这里[/url] 有关Gruff如何缓存和提高速度 [url=http:/ ...
- CentOS 6.5+Syslog-ng+LogZilla搭建中央日志服务器
分类: 开源技术 概述 syslog-ng是基于syslog协议的Unix和类Unix系统的开源软件.它基于原来syslogd的模型,扩展了富的过滤功能,灵活的配置选项,添加了重要的功能,如使用TCP ...
- 最完整版iOS资源大全中文版
我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-ios 就是 vsouza 发起维护的 iOS 资源列表,内容包括:框架.组件.测试.App ...
- iOS中文版资源库,非常全
转自:http://www.cnblogs.com/WG-WA/p/5697098.html 目录 入门 库和框架 音频 动画 Apple TV 桥接 缓存 Core Data 图表 数据库 硬件 ...
- [绍棠] iOS不错的框架
入门 Road Map iOS– 开发 iOS 应用从今天开始,苹果指南.★ Lifehacker– 我想写一个 iOS 应用,该从哪里开始? Codeproject– 入门 iPhone 和 iOS ...
- Ganglia_简述
一.Ganglia概述 规模的问题 Ganglia的运行和绝大多数监控系统是不一样的, Ganglia设计最大的考虑就是为了解决规模的问题. 主机即监控系统 基于冗余的结构 Ganglia 假设用户主 ...
- iOS 程序员必须收藏的资源大全
这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Testing )和其他的开源项目,免费的和付费的服务.每个部分中的项目没有先后顺序,均是按照提交 ...
- primefaces_通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
primefaces 在这篇文章中,您将看到如何结合PrimeFaces和OmniFaces获得可缓存的图表. 为了使事情变得简单,我们将使用PrimeFaces 折线图. 对于这种图表,我们可以在页 ...
- 通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
在这篇文章中,您将看到如何结合PrimeFaces和OmniFaces获得可缓存的图表. 为了使事情变得简单,我们将使用PrimeFaces 折线图. 对于这种图表,我们可以在页面中使用<p:c ...
最新文章
- 底层原理_自动装箱与拆箱底层原理
- latex中erro:extra alignment tab has changed to\cr但列数没错的解决方法
- 程序包清单签名验证失败_数字世界的手写签名
- Helloworld之Spring依赖注入/控制反转(DI/IoC)版
- 保姆级教程--常见的内网穿透有哪几种
- 重启tomcat服务器
- CCSK认证,提升云安全专业技能,助力职业生涯发展
- 香港驾驶执照免试换领的官方收取费用是多少?可以在那些国家与地方使用。
- 微商客源如何引流?坚持操作喜马拉雅日引50+粉丝
- 一个简单实用的电子称数据接收/解析类(C#)(附简单使用实例)
- 脱 PECompact 2.x - Jeremy Collake 壳
- arg是什么函数_不定参数函数实现var_arg系列的宏
- HTML 基础教程:HTML 基础教程
- Facebook陷史上最大危机:近7千页机密文件泄露,Libra恐无缘明年推出
- 飞凌嵌入式 全志A40i系列开发板试用体验之开箱
- Ubuntu 16.04 安装札记
- IDEA添加子Module的正确姿势
- 通过新浪云部署Node.js微信小程序商城(不用买域名、不用备案、不用配置https)...
- mysql-5.6.25-winx64安装
- 转:团队沟通的五大障碍