`
hozaka
  • 浏览: 38069 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
这里作为我的主要 blog 的镜像,每次写新开发相关的文章我都会同步更新到这里。如果对其他方面的内容感兴趣(Web Development, Web Standards, JavaScript 等等,请访问 我的 blog - http://blog.hozaka.com
前几天在看 screencasts,发现一好插件:Hirb 。这是个扩展命令行的插件,可以以更加易读的形式展现方法返回的内容(比如以 mysql 输出的形式展现 ActiveRecord 实例)   gem install cldwalker-hirb --source http://gems.github.com/ # Append the following lines into ~/.irbrc require 'rubygems' require 'hirb' Hirb::View.enable  
Paperclip 是 Rails 的一个处理 attachment 的插件,相对于以往的 FileColumn 在灵活性和效率上更胜一筹,而且代码也比较好看。这个视频 简单的介绍了 Paperclip 的使用方法。 默认的设置,URL 的占位符中与模型本身相关的只有 id,但是一些情况下,你可能会更希望以其他形式来组织你的附件目录 - 比如以 SKU 来代替数据库记录的 id。这里我们暂不讨论这种做法的好坏,双方面的,好处是目录结构更具有维护性,坏处是万一以后升级数据库,SKU 加个前缀什么的… Here we go! 使用 paperclip 需要在 model 中调用 has_attac ...
一个多月之前,Rails 2.2.2 发布了,同时,官方紧接着发表声明,称 Rails 2.3 正在开发中。看到这个消息,一边感叹于 Rails Core Team 进度之紧凑,同时开始做一件很有意思的事情:在接下来的事件里,每天都检查一次 http://github.com/ra ...
原文地址:Merb gets merged into Rails 3! 一直一来,关于 Merb 与 Rails 之间的优劣与取舍之间的争论,伴随着两个框架的不断发展而没有停息。终于,在圣诞前夕,Merb 终于要于 Rails 3 合并了! 原文同时指出,这次的合并不是大规模的 Rails 代码重写(This is not a big bang rewrite),相对的,作为第一个合并的版本,两个团队更倾向于让两者并存,用户可以根据实际需求选择适合的组件(比如 ActiveRecord / Sequel / DM 作为 ORM)。无论如何,我个人都觉得这是一个非常好的开端,Rails 有了 ...
Rails 作为一个 MVC 框架,其核心包括三个模块:ActiveRecord,ActionController 和 ActionView。今天这篇博文的主角是 ActionView,解开模板系统的魔术。 通常情況下,通过 scaffold 已经能够建立简单的、包含CRUD基本功能的页面,完全不需要手动修改 view 的代码。即使不使用 scaffold ,Rails 也提供了众多的辅助方法,创造一个功能丰富的动态页面简直是易如反掌。但是,会用不代表深入理解,最近有朋友问我这些问题: 为什么编辑一个对象需要在 Controller 创造一个实例变量 View 通过什么方式访问这些实例变 ...
Rails 支持 L10N 的插件并不算非常多,而其中的 Gettext 由于 GNU 的缘故应该算是比较普遍的了。相信很多人在对 Rails 项目进行本地化的时候都会接触过这个插件。 但是不知道有多少人在部署 Rails 项目的时候留意过 mongrel 的内存使用情况(这里以 mongrel 举例仅仅是因为比较常见,其他部署方式也会有类似的情况)。至少在我的项目中,mongrel 占用的内存会不停的增长,不得不把所有 mongrel 加入 monit 并把内存占用作为监视条件。 空闲的时候稍微分析过它的源代码。导致内存泄漏的原因其实很简单,插件内部使用一个 Class 的实例对象作为 H ...
前段时间在项目中加入一个新的 Upload Attachment ,很顺利的部署到了 LIVE。但是在使用过程中,很意外的收到了 Exception Notification Mails ,总结下来都具有以下特点 访问 Upload Attachment 浏览器都是 Safari Raw Post 数据段有空白 报告 undefined method `read' for "":String 根据这些线索,在 dev 环境下模拟了各种可能的情况,终于重现了这个 BUG:不选择任何文件。这个结果很让人感到意外,Rails 在处理一个请求的时候会自动的将 multipar ...
在 Windows 平台上 Command Prompt 之烂为很多开发人员所诟病,任何一方面都不能和 Linux 或者 Mac OS 的 Terminal 相比。一个朋友推荐我使用 Console2 ,用过以后爱不释手,唯一的问题就是在显示中文的时候会产生错位。在 Google 和 SourceForge 上查了很多资料,也稍微了解了一下 Console2 的工作方式,解决这个问题并不是很复杂。产生这个 bug 的原因是因为 Console2 只是作为一个 command 窗口的代理,负责讲输入输出流在两个窗口之间传递,而输出部分则是读屏的方式,因此收到 Command 窗口字体设置的影响,了 ...
对 include 很多开发者避而不谈,也有很多人趋之若骛。其实归根结底只是生成了不同的 SQL 语句。至于造成的影响,见人见智,当然和项目的需求有很大的关系。 但是有一点,include 既不是天使也不是恶魔。 合理的使用 include 可以避免 N+1 的问题,但是 Rails 生成的 SQL 确实不怎么好看……而且今天还发现了一个问题: A 中声明了一个关系 has_many :items, :order => 'some_time_field DESC' 但是在执行 A.find(123, :include => :items) 的时候,可以发现对象的 items 集合 ...
当前的项目有一个需求:网站有多个语言的版本,但是翻译工作不是由公司总部的人完成,翻译工作人员分布在世界各地;另一个情况就是项目经常更新,换句话说 catelog 会经常更新。面对这样的情况,老板要求不使用 poEdit 客户端,而使用 web 方式来访问、修改和更新。因为项目是基于  Ruby on Rails 开发的,I18N 的实现使用  GetText  ,面对这样的要求,自然反应就是需要一个 po parser ,放在 prealpha 服务器上,所有的翻译工作人员通过这个页面来管理自己所负责的 catelog。google 了好多内容,都没有发现一个现成的 po file parser ...
昨天在对旧项目做修补的时候,重写了一个通用的 Validator 类,本来打算以后在其他项目中也可以使用。写完以后在浏览器下测试,Internet Explorer,Firefox 下都表现得非常好,然而在 Safari 下,无论如何都没有反应。由于当时是作为表单验证的,绑定在 onsubmit 事件中, onsubmit="return checkForm();"。第一反应就是:难道 Safari 不支持这种写法?来来回回折腾了半天,终于发现问题了。在类的内部,一个方法定义中,变量没有加 var 声明。因为这个原因,导致 JavaScript 解析到这里出错,类无法加载。偏 ...
最近公司一个项目,需要将新网站接入美国总部的 ERP 系统,同时对流程做一部分的扩展。在这之中碰到的最大的问题,就是没有旧系统的设计并不符合 ERP 的需求,而因为要保证整个过程的无缝链接以及敏感数据的安全,对于数据库的改动限制非常大。同事 Daniel 负责这次的更新,我们对这个问题也讨论过好多次,在 Rails 如何实现这样的功能呢。最后选出了一种不破坏旧系统的结构,也不需要数据导入的方式。只在需要进行 ERP 扩展的对象上增加相应的字段,然后使用 Order 对象的子类 ERPOrder 进行封装,将这个类传递到 ERP 系统代替原来的 order 对象。这样下来,几乎整个 ERP 的交互 ...
最近因为有做多语言版本的需要,多了解了一些 rails 与 i18n 的内容。rails 项目要实现多语言版本,也就是我们常说的 i18n,有好多种实现方式。不过最普遍使用的,就是 gettext 。虽然网上有许多利用 gettext 实现国际化的例子与示例代码,但是照抄那些代码并不能给自己带来实质性的提高,还是需要总结一下的。gettext 的工作原理,是将所有需要国际化的字符串,以类似于 Java 的资源的形式引用,例如 _('COMPANY_NAME') 实际上就是把 COMPANY_NAME 作为资源键,通过方法 _() 就能得到所需语言的字符串。建立这个字符串资源需要使用到 poedi ...
5.1 去了北京一趟,易游的 OpenID 的开发暂停了一段时间,回来以后如期完成。虽然这次在北京有很多收获,都是对个人的,但是回来以后要处理的事情太多了,没有时间来 blog 记录下来。5 月 16 号,易游 OpenID 通行证 终于上线了。 OpenID 这东西,虽然 2 年以前就推出了,不过一直没有进行推广。最近不知道由于什么契机,进入了全世界的视线。简单的描述 OpenID 的作用,就是使用一个全球唯一的 URI 地址,比如 hozaka.inu.cc ,作为你在所有支持 OpenID站点的 ID,以此免去了记录不同的用户名、不同的密码,以及繁琐的注册操作。这其中的便利只有真正了解或者 ...
Global site tag (gtag.js) - Google Analytics