如何部署一个ruby on rails的web应用程序

Python012

如何部署一个ruby on rails的web应用程序,第1张

Ruby on Rails 正在令整个 Web 开发领域受到震憾。让我们首先了解底层的技术:

Ruby 是一门免费的、简单的、直观的、可扩展的、可移植的、解释的脚本语言,用于快速而简单的面向对象编程。类似于 Perl,它支持 处理文本文件和执行系统管理任务的很多特性。

Rails 是用 Ruby 编写的一款完整的、开放源代码的 Web 框架,目的是使用更简单而且更少的代码编写实际使用的应用程序

作为一个完整的框架,这意味着 Rails 中的所有的层都是为协同工作而构造的,所以您不必自己再重复,可以完全只使用一门单一的语言。 在 Rails 中,所有内容(从模板到控制流再到业务逻辑)都是用 Ruby 编写的。Rails 支持基于配置文件和注释的反射(reflection)和运行时扩展。

本文详细介绍了 Rails 的组成部分,并介绍了它的工作原理。

Rails 介绍

关于 Rails,首先需要理解的是它的模型/视图/控制器(model/view/controller,MVC)架构。虽然这种技术不是 Rails 所特有的 —— 甚至不是 Web 应用程序所特有的(相对于其他程序),但是 Rails 具有非常清晰而专一的 MVC 思维方式。如果您并不使用 MVC 方法,那么 Rails 的用处将大为降低(与遵循其模式的情况相比)。

模型

Rails 应用程序的模型部分主要是它所使用的底层数据库。实际上,在很多情形中 Rails 应用程序正是以一种受管理的方式对关系型数据库管理 系统(RDBMS)中的数据执行操作的一个途径。

ActiveRecord 类是 Rails 的一个核心组成部分,它将关系型表映射为 Ruby 对象,使其成为控制器可以操作并能在视图 中显示的数据。Rails 应用程序特别倾向于使用广为应用的 MySQL 数据库,不过也有与很多其他 RDBMS 的绑定,比如 IBM? DB2?。

如果您愿意,您可以添加 Ruby 代码来在应用程序模型中执行额外的验证,加强数据关联,或者触发其他操作。应用程序的 app/models/ 目录中的 Ruby 文件能够调用 ActiveRecord 的多种验证方法。不过,您也可以将模型代码留作一个存根,而只是依赖保存数据 的 RDBMS 的约束。例如,我在这个示例中所开发的应用程序只包含这个骨架模型代码(至少在开始时是):

清单 1. 骨架模型 app/models/contact.rb

class Contact <ActiveRecord::Base

end

控制器

控制器以其抽象形式执行应用程序的逻辑。也就是说,应用程序的 app/controllers/ 目录中的 Ruby 脚本能把模型数据导入为变量,保存回去,或对其进行修改 和处理。不过,控制器不关心用户如何适当地显示或者输入数据。在通常的 MVC 模型中,这可以让用户能够以多种方式与同一控制器进行交互:本地 GUI, Web 界面,以及视力较弱的人使用的语音界面都可以与相同的控制器进行交互。

不过,Rails 不像那样非常通用;相反,它仅局限于在 Web 页中提供和收集数据。虽然如此,但是您可以修改那些 Web 页的布局 —— 颜色、字体、表格、 样式表单,等等 —— 与控制器代码无关。

视图

Rails 视图是我们编写 Ruby 代码的地方。Rails 包含有一门用于 .rhtml 的非常好的模板语言,它将纯粹的 HTML 与嵌入的 Ruby 代码组合起来。 Rails 应用程序界面的最表层外观通常是由 CSS 样式表单控制的。.rhtml 格式是一种增强的 HTML。实际上,一个简单的 HTML 文件本身也是一个 合法的 RHTML 模板,不过,不应该忽略 RHTML 为您提供的脚本控制。

RHTML 是真正的模板格式 —— 不仅是在 HTML 中嵌入代码的方式 —— 这是一种更为有效的方法。如果您熟悉 PHP,那么可以考虑 PHP 本身与 Smarty 模板之间的对照。也就是说,嵌入的脚本只是将代码与未被解释的 HTML 混合在一起;当需要向客户机输出某些内容时,代码部分 仍要负责执行 print 语句。

与之不同的是,模板引擎向 HTML 添加了一组定制的标签,让您能够将条件、循环以及其他逻辑作为增强的 HTML 标记的一部分来表示。

回页首

生成代码

Rails 所提供的工具主要是一组代码生成器。相对于那些强迫我使用严格的工作空间和 IDE 的开发环境,我更喜欢这种方法。 Rails 不会妨碍您,但是却会为您省去大部分手工编程的工作 —— 或者,通过提供“可自由获得的”初步(first-pass)支架(scaffolding), 至少帮助您轻松将需要手工编码的工作分为多个部分。

