Rails 尝试 Rails,问个比较随便的问题。

kevin__liu · 2012年03月08日 · 最后由 ery 回复于 2013年08月08日 · 8974 次阅读

之前的标题让部分网友不是很舒服,所以改了一下,在此也给大家说声对不起。

话说 Rails 一个理念就是 Convention over configuration,这确实不错,这也是 Rails 被用其它语言复制这个框架最重要的因素。我对 Rails 也关注了一段时间,但我发现在网站部署方面和整体架构方法,这个理念没有那么好的体现。

我在这里最想得到的答案就是,有没有一个在 Rails 方面经验十分朋友能够给出一个方案,也就是约定一下,向你学习,你怎么做,我们就怎么做,只要把一个不错的网站开发出来就 OK 了。当然,这里指的不错的网站,从访问量上来看,至少也算是个大网站吧。

希望大家来讨论一下。

看不懂楼主在说什么,可能是我理解能力有问题。 另外我也不喜欢这么哗众取宠的标题。

Rails 部署对于很多刚刚接触的人来说确实是个大问题,得学会 Nginx 配置,Linux 配置,得理清 Linux 权限和 PATH 看起来什么时候得出个简单快速的部署方式。 目前 WIKI 里面推荐的 Nginx + Passenger 部署方式从大家使用的反馈来看都还是问题多多

是我的表达能力的问题,看这位的 ID 号很前,我想应该是位高手,我再解释一下我的问题,如果我还说不清楚的话,我再解释。 主要就是希望有经验的朋友,能分享一个相对很好的方案,大家跟着学,跟着做就可以了。例如:你有用 Rails 开发比较大型网站(不要问什么是比较大型,任感觉吧)的经验,给大家分享一下: 1、用的什么开发工具(你用什么,我买什么); 2、在什么环境下开发(操作系统),我跟你一样; 3、团队如何配合(如果有可能的话,尽量差不多); 4、部署方案是什么(跟你搞一样的) 5、开发过程中有哪些要注意的。 6、。。。。

具体一点,就当一个“最佳方案”给出来,约定约定,大家跟着你的方法来就可以了。当然,我不是反对更好的方案,也不是说其它方案都没有这个好。只是希望不要有太多的选择。

@kevin__liu 前面 4 点可以出个 Wiki 方案《Rails 开发最佳环境选择》

#4 楼 @huacnlee 嗯,非常同意。 希望有一个最佳选择,节约学习成本,如果哪位朋友能给出一个靠谱的培训,我想收费高点也有很多人愿意。

我觉得我应该给 Rails 做一点点辩解。

关于 Rails 所说的 Convention over configuration(简称 COC)其实是有个界定范围的。

对于 Rails,我认为这个范围就限于 Framework 本身,是gem install rails安装的所有 gems。COC 给你最大的好处是节约时间,从而提升开发效率,我给你举个 Rails 框架内的例子,如果你要开始一个 Rails 项目,你是否需要先考虑用什么 template engine 呢?是 haml 好还是 slim 好呢?你是否需要先试用每个模板引擎后给出一个评测报告,然后你的团队根据你的评测来决定到底大家应该用那一个模板引擎?实际情况是不必,Rails 已经在 Framework 给你预置了ERB,虽然有人觉得 erb 不是最好的选择,但是 erb 却是一个非常不错的 start point,你可以在将来根据具体的需求来决定是否换用其他的模板引擎。同样的 COC 还表现在 ORM,Routing,代码组织结构,gems 加载顺序等等。Rails 给你在 90%以上的情况下都适用而不需额外去做技术选型的框架基础,让你将注意力集中在业务本身。

记得在 Rails 之前,如果要用 Java 开发一个 web 项目,光是技术选型,项目框架搭建和模块划分,就足以让开发团队讨论很久很久了。

