十月 31, 2007

A former student asked me a few days ago how I learned Ruby on Rails. The
answer was that I simply read alot of great tutorials. So in the spirit of
sharing, here are the 12 tutorials that I found most useful:

  1. Rolling
    with Ruby on Rails
    - Curtis Hibbs of ONLamp.com offers his first excellent
    introduction to Ruby on Rails. This is the article that got me really excited
    about RoR.
  2. Rolling
    with Ruby on Rails, Part 2
    - The sequel to Curtis Hibbs excellent series of
    articles.
  3. Four Days on Rails (PDF) - a great
    tutorial that is broken down into simple tasks that you can do over a four day
    period. To be quite honest, this tutorial only takes about 2 hours, but
    nonetheless it is very well organized!
  4. Really
    Getting Started in Rails
    - Amy Hoy has a great tutorial that not only covers
    RoR, but also introduces the reader to many of the basic concepts of the very
    cool Ruby scripting language.
  5. Tutorial in Ruby
    on Rails
    - is a basic tutorial aimed at newbies.
  6. Fast-track
    your Web apps with Ruby on Rails
    - IBM jumps into the sandbox with an
    excellent (as usual) tutorial to get you on your feet fast.
  7. Getting
    Your Feet Wet With Ruby on Rails
    - Talking about getting on your feet fast,
    this one from Webmonkey promises to get them wet too!
  8. How to
    make a todo list program with Rails
    - Another excellent introductory
    tutorial that actually helps you build something useful!
  9. Ajax
    on Rails
    - Curtis Hibbs offers part 3 of his look at RoR
  10. Many
    to Many Tutorial for Rails (PDF)
    - is a nice document that begins to delve
    into some of the more complex parts of web application programming, but in fine
    Ruby on Rails manner, it’s really not too complicated!
  11. Distributing
    Rails Applications - A Tutorial
    - So now you’ve built your RoR application,
    how to you push it to a production server? This tutorial covers the bases.
  12. Installing Ruby on
    Rails with Lighttpd and MySQL on Fedora Core 4
    - and of course this list
    wouldn’t be complete without a shameless bit of self-promotion, this tutorial
    promises what it says. Other install tutorials can be found here, here and here!

Happy Rails developing and if you have any other tutorials that you’d like to
share, please leave them in the comments!

Powered by ScribeFire.

十月 30, 2007

在suse10下安装ruby on rails 遇到一些问题记录下来。

1、安装mysql-rub出错。

gem install mysql 报错,原因为没有安装mysql-devel.

2、安装rmagick出错
checking for Magick-config… no
checking for GraphicsMagick-config… no

未安装imagemagick-devel包。

 首先在 Windows 上面安裝 Ruby on Rails ,有两种方式

  1. 直接使用 Instant Rails一次全部安裝好
  2. 使用Ruby oneclick Installer分批安裝

我們來看看第一個方法,也應該是最快的方式,使用 Instant Rails 來一次全部弄好,Instant Rails 網頁上簡介是

Instant Rails is a one-stop Rails runtime solution containing Ruby, Rails, Apache, and MySQL, all preconfigured and ready to run. No installer, you simply drop it into the directory of your choice and run it. It does not modify your system environment.

所以安裝他一次就可以將所有 Ruby on Rails ,Apache ,MySQL 都裝好,有種 Appserv 的感覺。並且你還可以額外安裝 Typo, SCGI, Mongrel, 和 HighLine ,最近他連 Rad Rails 都有附,真是太簡便了。這裡有一個 Tutorial 有關於 Instant Rails ,可以看看。

其次的安裝方式是先裝 Ruby ,再用 gem 安裝其他東西。要在 Windows 上面安裝 Ruby 就使用Ruby oneclick Installer 來安裝即可,聽他的名字就知道他只需要 one click 即可安裝。等到安裝完 Ruby ,Ruby oneclick Installer 會順便裝好 gem ,再利用

gem i rails -y

安裝 Ruby on Rails 就好啦。不過安裝 apache ,mysql…..東西,就可能要你自己好好的 survey 一下。ONLamp 有一篇 Rolling with Ruby on Rails 是一篇不錯的 Tutorial ,可以試試看,這裡也有一篇在winxp中手工安装Ruby on Rails 笔记可以試試看,這裡也有 Robbin 寫的
在Windows平台使用Apache2.2和Mongrel运行Ruby on Rails