支架 概念是 Rails 中的核心概念。非常简单的应用程序可能完全不用编码,让 Rails 在运行时动态地生成客户机 HTML 页面。 第一遍生成代码时创建的只是粗略的支架;接下来您可以生成更详细的能够定制的控制器、视图和模型。不过在开始时不需要生成太多。

Rails 对其文件的组织是固定的而且非常普通的,不过这种组织相对严格。如果您试图强行使用其他文件和代码组织方式,那么您可能得 付出努力去修改 Rails 环境。再者说,我找不到不使用 Rails 所提供的组织方式的理由;在大部分情况下,它“fits your brain”(Ruby 的 支持者喜欢这样讲)。例如,如果您从头开始设计一个框架(至少如果您以“Ruby 方式”思考),那么这些目录名称及其组织可能与您的选择非常接近。

回页首

构建一个简单的应用程序

在 Ruby on Rails Web 站点上有一些教程,可以完整地引导您创建一个简单的 Rails 应用程序(见 参考资料)。 这里的示例程序与之类似,因为正确开始构建 Rails 应用程序的方式是确定的。由于此介绍的长度相对较短,所以我 极力 推荐 那些较长的教程中的一篇,以使得您能够打好更为全面的基础。

示例应用程序是一个基本的通讯录。它演示了创建应用程序的一般步骤:

生成模型(在此步骤中创建 MySQL 数据库和表)。

生成应用程序(包括生成基本代码和目录)。

启动 Rails(并配置数据库的访问)。

创建一些内容(包括生成支架模型和控制器,并告知控制器去使用那个支架)。

我们将详细研究每一个步骤。

生成 AddressBook 模型

对于任何应用程序,您需要做的第一件事情是为它创建一个存放数据的数据库。技术上这个步骤不必最先进行,不过需要在早期完成;应该在编写任何 应用程序代码(甚至是自动生成的代码)之前创建数据库,这应该是显然的。所以,让我们在 MySQL 数据库中创建一个数据库,并在此数据库中创建第一张表。 (阅读其他文档以了解如何安装运行 MySQL 或其他 RDBMS。)

我们假定 MySQL 已经安装并且可用。

清单 2. 创建 MySQL 数据库和表

[~/Sites]$ cat AddressBook.sql

CREATE DATABASE IF NOT EXISTS AddressBook

USE AddressBook

CREATE TABLE IF NOT EXISTS contacts (

id smallint(5) unsigned NOT NULL auto_increment,

name varchar(30) NOT NULL default '',

created_on timestamp(14) NOT NULL,

updated_on timestamp(14) NOT NULL,

PRIMARY KEY (id),

UNIQUE KEY name_key (name)

) TYPE=MyISAM COMMENT='List of Contacts'

[~/Sites]$ cat AddressBook.sql | mysql

在这第一张表中有些地方需要注意。最重要的是每一张表都必须拥有一个 id 列,列名称就是 id。Rails 使用 主键列 id 来完成各种记录保持和引用任务。域 created_on 和 updated_on 是不需要的,不过,如果您使用了它们,那么 Rails 会自动地“在后台”维护它们;在大部分情况下使用这些时间戳没有什么不好。所以,您还要添加的“真正” 数据就只是通讯录内容的名称。

另一个稍微古怪的方面是,Rails 为不同的内容使用单数和复数的名称。根据上下文,各种条目会被重命名为单数或复数形式。表的名称应该使用复数格式。 我没有使用不规则复数单词的经验;datum 和 data 等单词可能会令 Rails 出现问题。

生成 AddressBook 应用程序

既然已经拥有了一个能够交互的数据库,就可以创建 AddressBook 应用程序了。第一个步骤是简单地运行 rails 来生成基本目录和支架代码:

清单 3. 生成基本代码和目录

[~/Sites]$ rails AddressBook

create

create app/apis

create app/controllers

create app/helpers

create app/models

create app/views/layouts

create config/environments

create components

[...]

create public/images

create public/javascripts

create public/stylesheets

create script

[...]

create README

create script/generate

create script/server

[...]

我删减了运行 rails 的输出;所忽略了那些行只是提醒您已经创建的各种文件和目录。在您的系统上试运行它,浏览生成的所有文件。 我已经在代码中显示了一些最重要的文件和目录。

运行 Rails

创建了 AddressBook/ 目录和所需要的子目录后,您需要执行一次惟一的初始配置。首先,通过修改 YAML 配置文件来设置数据库,如下:

清单 4. 配置数据库访问

