`
文章列表
一个挺有意思的问题,想了半天没有解决办法。 情景是这样的:系统中有两种category,system_category和user_category,所有属性都一样,只是一个是系统分类,一个是用户自己的分类。比如javaeye就是有这样的机制。用户发文时可以同时选择system_category和user_category。假如数据库的设计是system_category和user_category都在一张表categories中。那么Category和Article类的代码大致如下: # Category.rb class Category < ActiveRecord::Base ...
大家可以试验一下,在我的开发环境中会出现这个问题,不知道是不是只有我有问题。做法如下: [list] 随便建立一个Rails工程; 随便生成一个scaffold_resource,比如map.resources :articles; 在routes.rb中加入如下代码,添加自己的routes mapping: map.articles_paginate "articles;paginate", :controller => 'articles', :action => 'paginate', :conditions => { :method => ...
从来没真正部署过一个production级别的rails应用,但是9月份很可能要部署一个,所以最近也开始关注Rails的部署问题。这里算是抛砖引玉吧,还请各位有经验的同志热烈讨论,我想很多人也都对这方面很感兴趣。 Robbin之前的帖子里面讨论过如何选择Rails的部署方案,也挺详细的,我估计硬件和操作系统方面大家分歧应该不大,总归是linux,服务器越强劲,内存越大越好。所以问题就到了软件方面。数据库大概也不用怎么讨论,mysql之类的东西大家心里都有数。关键还是server的问题。 JavaEye现在用的server应该是lighttpd和fastcgi吧,从大家浏览网站的体验上看,性能 ...
如果整个routes是使用传统的mvc方式实现的话,我们可以简单地记录一下当前的controller和action的名字,等到登录成功之后就可以redirect过去。 但是如果使用REST,则就不能简单地记录controller和action,例如/articles/1;edit这样的url就比较特别。另外一个问题是,除了要记录url外,还要记录使用什么HTTP Method,是GET, Post, PUT还是DELETE。 如果涉及到的action就是标准的index, create, new, show, update, edit, destory,那么可以使用一个case判断,然后调用 ...
刚刚逛了一圈论坛,竟然没人提到这么个消息,难道Eclipse真的没落啦? Europa的事儿咱就不说了,之前有一位仁兄已经讲得很清楚了。今天上午到Eclipse主页上溜达了一下,发现3.3在昨天发布了,应该算是一个不小的新闻哦。记得 ...
安装了那个Locomotive,还有iTerm,还有Textmate,以为就万事大吉了。然后运行gem安装ferret,没想到竟然报错说无法make。到命令行下试了一下,果然不能使用gcc啊,make啊这样的东东。Mac不是Unix-based灭? 于是去google了一下,发现要装个xcode才能搞定这些东东,敢情apple把这些东西都给踢掉了啊。在去看看xcode,倒还是免费的,不过安装程序就有900M多,好不容易下载下来了,安装竟然要将近3GB!!可怜我一共只有40GB硬盘的小白啊... 你说我一不会去写cocoa之类的东东,而不会在xcode里面写java。我就是想要个gcc和mak ...
这里说的是通过apt-get安装ruby,自己编译的情况就免了。 首先,在安装ruby本身时一定要把ruby和ruby-dev全安装了。现在的版本是1.8,因此应该执行如下命令 sudo apt-get install ruby1.8 ruby1.8-dev rubygems 这是因为许多plugin或者gems都要依赖dev下面的东东,比如ferret就要用到一个叫mkmf的东西,后者就是包含在dev中的。 然后可以gem或者apt-get来安装rails,不过推荐前者,因为版本肯定是最新的。比如我用的源里面的rails还不是1.2的呢,用apt-get就不好了。 最后就是找找这 ...
在使用RoR创建form时,很多时候需要基于model之间的关系创建ComboBox。RoR提供了很多方便的helper方法帮助我们完成一个 form的创建。例如,如果想要为article创建一个form,并且要为article选择category时,可以使用如下方法: <% form_for(:material, :url => url, :html => { :method => method }) do |f| %> <p><label>Name</label><br/> <%= f.tex ...
本来一直都是用Windows的,虽然早就想全面转移到Linux上面来,但是一直比较懒,而且对Linux也不熟,所以一直都没有真正实现。昨天中了一个比较恶心的病毒,忙于杀毒之余,一气之下就决定全面转到Linux上来了。再加上另外一台是apple的本本,看来真是快要告别Windows了,哈哈。 花了好长时间才把文件都备份到了ftp服务器上(服务器是Windows的desktop),然后安装Ubuntu,这些都是轻车熟路了,然后更新系统,同时开始把文件都下载回来。然后,著名的乱码问题就出现了。 先是用FileZilla试验了一下,不行;然后gFTP也不行,虽说有补丁,但是貌似和最新版本不兼容,我也 ...
这阵子正打算用Rails做个东东,所以开始系统地学习起了Rails。巧合的是,大概两周前,dlee邀请我加入Fielding博士关于REST的那篇论文的翻译团队。可以说Rails和REST这两个最热门的词汇几乎同时挤入了我的生活。随着我对Rails的学习和对[Fielding]的翻译,我也开始对REST产生了一些不太成熟的想法,写在这里与大家分享,同时也起到抛砖引玉的作用,欢迎大家讨论。 先复习一下REST的基本思想。[Fielding]把REST形式化地定义为一种架构风格(architecture style),它有架构元素(element)和架构约束(constraint)组成。这些概念比 ...
Ruby的动态语言特性和强大的meta-programming模型一直是让我这种Java程序员唏嘘感慨。看着RoR可以实现那么多魔术般的事情而不费吹灰之力,我着实想好好学学Ruby的meta-programming。可惜这方面资料好像比较少(至少我是没有找到什么好的,JavaEye这里讨论的也不多),我只能硬着头皮自己慢慢摸索。这篇文章只能算是一个最简单的入门,给大家展示一下Ruby中的meta-programming大概是什么样子。 下面代码大概会做一下事情: 根据指定的txt文件动态创建一个class,例如“people.txt”会被创建为People。 txt文件的第一 ...
代码很简单: try {    IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();    IWebBrowser browser = support.createBrowser("Some_ID");    browser.openURL(new URL(("http://www.eclipse.org")));} catch (PartInitException e) {    e.printStackTrace();} catch (Malf ...
Platform: Eclipse 3.2Dialog是SWT和JFace的一个重要的组成部分,我们在开发Plug-in或RCP的时候也经常会用到它们。这篇随笔不会介绍 SWT的Dialog,因为我想很多人都已经非常熟悉它了。在这里,我要讨论的是JFace的Dialog,或者更进一步说是JFace的 TitleAreaDialog。什么是TitleAreaDialog呢?想想我们常常用到的New XX Wizard就知道了。在我们创建一个Java Project或Class的时候,我们所使用的Wizard其实就是由TitleAreaDialog构成的。这种Dialog有如下所示的 TitleAr ...
Platform: Eclipse 3.2Eclipse Plug-in开发离不开与用户的交互,我们往往把用户的鼠标点击之类动作所调用的代码包装成一个Action。例如,如果用户点击了一个Menu Item,那么绑定到这个Menu Item上的Action就会运行,这一切都很直观。但是有的时候,用户触发的操作可能需要很长时间才能完成,比如连接数据库,在这种情况下,就必须把鼠标的状态改为忙碌,这样就可以用沙漏手势提示用户当前操作正在进行,也避免了用户在等待当前操作的时候又去触发其他的操作。那么如何实现这一点呢?Eclipse有一个High-level的实现,也有一个Low-level的实现。因为后 ...
Platform: Eclipse 3.2开发任何软件都不得不处理Exception和Log,Eclipse Plug-in也是如此。不过幸运的是,Eclipse PDE提供了记录及显示Exception和Log的机制:Error Log View。作为Eclipse SDK的一部分,PDE的普及率很高,所以除非你是要做RCP,不然的话用Error Log View处理Exception和Log应该是你的最佳选择。当然,这也带来了对PDE的依赖性。使用Error Log View实际上非常简单,每个Plug-in的Activator类都有一个getLog()方法,返回一个ILog对象,这个对象就 ...
Global site tag (gtag.js) - Google Analytics