初学Ruby On Rails:应该准备的知识

4 篇文章 0 订阅

原文:StartingRuby on Rails:What I Wish I Knew

  Ruby on Rails是一个优秀、简洁并且有趣的web应用开发框架。不幸的是,许多初学者是刚入门的程序员。在此,我根据自己走过的一些弯路总结了一些经验,希望有助于新手的学习。

1.        工具:这些足够了

接下来讲的这些工具都是你所需要的。不要浪费时间来做毫无意义的最优选择判断;选定工具即刻开始。

  • Rails Tutorial:内容全面,胜过那些网络上的片段讲解。
  • InstantRails: 包含Ruby,Apache,MySQL和PHP(用于PhpMyAdmin),将此包下载,准备开始。
  • l  使用Aptana/RadRails(像Eclipse)或Ruby In Steel(像VisualStudio)来编辑代码。
  • l  使用Subversion 或 TortiseSVN进行源码管理(译者注:建议使用Git)
  • l  常浏览del.icio.us(译者注:不知道此网站是什么,建议使用Github)上流行的ROR链接,Rails documentation 和Rubysyntax & examples

2.        术语

“Ruby on Rails”虽然比较容易记住但是容易误解。难道Rails是某些包含Ruby的药物?(取决于你问谁)

a)        Ruby:与Python和Perl相似的语言。它是一门动态类型语言(即你不需要‘int i’),解释性语言,并且可以在运行过程中进行更改的语言(例如为某些类添加方法)。它拥有更简洁的代码;定义的方法很少超过10行。对正则表达式和Shell脚本有良好的支持。

b)        Rails:是一个gem包,或者可以认为是一个Ruby语言库。一些gem包可以让你使用Win32API;另一些可以进行网络连接操作。Rails用于web应用开发,提供了一些类来存储数据到数据库,操作URLs并且显示HTML(有webserver、维护任务、调试窗口等等)。

c)        IRB:是交互式的Ruby控制台(在命令行窗口输入irb进行)。Rails有一个特殊的IRB控制台可以访问正在运行的web应用(运行时调试非常有用)。

d)        Rake:Ruby版本的Make程序。定义和运行一些维护任务,例如设置数据库、重载数据、备份、或者甚至给你的网站部署应用。

e)        Erb:是内嵌的Ruby,与PHP相似。它可以让你在HTML代码中写Ruby代码。例如:<div>Hello there, <%= get_uer_name() %></div>

f)         YAML(或YML):是“YAML Ain’ta Markup Language”—是存储数据的一种简单格式:{name: John Smith, age: 33}

与JSON相似,比XML更简洁,被Rails常用于设置配置参数信息(例如设置数据库名称和密码)。

唷!一旦装上Ruby并将其设置到系统path中,你可以如此方便的添加Railsgem包:gem install rails

通常,使用gem install ‘gem_name’命令来安装gem包,这些包将从网络资源库中搜索得到。尽管Rails仅仅是一个gem包,但正是这个闪耀的库将Ruby带入辉煌发展期。

3.        Ruby语言概述

学习一门新的语言和其使得的库,通常会让人畏缩。接下来是Ruby语言与其他语言(C/C++/Java)的一些重要区别,有助于转入的开发者快速熟悉Ruby。

Ruby 去除了不必要的括号:(){}

  • l  方法调用时的括号是不必的;可以使用print ‘hi’
  • l  每行结尾的分号不是必须的(这点让我觉得疯狂)
  • l  使用‘if thenelse end’替代括号
  • l  if-then语句中的括弧不是必须的
  • l  方法自动返回最后一行(若需要可以调用return显式返回)

Ruby减弱了程序逻辑划分中那些必须的烦人的标点符号。为什么不需要使用括号?若你想用括号,也可以进行添加。但是你将废弃如此之好的风火轮。

通常在C或Java中,每行代码中的杂音(如括号),我们将不再需要。注意:当你使用Ruby几周后,其他语言的写法将不再能入你法眼。

         def great(name)                          #simple method
                   “Hello, “ + name       # returned automatically
         end
         greet “world”                              # => “Hello, world”

 如此有趣的Ruby变量:

    • l  ‘x = 3’:x是一个局部变量,用于方法或块(当方法被调用时,开始进入)中。
    • l  ‘@x = 3’:@x是一个实例变量,实例变量通常被声明它的对象所拥有。
    • l  ‘@@x=3’:@@x是一个类变量,被所有对象共享(作用域内的对象)。
    • l  ‘:hello’:是一个符号,与字符串常量相似。常用于Hash结构的索引。
    • l  ‘dictionary ={ :cat=> ‘Goes meow’, :dog=>’barks loud.’}’:是一个哈希键值对。可以通过dictionary[:cat]来访问哈希元素。