至於大家關心的 IDE 部份,我推薦 RadRails ,這是從 Eclipse 改的 Ruby on Rails IDE,可能是 TextMate 以外最好的 IDE,Instant Rails 已經有附,直接拿來用即可。

下面是我用One-Click Ruby Install 安装的详细步骤

一、安装Ruby、rails、mongrel和lighttpd

从rubyforge网站下载One-Click Ruby Install,运行安装程序,就安装好了ruby和rubygems。

运行命令:

gem update –system #这步是用来升级rubygems的。

gem install rails –-include-dependences

gem install mongrel –y

gem install mongrel_service -y

安装好了rails和mongrel

二、把Mongrel作为Services启动

mongrel_rails service::install -N depot -c d:\Rubyproject\depot -p 3000 –e production

-N指明服务名称,-d指明rails应用的目录,-p是mongrel监听的tcp端口,-e是启动模式为生产模式

这样打开控制面版|管理工具|服务,就可以发现增加了一项名为“depot”的服务,就可以通过控制面版来管理服务了。如果需要命令行启动和关闭该服务,那么:

mongrel_rails service::start -N depot

mongrel_rails service::stop -N depot

如果需要从服务中注销该项服务,那么:

mongrel_rails service::remove -N depot

如果需要安装多个mongrel实例,那么可以这样:

mongrel_rails service::install -N depot0 -c d:\Rubyproject\depot -p 3000 –e production

mongrel_rails service::install -N depot1 -c d:\Rubyproject\depot -p 3001 –e production

诸如此类。

三、安装配置lighttpd

安装Windows版本的Lighttpd
下载地址是:http://www.kevinworthington.com:8181/?p=116,windows版本的lighttpd默认被安装在c:/lighttpd,这个安装位置是不能修改的。

配置Lighttpd,配置port:

打开c:\lighttpd\etc\lighttpd.conf

取消 server.port = 81 前的注释,你也可以使用port:80

开启模块,其他模块不要乱开,会出问题

server.modules = (”mod_proxy”,
“mod_rewrite”,
“mod_accesslog”,
“mod_alias” )

另外在这个配置文件末位加上:

proxy.debug = 0
proxy.balance = “fair”
proxy.server = ( “/” =>
(
( “host” => “127.0.0.1″, “port” => 3000 ),
( “host” => “127.0.0.1″, “port” => 3001 )
)
)

这里的port就是Mongrel server的port,启动Lighttpd使用命令:

c:\lighttpd\sbin\lighttpd.exe -D -f c:\lighttpd\etc\lighttpd.conf

通过http://localhost:81/ 就可以成功访问了哈。

四、安装rmagick

在windows环境下,旧版本的Rmagick安装完gem后,需要运行一个postinstall.rb来设置windows字体等。新版本的Rmagick没有这个步骤,代替是安装ImageMagick。我按照README安装成功后,在rails中使用还是出现无法读取字体的错误,忍无可忍又换了旧版本的Rmagick,没想到跟ruby的解释器版本不一致,render templage的时候出现parse error类型的错误。认真比对了下新老版本的差别,原来旧版本的Rmagick在Config目录下多了个type-windows.xml来设置windows字体,在此记录下正确的安装方法:

1.到http://rubyforge.org/frs/?group_id=12&release_id=8170,下载RMagick-1.15.9_IM-6.3.5-8-Q8_prod.zip

2.解压后在目录执行gem install rmagick-1.15.9-win32.gem

3.最后,双击ImageMagick-6.3.5-8-Q8-windows-dll.exe安装ImageMagick(切忌不要安装imagemagick主页上最新的ImageMagick-6.3.6-8-Q8-windows-dll.exe 文件,使用时会和rmagick不兼容)

4.将ImageMagick的安装目录加进环境变量path,如果有的话就不用了

5.最后一步,将附件中的type-windows.xml拷贝进ImageMagick安装目录下的config目录,比如E:\ImageMagick-6.3.0-Q8\config,修改type.xml,原来是:

代码

  1. <typemap>  
  2.   <include file=“type-ghostscript.xml” />  
  3. </typemap>  

render_code();修改为:

代码

  1. <typemap>  
  2. <include file=“type-windows.xml” />  
  3.   <!– <include file=”type-ghostscript.xml” /> –>  
  4. </typemap>  

render_code();安装完成,测试下网上那个流传的RMagick的验证码例子,终于正常了。

十月 29, 2007

一、安装Ruby、rails、mongrel和Apache2.2

 
从rubyforge网站下载One-Click Ruby Install,运行安装程序,就安装好了ruby和rubygems。
 
运行命令:
gem install rails –y
gem install mongrel –y
gem install mongrel_service -y
安装好了rails和mongrel
 
从Apache网站下载Windows版本的Apache2.2,运行安装程序,就安装好了Apache2.2。
 
二、把Mongrel作为Services启动
 
mongrel_rails service::install -N depot -c d:\Rubyproject\depot -p 3000 –e production
-N指明服务名称,-d指明rails应用的目录,-p是mongrel监听的tcp端口,-e是启动模式为生产模式
 
这样打开控制面版|管理工具|服务,就可以发现增加了一项名为“depot”的服务,就可以通过控制面版来管理服务了。如果需要命令行启动和关闭该服务,那么:
mongrel_rails service::start -N depot
mongrel_rails service::stop -N depot
 
如果需要从服务中注销该项服务,那么:
mongrel_rails service::remove -N depot
 
如果需要安装多个mongrel实例,那么可以这样:
mongrel_rails service::install -N depot0 -c d:\Rubyproject\depot -p 3000 –e production
mongrel_rails service::install -N depot1 -c d:\Rubyproject\depot -p 3001 –e production
诸如此类。
 
三、配置Apache2.2
 
用编辑工具打开Apache2.2目录下面的conf/httpd.conf,需要取消如下模块的注释:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
如果你希望对页面输出使用压缩,也需要取消如下模块的注释:
LoadModule deflate_module modules/mod_deflate.so
 
然后按如下内容配置基于HTTP代理的负载均衡:

xml 代码
 
  1. ProxyRequests Off   
  2. <Proxy balancer://myCluster>  
  3.   BalancerMember http://localhost:3000   
  4.   BalancerMember http://localhost:3001   
  5. >  
  6.   
  7. <VirtualHost *:80>  
  8.   ServerName www.xxx.com   
  9.   DocumentRoot d:/rubyproject/depot/public   
  10.   ProxyPass /images !   
  11.   ProxyPass /stylesheets !   
  12.   ProxyPass /javascripts !   
  13.   ProxyPass / balancer://myCluster/   
  14.   ProxyPassReverse / balancer://myCluster/   
  15.   ProxyPreserveHost on   
  16. >  

 
myCluster定义了群集中的每个mongrel应用服务器节点。ProxyPass /images !指明该URL开始的请求不代理给Mongrel群集,而由Apache自己处理。重起Apache,然后打开浏览器访问www.xxx.com,检查配置是否正确。
 
至此,在Windows Server上面一个具备良好稳定性和性能的Ruby on rails生产环境就搭建好了。
 
对于页面输出,还可以使用mod_deflate进行输出内容压缩,以提高页面下载速度,这个就留给大家自己配置了。

Powered by ScribeFire.

  一般而言,在学习一门计算机语言或者用该语言开发和调试一个与之相关的软件项目时,我们至少需要该计算机语言的运行环境。由于计算机语言可以有不同的实现,也就是说利用不同技术和手段可以对同一个语言编写出不同的运行环境。即使是同一运行环境实现,针对不同的操作系统还可以有不同的版本。而且同一运行环境、同一版本和相同操作系统也会因为开发目标不同而有不同的软件打包和发布形式。这里所说的形式不仅仅指发布文件的打包形式,而是指包内的各组件不同。就是说:相同运行环境、相同版本、针对同一个操作系统,由于开发目标不同,该发行包可以再集成其它一些相关组件。某个具体的运行环境我们称为Ruby语言的具体实现(Implementation),或者称为一个Ruby语言运行环境的实例(Instance)

  Ruby语言的官方网站实现既是运行环境也是开发环境。因为在本书中使用该实现,所以凡提到“运行环境”、“运行环境软件”、“运行系统”、或者“运行系统软件”都是一个意思,即一个可以运行和解释Ruby语言的程序及其相关软件包的整体。

  【注意】在Java语言环境下,既有运行环境也有开发环境。

  接下来,我们首先针对Windows XP操作系统环境说明官方Ruby语言运行环境软件的版本及其扩展软件。其次,推荐一个我们认为比较适合的的Ruby运行环境作为本书讲解Ruby语言的运行环境。最后,说明如何在同一个操作系统中安装多个Ruby语言运行环境的实例。

