`
hot88zh
  • 浏览: 182936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

Rails Cache

这两天一直在弄 cache,page cache基本不可用,因为它控制不了权限。action cache应该是可以执行filter的,不过不得法用的有点异常。最后还是fragment cache比较靠谱,简单好用。不过截止到现在 expire_fragment 还有点不正常,我用的是正则匹配的方式,好像删的不彻底,不过被缓存页面确实变化了。周一在盯着log看看。 两篇关于cache的tutorial:文章1 ,文章2   还有这篇 也可以看看
大量地方都会有这样的问题:给大段文字做一个截断当作摘要,但是一定要保证 html markup valid。 最简单的方式是删掉所有的 html 标签然后截断,这样做的结果是产生一陀文字,没有换行,没有任何样式! 方法是: tr.gsub(/<\/?[^>]*>/, "") 比较好的办法是像这篇文章里说的利用REXML和一个队列去完成 ,下面的评论中提到用 HTMLEntities 可以改善截断问题,但是在测试中发现会有UTF-8 invalid 问题(需要3bytes,只传2bytes,不知道是不是我数据的问题),于 ...
今天看ActionController::AbstractRequest的文档, 发现relative_url_root的解释竟然是这样的: Returns the path minus the web server relative installation directory. This can be set with the environment variable RAILS_RELATIVE_URL_ROOT. It can be automatically extracted for Apache setups. If the server is not Apache, ...
ActiveRecord 是好东西,可以简化很多代码,在 Rails 之外做数据维护时也是超级好用。今天需要在两个数据库之间做下数据迁移,因为 schema 有变,所以 mysqldump 基本没什么用。 先是发现了一个 ar_fixture 的插件,使用方法极度简单,但是出现了 UTF-8 不支持的问题,我数据库里使用中文的字段竟然按照 binary 处理,不理解。 最终找到一篇文章 很靠谱,实验一下,问题搞定。 先写一个数据库配置文件 database.yml db1: adapter: mysql host: localhost username: root ...
最近正式推出 Google Apps ,提供了 Email/Calendar/Docs/… 一堆功能,最重要的一个就是 Email 了,大家可以在 Gmail 中使用自己的域名。我们为多背一公斤申请了 1kg.org 。设置了 MX 记录和 CNAME,不知为何现在 mail/docs/calendar.1kg.org 都无法访问,但是通过 nslookup 查看已经指向 Google 的 server 了。邮件功能倒是工作正常,给自己申请的 suave.su # 1kg.org 可以正常收到邮件。 Google  这服务对我来说最重要的是可以作为邮件服务器为网站发一些欢迎/提醒之 ...
一直使用 restful_authentication 作用户认证,最近它加上的状态机功能 (用了 acts_as_state_machine),装上以后遇到灵异事件,系统发出的激活邮件里面的激活码和数据库里面存的不一样。我并不了解 acts_as_state_machine 的具体机制,只是觉得下面一行可能运行了两遍: state :pending, :enter => :make_activation_code Google 了一下,在作者的 README 里找到答案: Pay attention, may be this is not an issue ...
跑在线上的 railsapp 抛出来的 exception 很重要, 依靠它才能发现实际的 bug, 但是看 production log 是完全不靠谱的方式, 之前有个 exception notifier plugin 可以在出现异常的时候发邮件, 但是我没有 smtp server 怎么办? 急人之所急, 想人之所想, 老外抓住了这个细分市场, 出现了两个专门捕捉 exception 的 SaaS: getexceptional.com , hoptoadapp.com 我用了第二个, 界面比较Q, 注册个免费帐户(高级服务是要收费的), 安装指定插件, 但是测试插件出现 ...
使用 acts_as_taggable_on_steroids 之后经常找有某个 tag 的 item:     @items = Item.find_tagged_with(”tag”) 找到很多需要分页显示,于是顺利成章的在后面加上:     @items = Item.find_tagged_with(”tag”).paginate :page => paramsp[:page] || 1, :per_page => 20 发现无效!原因是 find_tagged_with 返回的是 Array,will_paginate 强大的分页功能瞬时歇菜。 于是乎整合一下 ...
我所有的项目几乎都用 restful_authentication 做了用户管理这部分,应用中经常要在 model 中调用 current_user,而这个是 session 相关的信息,在 Model 中不应直接读到,Google 到一个比较不错的办法 ,是 Beast 的作者提供的。 首先在 User Model 中加入一个类变量: class User < ActiveRecord::Base cattr_accessor :current_user ... end 之后在 ApplicationController 中用 before_filter 给刚才的类 ...
在 Google Translate 上面有个很实用的 browser bookmark,实际上是一段 js 脚本,用它可以将当前网页用 Google Translate 翻译成各种语言。 这段 js 一样可以用在你的网站中,这样就能给网站添加一个简化的多语言版本了,最大的问题也就是你网站的界面设计可能不适应翻译过来的语言。 如果想让翻译的页面在新窗口中打开,可以参考这篇博客 方式就是将 location.href = 改成 window_name = window.open(…)
好友动态在各大社交网站中基本上已经是标配了,而且一般都会显示在用户登录之后的默认首页上,这种做法的确方便用户了解网站和自己朋友的一些动态。设计上应该如何实现呢?Google 了一些资料,整理在下面,欢迎有实际经验的朋友指点! 用户看到的可能是三种情况: 我的动态 好友的动态 全站的动态 朋友动态这种信息,根据网站的实际情况需要考虑几个问题: 1、是否只让用户看到最新n条?(海内的最新动态数量是固定的,采用先进先出原则,用户只能看到最新的n条;而UCH则可以每页150条允许用户翻页 ) 2、用户增减好友后,朋友动态是否能够立刻体现出变化?(在海内,我如果在好友名单中 ...
  原文: Ruby on Rails Rake Tutorial (aka. How rake turned me into an alcoholic) 引言:作为一个 rails 的开发者,你可能很熟悉使用 rake 进行你的测试,或者使用 rake db:migrate 运行你的 migrations ,但是你真的知道 Rake 的背后故事吗?你意识到可以自己写一个 Rake 任务或者一个有用的 lib 吗 ? 下面是我们使用 Rake 任务的例子: 1 、给列表中的用户发送邮件 2 、每晚数据的计算和 ...
最近要研究一个项目,由于数据量比较大(据一开始的估计,大概会有1000万条每个表里面),所以一直不知道用什么数据库,以前做ROR项目的时候,总是用MySQL,因为开源,而且速度快。   但是现在不知道应该使用什么数据库……以前也从来没有做过这么大数据量的项目,而且用ROR到底合适不合适,从网上看,ROR目前不适合的项目只是那些“killer Application”,这个项目大概就是一种B2B的平台,采用ROR应该没有什么问题吧。。。。。   从网上找了点MySQL、Oracle、SqlServer的优缺点: MySql : 优点: 1.支持5000万条记录的数据仓库 2.适 ...
我们要用cookies来实现这个功能,大多数用户使用session来实现存储用户的登录信息,这是一个很好的做法。session跟cookie不同,session可以自动加密要存储的信息并用浏览器的cookie来存储。 ActionController#cookie提供了一个在浏览器存储信息的方法,但是不能自动加密,如果你需要的话,可以自己加密。   如果一个用户选择了remember me这个功能登录了之后,我们需要把session的过期时间设置的长一点,比如30天,但是只改变这一个session的过期时间很难。   首先我们要创建两个cookie: 第一个:存储用户的ID信息,当然你 ...
* 将你的程序所用到的密码和API证书号保存在一个自定义的配置文件中。我使用一个YAML并沿用了database.yml类似的格式。 * 有需要的时候就使用常量。不要重复诸如你的客服邮件地址这类字符串,而是将它们保存在常量中(可以保存在environment.rb或者你自己的配置文件中),然后在整个程序中使用该常量。 * 保持使用UTC时间,这可以使你的程序有更好的一贯性。(不过Rails 2.1的Timezone可提供更好的功能) * 请勿在一个 Active Record? 数据模型中遍历另一个数据模型。那样的话会产生大量的SQL查询操作。正确的实现方法是:1)如果多 ...
Global site tag (gtag.js) - Google Analytics