[~/Sites]$ cd AddressBook

[~/Sites/AddressBook]$ head -6 config/database.yml # after editing

development:

adapter: mysql

database: AddressBook

host: localhost

username: some_user

password: password_if_needed

最后,您需要提供数据。Rails 附带了它自己的单一功能的 Web 服务器,即 WEBrick,非常适用于我们的试验。您可能也会遵循 Ruby on Rails Web 站点上的说明来配置 Apache 或者其他服务器,以通过 FCGI(或者普通的 CGI,但是普通的 CGI 将会较慢)向 Rails 应用程序提供服务。

清单 5. 启动 WEBrick 服务器

[~/Sites/AddressBook]$ ruby script/server -d

=>Rails application started on http://0.0.0.0:3000

[2005-03-21 17:57:38] INFO WEBrick 1.3.1

[2005-03-21 17:57:38] INFO ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0]

创建一些内容

要在 WEBrick 端口上看到一个欢迎页面,先前的步骤就足够了。例如,在我的本地系统中,现在可以访问 http://gnosis-powerbook.local:3000/。不过,为了操作定制数据库,需要 生成稍微多一些代码。可以使用脚本 generate 来完成此任务, 这个脚本创建在 AddressBook/ 应用程序目录中:

清单 6. 支架模型和控制器代码的生成

[~/Sites/AddressBook]$ ruby script/generate model contact

exists app/models/

exists test/unit/

exists test/fixtures/

create app/models/contact.rb

create test/unit/contact_test.rb

create test/fixtures/contacts.yml

[~/Sites/AddressBook]$ ruby script/generate controller contact

exists app/controllers/

exists app/helpers/

create app/views/contact

exists test/functional/

create app/controllers/contact_controller.rb

create test/functional/contact_controller_test.rb

create app/helpers/contact_helper.rb

注意,在相应的表名中,这里应该使用单数的 contact,而不是复数的 contacts。

现在需要编辑一个或多个生成的文件(只需稍加编辑)来让控制器去使用支架:

清单 7. 告知控制器去使用支架

[~/Sites/AddressBook]$ cat app/controllers/contact_controller.rb

class ContactController <ApplicationController

model :contact

scaffold :contact

end

红宝石虽是女人向往拥有的珠宝,但天然红宝石非常稀少,产量不多且身价不菲。对于红宝石的识别,也并非想象中那么难。下面,我为大家分享挑选红宝石的方法,快来看看吧!

红宝石的主要特征

红宝石(Ruby)集中体现了高级宝石的三个主要特征:迷人的美丽、优秀的耐久性和极高的稀有性。

红宝石(Ruby)的美首先体现在其独一无二的红色上。虽然在自然界中红色的宝石有很多种,但唯有红宝石(Ruby)的红色能够给人带来最震撼的视觉冲击。在一幅缅甸的古画中,一位富有的欧洲人来到缅甸寻找传说中的红宝石(Ruby),一位当地的酋长拿出了一颗用绢布包裹的红宝石(Ruby)并将之摆在桌上。当他还未打开布包时,红宝石(Ruby)的光芒就已经将布包染上了一片红晕,而当他将要打开布包时,他对欧洲贵客说,“请坐稳!红宝石要出来了。”语音刚落,布包被打开,整个殿堂都被布包中的红宝石(Ruby)所散发出的红色火焰所照亮,而看客此时睁大了双眼,一只手悬在空中不知所措,另一只手则紧抓着桌沿,惊讶之情溢于言表。