Ruby语言运行系统各种软件及其版本说明
  现在让我们看看Windows XP下有哪些Ruby语言运行环境。常见的运行环境有:Ruby的官方实现版本、单击安装OneClick Installer版本、和Instant Rails版本等。其中“Ruby的官方实现”版本是非常重要的一个,它实现了Ruby语言中的所有功能元素。该运行环境目前最新的版本是: 1.8.6-25稳定生产版和1.9测试版。本语言的官方网站及其下载链接如下:

网站首页 http://www.ruby-lang.org下载首页 http://www.ruby-lang.org/en/downloads/ftp下载 ftp://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/在下载页面中还可以找到在Windows XP操作系统下运行的其它版本。

  接下来再介绍几款扩展版本,并和多个运行环境的安装一起讨论。

  首先让我们来看看在上面版本基础上发展起来的Ruby语言运行环境“Windows单击安装”(OneClick Installer)版本。为什么会出现这个软件?因为官方发行的Windows版本没有环境变量的配置;缺少必要的Ruby语言软件包,如 RubyGems等。而单击安装版本除了具备以上特点外,还提供了Ruby语言的开发工具和电子书籍。它的好处是为初学者学习Ruby语言提供了一个很好的快速开发环境。 Ruby语言运行环境“Windows单击安装”版本的相关信息可以从以下链接中找到:

首页 http://rubyforge.org/projects/rubyinstaller/网络百科首页 http://rubyinstaller.rubyforge.org/wiki/wiki.pl下载首页 http://rubyforge.org/frs/?group_id=167  对于该运行环境软件有几点需要说明。整个安装过程几乎不用干预。如果愿意,可以修改一下安装的目标目录,但不是必须的。建议安装在类似于C:\opt\ruby1.8.5-24的目录下。该软件在安装过程中,会自动修改系统环境变量PATH,并增加了环境变量 RUBYOPT。安装完了该软件之后,可以用echo命令查看系统环境变量PATH如【代码 c.01】中,路径“C:\opt\ruby1.8.5- 24\bin;”应该已经添加在PATH字符串中。这样处理的好处是:安装好了马上就可以在任何目录下使用该软件的命令。但是也存在着不足,要是你想安装多个同一实现的不同版本软件就有麻烦了。我们认为该软件能够增加一个Ruby语言安装目录的环境变量设置RUBY_HOME,就更好了。请看下面我们是如何解决此问题的。

--【代码 c.01】安装Instant Rails --

echo %PATH%
  【信息】“单击安装”版本目前只发行Windows版本,MacOS和Linux版本正在开发中。

  不过,本书将采用另一个更为全面的Ruby语言运行环境软件Instant Rails。关于该版本的相关信息可以从以下链接中找到:

首页 http://rubyforge.org/projects/instantrails/网络百科首页 http://instantrails.rubyforge.org/wiki/wiki.pl下载首页 http://rubyforge.org/frs/?group_id=904&release_id=10139采用这个版本的理由是:Instant Rails是一款绿色软件;包含了“单击安装”版本的全部特性;还包括了学习和开发应用软件所必须的开源数据库系统MySQL和Ruby语言最重要的网络软件开发框架Rails等大量具有产品水平的开源软件。