以上是 Rails 框架范围内的 COC,那么 Rails 框架范围外的 COC 呢?Rails 并不要求你一定要用 Mac 或者 Linux,Rails 并不要求你具体用哪个 Editor,Rails 同样也不直接给你“网站部署方面和整体架构方法”的 COC,怎么办呢?我们有社区啊,Rails 的 COC 其实一直在影响整个社区,比如什么系统最适合开发 Rails?什么编辑器最好用?怎么部署才是最佳实践,已经有了这么多的讨论,只要你保持对社区的关注,那么你完全可以自己佐证出一套大家普遍接受采纳的方案,那么这个方案就是一个不错的 start point,比如你想找个 Editor,看到 Vim 和 Emacs 的讨论,而且如果两边的拥护一样多的话,你完全不需要观望直到大家有了个统一的结论说 Vim 一定就比 Emacs 或者反之,随便选一个都是 good start point。如果是部署方面,你如果就从 ruby-china.org 的部署方案本身开始,绝对是一个 excellent start point. 所以你的问题就请直接参照这个论坛的部署方案吧。

另外关于“大网站”的话题,除非你已经有了明确的需求和用户数量(这种情况其实很少,试问多人上来做个 Rails 网站就已经是个大网站的?)。网站都是慢慢积累用户,从小网站逐渐发展成大网站的,所以一开始就寻求 Rails 的大网站解决方案,思路是不对的,当你足够了解了 Rails 的开发和部署方面的知识,怎么应付大网站的访问量,以及架构方面的调整,是水到渠成的事情。

顺便提一下,别叫 ROR, 叫 Rails !

#6 楼 @lgn21st

你们观点“关于 Rails 所说的 Convention over configuration(简称 COC)其实是有个界定范围的。”,我非常同意。可能我的问题确实没有问好。我的核心问题只是觉得选择不要太多了,对于刚接触的朋友,能有一个约定的“最佳方案”,蛮好的。

关于大网站,我的意思不是说如果把一个网站运营成一个大网站,只是如果现在有一个网站访问量已经相对比较大了,想用 Rails 改版或者说支持以后的发展。

@huacnlee 提的对,ror 真的很难看,而且也不准确。rails 多好,喜欢这个像个妞的名字。

#7 楼 @huacnlee 全部改掉了。 #8 楼 @kevin__liu 关于大网站,其实是一个怎么“优化”的话题,没有统一的方案,具体思路是通过架构调优和运用 cache 技术,以及利用 NoSQL 数据库的 scalability 能力提升单机的吞吐量,然后增加服务器通过集群的方式解决大访问量问题,这个在这个社区里面讨论的不多,但是 Google 的话,能找到很多资料。

#11 楼 @lgn21st 嗯,同意你的观点。其实你已经给出了答案,至少让大家明白了 Google 什么方向了。可能提具体的问题会讨论的比较具体,以后我会把我的问题分解成具体的,得到具体的答案。

@kevin__liu估计是面对选择太多的时候不知道如何搞了,呵呵。 貌似可以把 wiki 整理整理出个文档,现在 wiki 里有一些了。

一直没明白 你在问啥?

#6 楼 @lgn21st 花时间细读了几遍,我又有了很多收获。希望和我一样有着同样想法的人多读几遍。

#15 楼 @kevin__liu 个人浅见,基本上没有从正面回答你的问题,呵呵。

其实@kevin__liu 的意思是想这里的高手,写一篇详细的教程,从部署,到开发,甚至来个大项目的示例讲解???

#17 楼 @stephen

是的,我们这个网站可以把这个当一个主题来弄,让大家可以快速达到一定的高度。这样更有利于这个社区的发展。

#18 楼 @kevin__liu 这边不是有个同学在搞免费指导么,活动稍微扩展下?

以下是我的方案 1、开发工具 Sublime Text 2 2、操作系统 Ubuntu Desktop 10.10 3、团队配合 Git Redmine Email Gmail Gtalk GoogleAppMail Github 4、部署方案 Ubuntu Passenger Nginx Mysql 5、前台技术框架 JQuery,JQueryUI,Bootstrap 6、开发过程中要注意的,永远要把测试放在第一位,要不断的重构代码,不断的读新闻,不断的升级。

