Rails 初次尝试用 Rails 做一个网站

jasonliu · September 07, 2015 · Last by JackLovel replied at August 12, 2020 · 5916 hits

从初次接触 Ruby 到现在已经有两年多的时间了,做过持续集成的项目,也做过游戏后端开发,主要是写脚本,工具以及 API,但是从来没有真正的用 Rails 做过网站。最开始的时候有过尝试,从 Rails Guide 的 blog 示例,到《Head First Rails》,再到《Agile Web Development with Rails》,这些书我都看完过,也敲过代码,但是过段时间之后会发现,这些知识不属于自己,总是很容易遗忘。而真正的困难在于——我是做后端开发的,对前端的知识很贫乏,每次做出的 Demo 都丑陋无比,这严重的打击了我的自信心。如果不会前端的知识,你很难说自己是一个合格的 Rails 程序员,而前端的技术栈真心让我心生畏惧,HTML,CSS,Ajax,Javascript,jQuery,Coffeescript...,还有好几个流行的前端框架,比如 Twitter Bootstrap,这其中的任何一样你都可以在网上搜到一堆教科书。我尝试过从 HTML 学起,可惜坚持了几天之后就受不了了,因为很枯燥,很没有成就感,看着看着就昏昏欲睡... 因此我想写一个网站的计划一直都没有真正开始过。 在 8 月底的时候,我发现公司的很多新项目都在开始使用 MongoDB,为了跟上步伐,我也开始打算学,想来想去最有效的办法就是用 Rails 写个 Demo,数据库用 MongoDB。有意思的是,我一开始只是想实现最简单的增删改查操作,却慢慢的变成了一个博客,随着功能的堆积,然后变成了一个论坛,而前前后后也只花了一个多周的时间,用的还是业余时间。网站目前的效果是这样:

最近看到有不少刚接触 Rails 的人在问怎么用 Rails 做一个网站,作为一个新手,我自己总结了一些经验:

  1. 开始动手做是最重要的,不要只抱着书看,看 100 遍还是不会;
  2. 不要等到熟悉一切在去做,比如前端的技术栈很深,任何一项都要花很多时间才能熟悉,更别说精通了,你不可能在用 Rails 之前把 Ruby 和 Javascript 两门语言都学通,你实际用到的其实都是一些相对简单的东西,没有那么复杂,可以等到后面再由浅入深。
  3. 记录下你实现每个小的功能点的过程,即写博客,如果你能完整描述功能的具体实现过程,那么说明你已经大概掌握了这个知识点,如果描述的过程中有不明白的地方,还需要巩固,否则这些知识还是不属于你。
  4. 要克服自己的畏惧心理,有些东西没有你想的那么难,就算很难,还可以求助 Ruby-China 和 Stackoverflow。

目前我这个 Demo 还是比较粗躁,最大的问题主要是:

  1. 没有单元测试用例;
  2. 只关注了功能的实现,没有关注性能;
  3. 还是很难看,哈哈

之后我会一直改进,希望大牛们可以多提意见,新手们和我一起学习交流(不好的地方就不要学了😄)。 项目链接:https://github.com/liuzxc/mongo_project

  • 测试:单元测试很多时候是没必要的。建议花点时间看一下 RSpec 关于 Feature test 的部分。会写 Feature test 比会写 Unit test 重要的多。
  • 前端:JavaScript 一定要会一点的,要不然很多前端操作还是太麻烦了点。可以考虑从 Coffee 学起。
  • UI:把 BootStrap 学会很重要。非常容易做出美观大方的界面。而且如果不想和别的站千篇一律的话,还可以去买 WrapBootStrap 的模板回来套,总之是个效率很高的框架。
  • MongoDB:NoSQL 这个概念的出现,主要是把以前 RDBMS 带来的很多特性(关系型)去掉了,并且转变成了扩展性和性能(可以更高并发,可以横向扩展)。通常只有在访问压力比较大的时候才会考虑 NoSQL(比如 Twitter 这种级别,数据之间关系不多,对性能要求高的场景)。平时普通的应用开发,我个人更倾向于普通的 RDBMS。

楼主,没关系,我以前刚开始的时候 3 个大项目都没测试用例…

Ruby China 最早也是没测试用例的

等你慢慢会了,你会写的。

对于刚学习 Rails 的朋友来说,先学会完成功能往往会更有成就感,能让自己更有动力学习更深层次的知识,当初的我也是这样 😄

哈哈,同新手。我也在做一个博客,不过比你的更渣。共勉!

同勉。看 rails 以及一些周边的东西有段时间了,慢慢发现还是要做,很慢,比较艰难。

@hanrong @sunajiu 如果碰到什么问题,大家可以相互交流下😄

  1. 测试是必要的。
  2. 测试代码也是代码,有维护成本。

这两点同时存在,不能忽略其中一个。

@rei 非常赞同,尤其是在后期,随着软件规模的增长,任何模块的修改都有可能影响到其他的模块,这个时候才体会得到测试的重要性。

实践是最好的办法,最近偶也在折腾,所以感同身受!

我不是学计算机的,但是酷爱编程,自己正在用 Rails 写一个科研信息化平台。想就动手做~

@jasonliu 嗯,好的。到时多多指教啊

受教了!!!!!

You need to Sign in before reply, if you don't have an account, please Sign up first.