Instant Rails安装具体步骤
  下面说明安装Instant Rails的具体步骤和方法。对于应用于软件开发的绿色软件而言,安装一般有三个步骤:一,下载、解压和复制到合适的目录里;二,设置系统环境变量。这虽是可选的,但常常是必要的;三,软件安装结果基本检验,通常是执行一下软件的版本和帮助命令。

  本书将使用DOS Shell工具,当然也可以通过Windows Explorer或者其它可视化软件来实现。什么是DOS Shell?DOS Shell是在Windows系统下的一款最常用开发工具,它执行该系统上所安装的软件。这种工具Shell在操作系统中都已经安装了。在用户图形界面(GUI=Graphical user interface)软件出现之前,所有软件都是通过该工具运行的。现在尽管普通计算机用户基本上都使用可视化软件,但是对于软件开发人员这种Shell工具是必不可少的。工具Shell的优势是简洁、灵活性大和计算效率高。在本书中你将学习和认识到它的长处。

Instant Rails的安装方法
  首先从网络上下载Instant Rails软件。下载地址:

http://rubyforge.org/frs/download.php/18097/InstantRails-1.6-win.zip具体下载办法各人各异,建议尽可能使用DOS命令来操作计算机,它的好处上面已经说明了。请看我们的下载和安装过程代码:【代码 c.02】。第一行命令执行下载,第二行命令把下载好的软件进行解压并且放到你想的安装软件目录,第三和四行命令仅仅是想把安装目录调整得更好一点而已。这些操作都可以在Windows Explorer下结合相关软件来完成。

  【约定】:以后碰到示例代码,如果是第一次出现,我们都会给出说明,之后仅写出命令。

--【代码 c.02】安装Instant Rails --

wget http://rubyforge.org/frs/download.php/18097/InstantRails-1.6-win.zip 7z -oC:\opt x InstantRails-1.6-win.zip mv c:\opt\InstantRails-1.6-win\InstantRails c:\opt\InstantRails-1.6 rm C:\opt\InstantRails-1.6-win
配置环境变量方法
  现在我们来设置Ruby语言运行系统的环境变量。环境变量是什么?如果把我们操作系统看作为一个主程序,而Ruby语言运行系统是它下面的一个子程序,那么环境变量就是主程序的全局变量,使用操作系统内的所有子程序都可以利用该全局变量。例如,要是你设定某个程序的安装目录,所有在操作系统内的程序就都知道该程序在那里了。下面我们开始增加一个环境变量RUBY_HOME。其基本操作步骤是:

按住键Window并且点击一下键Pause(另外一种方法是:右击“我的电脑”->“属性”)
点击标记“高级”
点击按钮“环境变量”
出现一个新的窗口
你可以在“用户变量”或者“系统变量”框内,来点击按钮“新建”(注意:对于该操作系统而言,如果你没有管理员权限的话,你只能在“用户变量”框内新建环境变量。这种情况往往在企业内会发生)
现在你的光标应该在变量名框内,输入环境变量名“RUBY_HOME”。怎样命名环境变量的名称?一般有两种方法:你想如何定义就如何定义;你 所安装的软件规定的名称。我们这里是前一种情况,一般环境变量名习惯使用大写;单词之间用英文下划线“_”来连接; 如果环境变量为软件 安装的根目录,后面都会加上“_HOME”
鼠标点击一下变量值输入框,你就可以输入环境变量值“c:\opt\InstantRails-1.6\ruby”。怎样来确定环境变量的值?一般有两种可能性:一是你自己确定的安装软件的路径;二是你所安装的软件规定的值。很明显, 我们的环境变量值是属于第一种情况,而下面另一个环境变量RUBYOPT的值则是属于第二种情况
此时,已经打开了三个窗口了。倘若还想继续增加环境变量,就先点击一下当前窗口的按钮“确定”,然后可以进行新建和编辑环境变量
倘若不想再增加新环境变量,就需要连续在这其余窗口点击按钮“确定”。这样就把一个或多个新的环境变量增加好了。注意:要是你没有进行任何环境变量的新增和修改,最好不要点击去“确认”按钮。否则只会浪费你电脑的计算时间
  请看编辑环境变量PATH的【图 x.01】。