#7 楼 @huacnlee 我很奇怪,为什么不能叫 RoR。 你看 Wiki 上说“Ruby on Rails, often shortened to Rails or RoR” http://en.wikipedia.org/wiki/Ruby_on_Rails

#21 楼 @ery 别扭,官方推荐叫 Rails

#20 楼 @ery 问下,email gmail googleappmail 这三个东西不重复吗?

最佳方案:

  • 开发系统:Mac OS X
  • 开发工具:TextMate
  • 版本管理:Git
  • 数据库:MySQL
  • 缓存服务:Memcached
  • 前端框架:jQuery
  • 部署:Ubuntu 10.04 + Nginx + Thin

#24 楼 @huacnlee 同意,特别是 OS 的选择 虽然说用什么 OS 对高手来说都一样 但是想让一个新手快速入门,我觉得 Mac 的门槛都是很低的 (虽然很贵呢) Linux 下最起码我认为找不到一个适合新手的简单易用 Editor windows 就各种诡异了

#24 楼 @huacnlee 非常希望看到这样的答案。另外,在开发这块,应该还有很多要注意的地方,还有很多可以复制的经验,这样去学习,就犹如学习设计模式一样靠谱,方便,重要。 补充一个问题,希望各位高手正解: 如果站点用 Nginx 做负载均衡的话,开发方面要注意哪些问题,比如:Session,Memcached?我不想听到的答案是 Google 上有或者在 Iteye 之类的网站上有答案。当然,如果是经过高手甄选,把链接 post 上来,也很不错。答案最好就一个。

#25 楼 @shawnyu 顶,有时候只有亲身体会后才会知道。

#26 楼 @kevin__liu 你想得太远了,等你需要用负载均衡的时候,这些东西你都会了。现在看没意义的

#28 楼 @huacnlee

:) 明白,有时候我也不是在为我个人提问,希望社区的内容有一定的梯度,入门的有,深入的也有。

这个问题可以理解为:请告诉我一个可以一招克敌制胜的绝招么?这个敌人就是某个项目,甚至说是所有的项目? 很不幸地,应该是没有这么一种方案。最好的方案就是你按照高手推荐的书籍,去自己实践,不断的磨练,培养对代码的感觉,直到称为一个靠谱的 craftsman。 自己甄选工具,配置环境以及经历的所有弯路都是值得的,每一个高手都是这么过来的,这不是浪费时间。 不知道 @huacnlee @lgn21st 以为然否?

你们这是在喂食么。。。=_=

#30 楼 @jean

如果@jean对我的问题理解的过于偏的话,请你原谅是我没有表达清楚,凡事有个度,这点相信大家都是知道的。弯路可以走,但如果一开始就是弯路,相信会把太多的人挡在门外。如果你要讲这是这些人不够坚持,失败了就退缩,在这里讨论这些问题,我认为不够有意义。占用大家太多看水贴的时间了。当然,适当幽默一下还是蛮好的。

#32 楼 @kevin__liu 一开始就是弯路我觉得是有必要的,过滤掉一批不适合的人。免得浪费时间。

#33 楼 @ywencn

这位兄弟,也许你是对的,我们暂时先不争论类似观点了吧!

又是一个看见蚊子就像找个火箭炮的问题。

#31 楼 @fredwu ^_^ 终于有人看不下去了..

这是 robbin 推荐的一篇关于 RoR 的部署方案,含性能测试对比图,http://robbin.iteye.com/blog/212684 摘选其中的一句:“Lighttpd+FastCGI > Lighttpd+Mongrel > Nginx+Mongrel > Apache+Mongrel > Ngignx+FastCGI > Apache+FastCGI 其中 Lighttpd+FastCGI 是性能最佳方案,而 Apache+FastCGI 是性能最差方案。”