红宝石(Ruby)的`耐久性主要源于其卓越的硬度和耐高温的特性。红宝石(Ruby)的摩氏硬度为9,仅次于钻石,是自然界中第二硬的物质。同时它可以承受约2000摄氏度的高温而不熔化,这要比钻石不到1000摄氏度的燃点高出许多。因此,不管将其镶嵌为珠宝首饰来佩戴,还是作为私家的收藏,它都可以无惧环境的变迁,历久而弥新。

优质的红宝石(Ruby)是极其稀有且极难获得的。在缅甸,平均每400吨红宝石(Ruby)矿石,只能筛选出1克拉左右的红宝石(Ruby)原矿,而对这些红宝石(Ruby)原矿进行再次精选之后,每1000颗这种矿石仅能够挑选出一颗——在颜色、净度、重量等各方面均达到宝石级的红宝石(Ruby)。在古代的传说中,人们为了获得深藏在无底山谷中的红宝石(Ruby),曾将一块块生肉投向山谷,并祈祷红宝石(Ruby)能粘在肉上,当秃鹫飞下谷底叼起肉之后,想办法射杀秃鹫从而得到粘在肉上或被秃鹫吞下的红宝石(Ruby)。

挑选红宝石应考虑哪些方面

1.粒度大小:红宝石粒度越大,其价格越高。

2.颜色:红宝石的颜色有多种,最好的是较深的纯红色,其次为微带紫的红色,下面依次为较深的粉红色、紫红色,略带棕色的红色,其它如棕红色,发黑的红色、很浅的粉红色都是较差的红宝石。另外从台面观察红宝石,在转动时,应只看到一种颜色为最好,如能看到其它颜色,则说明红宝石加工时的取向不正确。

3.火彩:是在光源照射下,红宝石正面所表现的颜色,它实质上是红宝石的透明度、切工、颜色的综合作用的一种体现,一块好的红宝石在轻轻转动时(台面对着自己),可见内部有很多红色的小“火苗”在闪烁,对于高质量的红宝石要求其火彩要占整个冠部的55%以上。

4.裂纹:由于红宝石的裂纹较为普遍,因此挑选时,应尽量挑选裂纹少而细的红宝石,特别是不要挑选裂纹穿过宝石中心的红宝石。

造假红宝石的两种情况

红宝石是珠宝中珍贵的品种之一。红宝石颜色艳丽,在光源照耀下,能反射出美丽动人的六射星光,俗称六道线,这是红宝石的特殊晶体结构所致,是其特有的光学现象。

红宝石有透明、半透明和不透明等状,颜色有水红、粉红、鸽血红、玫瑰红等色的深浅之别。因为大颗宝石非常罕见,所以平常所见的颗粒较大的红宝石,一般是假的。

假红宝石有两种情况:第一种是以低档的红颜色宝石冒充红宝石,而且,凡假红宝石均无红宝石特有的色形和光性。

第二种是人造红宝石。人造红宝石在比重、硬度、颜色等方面与天然红宝石极为相似。直观地判断,人造红宝石质地匀净,无天然杂质、色匀而正,常常颗粒较大,缺少自然感。

红宝石佩戴有什么讲究

红宝石的佩戴不同于其他的宝石,一般比较随意没有什么太多的规矩,因此人们大可以随心所欲的将红宝石首饰佩戴在各个位置。

其次,红宝石的红色属于暖色调,因此佩戴红宝石时,我们可以尽量选择一些款式简单、大方、素净的衣服与之搭配,这样可以尽显宝石的光芒。

在选择红宝石款式的时候,要根据自己的外貌和体型特征来选择,比如,体型是瘦高型的人,选择一些椭圆型款式的红宝石,可以起到中和的作用,显现出一种柔和的美。

另外,我们要注意的是,红宝石也有不适合佩戴的人群,因为红宝石的磁场比较强烈,体质比较虚弱的人最好不要佩戴红宝石还有,红宝石炙热的红色以及宝石本身所带有的激进的磁场性质,会更加加速人情绪的爆发,因此对于情绪容易激动的人,红宝石也是不适合的。

红、蓝宝石的挑选原则

颜色:挑选红、蓝宝石的首要条件即颜色。颜色须够深、够娇艳。最美丽的颜色是“鸽血红”红宝、“矢车菊蓝”蓝宝。

瑕疵:红、蓝宝石的瑕疵认定标准一般是凭肉眼观察,尤其是红宝石一向含有不少的杂质。可用十倍放大镜观看。

透明度:一般而言愈干净的宝石透明度愈好,价值愈高。

切工:红、蓝宝石的结晶体为六方晶系,所以最普遍的切磨形状是呈椭圆形,切得好的红、蓝宝石,其闪烁光彩美丽夺人。观察时以正面朝上为准,有时底部可能缺角或不工整。

杀毒软件不是电脑必须装的软件,但是防火墙是必须要装的,我建议你装360安全卫士,因为它做的比较全面,很适合新手。

至于优化大师,可以不需要装,说白了,优化是对于那些快要淘汰的机器用的,你刚买的新电脑,根本不需要优化,因为,你的机器本身的配置就符合现在的需求。

当然了,一个人有一个人喜好,不是说我装了什么就很适合你。

如果你真的是个新手,那你必须要装的有这几个软件:

1、winrar

是一种解压缩软件,如果没有这个软件,你是打不开rar和zip文件的。

2、暴风影音

这个是用来看电影的软件,因为现在的电影格式大部分是rm格式,而系统带的mida

play却只能放wma格式的电影。

3、QQ

如果你连接上网络了,那这个你肯定会用,这个就不用我说原因了吧。

4、迅雷

是用来下载东西用的。现在为止比较不错的下载软件。

我说的是一些必须要装的,对于新电脑。当然了,还有很多根据自己喜好装,比如酷我音乐盒、PPFILM等等。