-- 【图 01】 编辑环境变量PATH --

  以上是在图形窗口修改环境变量。我们也能直接利用DOS Shell的命令进行环境变量的设置,如【代码 c.03】的第一行命令。该命令可以在DOS Shell下执行,但是它仅仅作用于该当前打开的DOS Shell窗口。如果关闭了该窗口这些设置也就随之结束了。

  在【代码 c.03】的第二行命令中,我们修改一下环境变量PATH。这么做的好处之一是我们打开DOS Shell就可以直接运行该系统目录bin下的所有命令,如ruby和gem等等。

  根据上面同样的方法,我们再增加一个新的环境变量RUBYOPT。这是在【代码 c.03】的第三行命令。这个环境变量是Ruby语言运行系统命令ruby所规定的,但是其值是另外一个重要软件RubyGems所需要的。关于软件RubyGems我们会单独讲解。一旦我们设置好了它之后,ruby命令启动时就会自动带上rubygems的开关。此时,你可以在Ruby语言程序中使用通过gem安装过的软件包。对此我们将在后面详细介绍。

-- 【代码 c.03】 配置环境变量 --

SET RUBY_HOME=c:\opt\InstantRails-1.6\ruby SET PATH=%PATH%;%RUBY_HOME%\bin SET RUBYOPT=rubygems
验证我们的安装和设置
  最后我们把刚才打开的DOS Shell窗口都关掉,重新打开一个新的DOS Shell窗口。为什么要这样?因为新增和修改的Windows环境变量不会对已经打开的DOS Shell窗口起作用的。为了验证我们的软件安装和环境变量设置是否正确的,在新打开的DOS Shell中输入【代码 c.04】的命令,点击回车键Enter。命令ruby是我们的Ruby语言运行环境中最重要的和核心的程序,它负责对Ruby语言代码进行解析、错误分析和执行等任务。有关该命令我们将在后面会非常详细介绍。

--【代码 c.03】验证Ruby语言运行环境软件 --

ruby -v
接着我们就可以看到【图x.02】Ruby语言运行环境版本及其信息的相应结果。

-- 【图 x.02】 显示Ruby语言运行环境版本及其信息 --

我们也可以查看一下我们环境变量RUBY_HOME值,如【图x.03】。

-- 【图 x.03】 显示环境变量RUBY_HOME值 --

我们再看一看Ruby语言运行环境安装目录下的文件和子目录,如【图x.04】。

-- 【图 x.04】 显示Ruby语言运行环境安装目录 --

同一系统安装不同实现版本
  一般而言,在一个操作系统中安装一个Ruby语言运行环境就可以运行Ruby程序、开发Ruby软件和学习Ruby语言了。那么为什么我们还想要安装几个Ruby语言运行环境?其一,我们想学习和了解Ruby语言运行环境软件新的版本;其二,我们想使用Ruby语言运行环境的扩展版本软件如 Instant Rails;其三,我们想开拓自己的视野,看看其它Ruby语言运行环境的实现。当然我们还可以列举一些理由,重要的是人们在实际中需要来解决这样的问题。

  在同一个操作系统中,你可以安装多个Ruby语言运行环境,但是同一Ruby语言运行环境的实现只能设定一个环境变量并只能指向其中一个。当然理论上来说,不同Ruby语言运行环境的实现,可以设定相应不同的环境变量指向它们的安装目录。所以为了解决这个问题,你一定要注意二个要点,一是新安装的 Ruby 语言运行环境是否自动修改了环境变量PATH,二是不同Ruby语言运行环境的实现是否有相同的命令,主要在bin目录下的命令。根据我们上面的环境变量配置方案,其解决方法是你修改环境变量RUBY_HOME的值,确定其值是你想用的Ruby语言运行环境安装目录就可以了。

  接下来说明如何在同一个操作系统环境下安装多个Ruby语言运行环境。看下面我们对于Ruby语言环境变量设置的方法示例。假定你已经安装了上面Instant Rails运行环境,且其根目录是“c:\opt\InstantRails-1.6\ruby”。而现在你又安装了单击安装软件版本1.8.6(OneClick Installer)其根目录是“c:\opt\ruby1.8.6”,注意上面关于该软件安装的说明。要是你想使用前者就修改如【图 x.01】所示的环境变量。而要是你想使用后者就修改如【图 x.05】所示的环境变量。

-- 【图 x.05】 修改Ruby语言根目录环境变量RUBY_HOME值 --

Powered by ScribeFire.

