`

建立一个典型的RubyOnRails网站(一)

阅读更多
写在前面:
    第一次,写连载啊,希望能对自己和各位看官有点帮助,多了解一点RubyOnRails开发上的情况吧。能够有点帮助,这就是坚持的理由。^_^


生命百科全书:www.eol.org


网站是基于RoR的,内容是做互动的生命百科博物馆,本文主要介绍,如果通过该网站提供的代码,建立起RoR的网站,并且学习,该网站中使用到的一些,RoR最普通的技术。


资源地址如下,匿名svn下载。

svn://repository.eol.org/eol/trunk/


配置前提


安装ruby

rails和mysql最流行的要求。



其次,

安装gems包



列表如下:

1. ZenTest

2. ruby-debug

3. piston

4. hpricot

实际上这些包都集成到vendor下的gems下了。这是一个相当闪光的办法。对待gem像对待plugin一样,不gems放到vendor gems下

安装如下:

  rake gems         # This could give you some errors...

  rake gems:build   # if there are gems that aren't installed or you got that big error...

  rake gems:install # if there were gems that are STILL missing...


配置数据库


拷贝config/database.yml

根据需要把demo development 和master_database数据库配置正确



加载数据


  rake eol:db:create:all           # Note the "EOL".  This keeps bad things from happening.  Please use it.

  rake db:migrate

  rake db:migrate RAILS_ENV=test

  rake truncate

  rake scenarios:load NAME=foundation,bootstrap

  rake eol:site_specific repo=URL  # Your "URL" (or an alternative) will be provided to you privately.


这里值得学习的是scenarios的加载,比起fixture好用很多,这个插件也在vendor目录下,具体配置和运行是,要看lib下taasks中的rake文件。



运行

script/server




并在 http://localhost:3000 下访问,相信到这里我们都已经把网站建立起来了吧。看着应该还不错吧。



测试



该项目的测试使用的是RSpec,这个流行的测试插件,比起rails的unit test写asset 要直观很多。具体可以看spec的目录

执行

rake spec 

rake specdoc #out put doc


你也可以用test password作为口令,测试权限部分。有些特别的页面,可以根据权限进行分配。


分享到:
评论
5 楼 Anxonli 2009-03-11  
引用
www.eol.org 是做生命百科全书哦,一定会用到大量的数据处理。而且,他们是想说SNS的社会化网络,要交换,而且是大数据量交互。


当然,共享你的开发经验是好事。 我只是说对本人来说用途不大。根据你说的一定会大量数据处理,而且是交互。请问这是当前已经在处理的数据量,还是假设未来发生的数据量。其实数据库设计得好,单数据库,每秒钟几百到上千个hit都不是问题。本人认为对于大部分case来说,专心设计好数据库表和索引已经是足够。你们的单数据库设计已经到达瓶颈了吗?内存如此便宜,32G, 64G, 128G内存的数据库服务器都不是问题。(DHH同学的数据库方案)

引用
由于数据量庞大,遇到了检索瓶颈,超过200万用户同时检索,系统可以处理,数据库就成了瓶颈。

上面的说法很模糊,你们有研究过每秒种的最大请求数吗?到底是那个表的查询最慢。到底每秒的Reads是多少,Writes是多少,是Table locks还是Row locks. 例如,如果你有几百万记录的表(甚至千万)去关联另几个百万数据的表,当然慢。joins heart performance,这就是为什么google的BigTable设计成没有join的原因。又例如,每次访问都去做select count(*) from table1 where ...当然慢,有无考虑Rails的counter_cache。 如果都详细分析过,还是没法解决,本人才建议考虑Master/Slave方案。所以说,Master/Slave方案不算是典型的RoR网站,因为楼主的标题是典型的RoR网站,我看过后,对内容不大同意。
4 楼 夜鸣猪 2009-03-11  
接着,
你说到,
引用
本人的观点是什么autentcation和Role Management这些应用,自己来开发也是非常快捷简单,并不需要用到别人的插件。

这个,基本上我同意,但是也要看你的需求。就是看你要多大程度上的entitlement tree,如果,权限设计要求没有太高,自己设计的确是不错的选择。但是,在权限需求错综复杂的情况下,加载一个成熟的权限管理系统的值得的。何况,开发和运营不同,要看效果,在插件很好用,支出成本不高的情况下,选择插件可能比较高。


引用

对routes的RESTful设计,Model对数据访问的封装等等,这些对我们开发有实际有用的信息。


这些对于开发确实有用,这篇着重介绍 设计

也是探讨而已,没有冒犯的意思^_^
3 楼 夜鸣猪 2009-03-11  
^_^

十分感谢楼上的回复
帖子发出来就是用来探讨的,说白来就是希望对自己,对大家能有点好处。

我也很理解,你码字解释“并无多大用途”,我想说的是:
有用没有用要看你是, 干什么,就是我发帖子的定位。

^_^

我的帖子的,定位是介绍一个相对成熟的,运营中的RoR项目,当然,有些地方,我自己理解的也不够,或者,想数据库结构等,很多重要部分写的都没有深入详细,我也承认,水平有限。

但是,大体的目的应该是清楚的。

那么,我们具体探讨一下吧,^_^

对于,第一点,Master/Slave的机制。我认为,用不用分布式,不是看这个网站够不够大,而是,看你的项目是干什么用的,有没有主从分布的数据要求。www.eol.org 是做生命百科全书哦,一定会用到大量的数据处理。而且,他们是想说SNS的社会化网络,要交换,而且是大数据量交互。那么,我认为,这就是EOL把数据库分布的原因。我的介绍,只是说,在这样的需求情况下,rails拥有这样的插件,支持这样的分布解决方案。

   那么,从这一点上讲,你说这篇介绍没有用途,那我就不赞成了。或者,你只能说对你自己,或者,初学者,没有用。但不能说,对大部分人没有用。

比如,我们公司在做一个设备管理系统,由于数据量庞大,遇到了检索瓶颈,超过200万用户同时检索,系统可以处理,数据库就成了瓶颈。那么,我们正在讨论解决方案,这时,我的介绍里,关于主从分布的实现,和实现方法,就是有用的借鉴。所以,这样的介绍,对我而言是有用的。^_^ 探讨而已
2 楼 Anxonli 2009-03-11  
首先,多谢楼主的连载

不好意思地说,本人认识次系列的文章对我而言,并无多大用途。第一点,就数据库设计用Master/Slave这一点,就觉得它并不是一个典型的RoR网站。连37Signals这样的一个有超过1百万付费用户的网站,都不需要到用Master/Slave数据库设计。第二点楼主的几篇文章就告诉我们要装什么插件和怎么装,这些信息本身对我们并无大用途。文章缺乏,例如,对routes的RESTful设计,Model对数据访问的封装等等,这些对我们开发有实际有用的信息。

本人的观点是什么autentcation和Role Management这些应用,自己来开发也是非常快捷简单,并不需要用到别人的插件。另外,数据库本身表和负载的设计都没有谈,直接最后就说Cache。本人认为文章设计上不大好。很多人在做项目的时候,连数据库本身都没设计好,就去想Cache的设计,实在没有必要。

以上是本人的愚见,如有冒犯,敬请原谅。
1 楼 k_cancer 2009-03-10  
为什么是 SVN下载。。。、、、、

相关推荐

Global site tag (gtag.js) - Google Analytics