如此有趣的Ruby赋值:

                   Ruby中可以使用||操作符,做如此有趣的操作:

x = a || b || c|| ‘default’

                   此例的意思是检测每个元素的值并返回第一个为true的值。因此若a是false,将检测b。若b是false,将检测c。否则,将返回字符串‘default’。

                   若你写x = x || ‘default’,意思是若x不为false保留其值,否则将’default’赋值给x。另一种写法是:x ||=‘default’(此种写法与上一种意思一样,你将会在Ruby程序中常看到如此写法)

如此有趣的Ruby块:

                   Ruby中有块定义,块类似于传入循环或其他函数的匿名函数。块可以通过|param|方式来传入参数并进行逻辑处理,调用它们自身的方法等等。在对数组中每个元素进行一些操作时,使用块将很方便。可以认为块是匿名函数的一种类型,但是块不一定有参数。

                            3.timesdo |i|

                                     printi*i

                            end

                   此例中,数字0、1和2被传入到块中(do…end),此块接收一个参数i并打印i的平方数。此例子的输出结果为014。注意了,在Ruby程序中使用块操作非常普遍。

         以上这些是Ruby中与其他语言不太一样的地方。

4.        Rails概述

Rails有一些特性。其开发者说过‘相信我们,它适合你’。这是真的,正是一些特性的缘故是的Rails脱引而出,但是同样也带有一些迷惑。

         记住:

  • l  类和数据表的名字很重要:Rails有严格的命名约束;它希望来自Person类的对象数据能够存储到命名为people的数据表中。是的,Rails有复数化引擎来映射对象与数据表。这是非常神奇的,但是在第一次使用时,总是有点提心吊胆的滋味,不确定类如何与数据表进行连接。
  • l  许多的方法有一个Hash作为参数,而不是有一打单独的参数。当你看到:

link_to “ViewPost”, :action => ‘show’, :controller => ‘article’, :id => @article

                                     此代码实际是:

link_to(“ViewPost”, {:action => ‘show’, :controller => ‘article’, :id => @article})

仅有两个参数,一个为name(“ViewPost”)和有3个键值对的Hash结构。Ruby让你可以省去额外的括弧和括号,留下简洁的调用方式。

5.        理解MVC模式

Rails是建立在model-view-controller模式上的。这是一个简单的概念:将数据、逻辑和显示层进行分离。它允许你将功能表达的更清晰,将像区分HTML、CSS和JS文件防止将它们全部写入到一个文件中一样。接下来是MVC的各模块的解释:

  • l  Models:数据模型层是与数据库进行交互的。你会发现,创建和保存模型时不需要写SQL语句。Rails有一个类用于处理当数据进行更新后对数据库的保存操作。
  • l  Controllers:接收用户的输入(像URL)并决定做什么(显示页面、排序、发布评论)。它们可能包含一些初始化业务逻辑,如查找正确的模型或改变数据。随着你Rails技能的提高,对代码进行重构,将业务逻辑移到模型层(胖模型层轻控制器层)。理想情况下,控制器仅仅接收输入,调用模型方法,将输出传入到视图层(包含错误信息)。
  • l  Views:显示输出,通常使用HTML。Rails通常使用ERB,在HTML模板中使用Ruby代码。Rails也可以方便的创建XML(为web服务器或RSS feeds)或JSON(为AJAX)模板。

MVC模式有助于创建易读、易维护性和易更新的web应用。

6.        了解Rails的目录结构

当你创建你首个应用的时候,应用的目录结构将自动生成。此结构是:数据模型存在app/models,控制器存在app/controllers中,视图存在app/my_local_views(开玩笑了)。

Rails中命名约束很重要,它可以让你的应用更容易的找到相应的模块,而不需要额外的配置。同时,对于其他开发者阅读你的代码,也将变得容易理解。我可以从Rails简单的博客系统中,了解到它是如何工作的。一致性使得更易理解。

7.        了解Rails的脚手架

脚手架给你生成默认的控制器动作(访问的URLs)和视图(填充的表单)与你数据进行交互-——你不必自己建立接口。你只需要定义模型和创建数据库表。

将脚手架作为你应用的默认接口——你可以构建应用中进行逐步的修改。你可以声明脚手架对应的控制器:scaffold :person,通过此操作将创建默认的动作和显示、编辑视图并创建Person对象。Rails表单已经包含了通常使用的字段,因此使用脚手架功能在初始阶段创建应用非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值