在windows环境下,旧版本的Rmagick安装完gem后,需要运行一个postinstall.rb来设置windows字体等。新版本的Rmagick没有这个步骤,代替是安装ImageMagick。我按照README安装成功后,在rails中使用还是出现无法读取字体的错误,忍无可忍又换了旧版本的Rmagick,没想到跟ruby的解释器版本不一致,render templage的时候出现parse error类型的错误。认真比对了下新老版本的差别,原来旧版本的Rmagick在Config目录下多了个type-windows.xml来设置windows字体,在此记录下正确的安装方法:

1.到http://rubyforge.org/frs/?group_id=12&release_id=8170,下载RMagick-1.14.1_IM-6.3.0-7-Q8.zip

2.解压后在目录执行gem install rmagick-1.14.1-win32.gem

3.最后,双击ImageMagick-6.3.0-7-Q8-windows-dll.exe安装ImageMagick

4.将ImageMagick的安装目录加进环境变量path,如果有的话就不用了

5.最后一步,将附件中的type-windows.xml拷贝进ImageMagick安装目录下的config目录,比如E:\ImageMagick-6.3.0-Q8\config,修改type.xml,原来是:

代码

修改为:

代码

安装完成,测试下网上那个流传的RMagick的验证码例子,终于正常了。

Powered by ScribeFire.

Right on the heels of my release of acts_as_commentable, I am now making available a acts_as_voteable Ruby on Rails plugin. The Acts As Voteable plugin allows for model to be voted on by users.

To install this plugin run the following command:

ruby script\plugin install http://juixe.com/svn/acts_as_voteable
The installation process will add several ruby files in the vendor/plugins directory. Create a new rails migration and cut and past the following self.up and self.down methods:

def self.up
create_table :votes, :force => true do |t|
t.column :vote, :boolean, :default => false
t.column :created_at, :datetime, :null => false
t.column :voteable_type, :string, :limit => 15,
:default => “”, :null => false
t.column :voteable_id, :integer, :default => 0, :null => false
t.column :user_id, :integer, :default => 0, :null => false
end

add_index :votes, [”user_id”], :name => “fk_votes_user”
end

def self.down
drop_table :votes
end
Once you have installed the plugin you can start using it in your ActiveRecord models simply by calling the acts_as_voteable method.

class Post true)
post = Post.find(params[:id])
post.votes Powered by ScribeFire.

I was explaining to a Java developer at work how you get soo much for free when working Ruby on Rails. I tried to explain the simplicity of ActiveRecord and the lack of getters and setters. I mentioned the number of rails plugins that provided tagging, versioning, and commenting functionality. Out of that conversation I thought to write a list of the top Ruby on Rails plugins that I have found useful.

Acts As Taggable - Use this plugin to add tagging, folksonomy, support to your ActiveRecord models. You can search active records via tags.

Acts As Rateable - This plugin allows ActiveRecord models to be rated between 1 upto some application specified number. This plugin will calcuate the average rating for a record.

Acts As Commentable - With this rails plugin you can add comments to your ActiveRecord models.

Acts As Voteable - With this plugin users can cast a vote for or against an ActiveRecord model. You can filter by votes, get a total vote count, etc.

Acts As Blog - This plugin will help convert Textile, Markup, SmartyPants markup text to HTML. This plugin is useful in blog or wiki-like systems.

Acts As Versioned - With this plugin you can manage different version of a ActiveRecord models. Use this plugin in version controlled applcitions like a wiki.

Acts As Bookmarkable - This plugin allows user to bookmark any ActiveRecord model. In addition to bookmarking records you can combine this plugin with Acts As Taggable so that bookmarks can also be tagged.

Riff Rails - This plugin functions as a diff tool for active records. You might find it useful to combine this plugin with Acts As Versioned.

Rails PDF - This ActiveView plugin allows rails developers to create actions that produce PDF documents. This is a handy plugin for applications that want to generate reports.

Calendar Helper - Another ActiveView plugin that will produce stylish calendars.

Graphs Rails - Use this ActiveRecord plugin to generate CSS powered bar graphs.

Powered by ScribeFire.