#38 楼 @Levan 那篇文章是几百年的。。过时了。。

@ywencn 哦,没看时间,sorry

#24 楼 @huacnlee thin 的优势是什么?比如跟 unicorn 比

感觉楼主希望的就是在这里得到“答案”,比如学习 rails 的最佳方法,最佳配置,最佳... 但我觉得这不是 true 和 false 的问题,别人最多能讲的是自己的解决办法,这并不是答案。 “你怎么做,我们就怎么做”,这本身就是一种错误的学习方法。

船到桥头自然直,有些弯路不走走是不会成长的

Thin 相比 Passenger 的有点是,独立允许,可以很容易搭建多台服务器做成一个集群 和 Unicorn 目前没有看法 其实 Thin, Passenger 和 Unicorn 都差不多,就看你习惯于用来那个 这个三个是目前 Rails 最佳的部署后端。 前面跑个 Nginx

  • 开发系统:Mac OS X
  • 开发工具:MacVim
  • 数据库:MySQL
  • 前端框架:jQuery, extjs
  • 部署:Passenger + nginx

我觉得吧,每种语言,每种框架都有他最适合的环境,Rails 框架是重约定的框架,但是很多约定要根据自己的应用场景去做,没人能把各种场景都约定好,如果是这样那就不用开发了,大家看约定手册就好了;比如说,做网站一个是要在框架中增加 cache 层,减轻数据库方面压力,另外一种思路是静态化,思路不同效果也不一样。最好的做法是去接触各种和网站有关的技术,经过考察和筛选后,确定自己采用的方案,如果这些都没办法做到,还必须有个牛人来帮你规划,那还要你干嘛,公司直接招他去好了。

对于我的这个提问,可能让一部分比较敏感的朋友有点不舒服,得到了你们批评,我很乐意接受了,我本意是希望有大牛能够把宝贵的经验与时间拿出来,让大家快速进步,但现在看来是不太现实的,可能是因为国内的环境不够好,大家都在分了生活而努力工作,没有太多的业余时间来分享,这个我可以理解,又或者因为大牛们性格上都很低调,不太愿意表现,这也能理解,当然,还有很多的原因,都能理解。不过,还是大部分的朋友们都表现出了分享的精神,昨天去了上海的 RubyTuesday,通过对大家的接触,就很能感受到了 Ruby 社区朋友的分享精神。 如果未来真的没有大牛站出来搞一个比较全面的系统化的讨论的化,我愿意慢慢去深入了解 web 开发的方方面面,结合自己的经验与其他私下与朋友的交流,跟大家逐步讨论出一个相对系统的解决大部分 web 开发的问题的方案与架构,特别是电子商务这块。希望社区里低调的大牛们支持,在此,先谢谢大家了。

#6 楼 @lgn21st 这个回答必须顶一下!

苦逼的 sa 路过。倒是想测试一下,但是苦于不知道如何测试才准确。。。。

#47 楼 @kevin__liu #49 楼 @yum2014 你们俩的问题我觉得都可以用一句话回答——“先做,发现错误再来问”,网上的答案其实已经一堆一堆了,但是你不好说谁的更“官方”,所以先根据现有网上的测试/部署方式尝试一下比较好

匿名 #51 2012年07月14日

哇哈哈,我生活在 win 下好几年了。。。开发环境一直是 win,服务器是 centos。 貌似还没碰到啥很特别的东东,反正 git 提交的就 Rails 的代码。

讨厌标题党

#52 楼 @xiaoronglv 讨厌对身体不好,控制一下情绪!

楼主换个标题吧,这标题,太 哔........ 了

你这个标题 以前是什么? 😄 #55 楼 @kevin__liu

@sitoto 这个是修改过的,以前的标题是什么,我也不记得了。哈哈~~

#57 楼 @kevin__liu 我也不记得啦,哈哈哈

kevin__liu 程序员,保重身体。 提及了此话题。 04月03日 10:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号