1、Streamlined
www.streamlinedframework.org
以插件的形式提供,即将发布0.1,RESTful支持,对前期代码进行了重构,近期比较活跃,源代码充分利用了ruby dsl的特性。大家可参考:
跨越边界: Streamlined,第1 部分
www.ibm.com/developerworks/cn/java/j-cb09056/index.html
跨越边界: Streamlined,第2 部分
www.ibm.com/developerworks/cn/java/j-cb10036/index.html
2、Hobo
http://hobocentral.net/
有自己的模板系统,ajax效果,最新的版本是hobo-0.5.2.gem
可以参考道喜日记的两篇介绍文章。

3、activescaffold
http://activescaffold.com/
由生ajaxscaffold进化而来,以plugin的方式提供,最近发展很快,有专门的团队维护,最新的版本是active_scaffold_1_0_0_rc2。
参考infoq:利用ActiveScaffold扩展Rails脚手架功能
http://www.infoq.com/cn/news/2007/04/rails-scaffolding-activescaffold
4、AutoAdmin
界面风格类似DJango,管理简单。
http://code.trebex.net/auto-admin/
个人比较倾向于activescaffold 和 streamlined的发展,
大家评价一下那个最好,相关补充说明教程,还有没有类似的架构,欢迎顶!!!

Powered by ScribeFire.

十月 25, 2007

2ndgatechina的笔试project:写一个.NET API,能使其他devs能够调用他来将任意时区的时间转换为当前时间或者将当前时间转换为任意时区的时间。

咋一看,好像比较简单,真做的时候才发现我怎么去获取我系统的当前时区呢?上http://www.pinvoke.net上查,发现需要使用kernel32.dll中的GetTimeZoneInformation的系统API。

现成的例子参看这里,我就不详细说了:http://www.pinvoke.net/default.aspx/kernel32.GetTimeZoneInformation

在这个基础上我们来扩展一下:如何去取得windows所给我们设定的全部时区呢?

其实windows所设定的时区全部保存在 \KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones的目录里,那么很自然我们有代码:

1 RegistryKey key = Registry.LocalMachine.OpenSubKey(
2 @”SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones” ) )
3 {
4 string[] zoneNames = key.GetSubKeyNames();
5
6 foreach ( string zoneName in zoneNames )
7 {
8 using ( RegistryKey subKey = key.OpenSubKey( zoneName ) )
等等,这里的TZI是二进制的,这种又代表什么呢?仍然是上面的pinvoke的链接,可以将这些二进制数据转换为里面所定义的结构体。那么可以通过如下方法枚举出Time Zones的所有子键信息:

1public static TimeZoneInformation[] EnumZones()
2 {
3 if ( s_zones == null )
4 {
5 lock( s_lockZones )
6 {
7 if ( s_zones == null )
8 {
9 ArrayList zones = new ArrayList();
10
11 using ( RegistryKey key =
12 Registry.LocalMachine.OpenSubKey(
13 @”SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones” ) )
14 {
15 string[] zoneNames = key.GetSubKeyNames();
16
17 foreach ( string zoneName in zoneNames )
18 {
19 using ( RegistryKey subKey = key.OpenSubKey( zoneName ) )
20 {
21 TimeZoneInformation tzi = new TimeZoneInformation();
22 tzi.m_name = zoneName;
23 tzi.m_displayName = (string) subKey.GetValue( “Display” );
24 tzi.m_standardName = (string) subKey.GetValue( “Std” );
25 tzi.m_daylightName = (string) subKey.GetValue( “Dlt” );
26 tzi.m_index = (int)( subKey.GetValue( “Index” ) );
27
28 tzi.InitTzi( (byte[]) subKey.GetValue( “Tzi” ) );
29
30 zones.Add( tzi );
31 }
32 }
33 }
34
35 s_zones = new TimeZoneInformation[ zones.Count ];
36
37 zones.CopyTo( s_zones );
38 }
39 }
40 }
41
42 return s_zones;
43 }

这样我们便获取到了windows所给我们定义好的时区信息,其中TimeZoneInformation.bias代表我做API中所需要的时间偏移量(单位:分钟),至此,我们就可以做出windows所提供的时区之间的任意转换了。

给一个很好的与此相关的代码资料:http://www.codeproject.com/dotnet/WorldClock.asp

参考资料:
http://www.pinvoke.net
http://www.codeproject.com/dotnet/WorldClock.asp

Powered by ScribeFire.

下一页 »