接触ruby on rails 已经有一段时间了,想记录一下自己的rails历程。自己写一些小例子来帮助学习。

   Rails 适用于那些以数据为中心的应用,很多应用的核心部分包括一个数据库,这些引用的存在的主要原因是为了让客户可以通过它们来操作数据库,而不是直接使用SQL。

Rails应用的组成部分:

(1)ActionPack的应用框架。用来负责帮助生成数据驱动的交互页面来访问和修改数据库。

(2)Web服务器。可以是rails内置的web服务器也可以用apache等。

(3)数据库。可以是rails自带的sqLite或者是mysql等。

(4)对象-关系映射库。Rails提供了名为ActiveRecord的对象-关系映射库。

(5)Rails的工具脚本工具。例如支架(scaffolding),迁移(migration)。

 (—)用Rails创建Web应用:

      (1)在命令行中输入:

 steven@ubuntu:~/RubymineProjects$ rails new OAONLINE

输出如下信息:

 create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/assets/images/.keep
create app/mailers/.keep
create app/models/.keep
create app/controllers/concerns/.keep
create app/models/concerns/.keep
create bin
create bin/bundle
create bin/rails
create bin/rake
create config ..............

此时OAONLINE应用就创建成功。

启动Web应用:

        进入OAONLINE程序所在目录,查看rails为我们生成的目录文件。

 steven@ubuntu:~/RubymineProjects$ cd OAONLINE/
steven@ubuntu:~/RubymineProjects/OAONLINE$ ls -l
total 60
drwxrwxr-x 8 steven steven 4096 Oct 31 21:43 app
drwxr-xr-x 2 steven steven 4096 Oct 31 21:43 bin
drwxrwxr-x 5 steven steven 4096 Oct 31 21:43 config
-rw-rw-r-- 1 steven steven 154 Oct 31 21:43 config.ru
drwxrwxr-x 2 steven steven 4096 Oct 31 21:43 db
-rw-rw-r-- 1 steven steven 1176 Oct 31 21:43 Gemfile
-rw-rw-r-- 1 steven steven 2715 Oct 31 21:44 Gemfile.lock
drwxrwxr-x 4 steven steven 4096 Oct 31 21:43 lib
drwxrwxr-x 2 steven steven 4096 Oct 31 21:43 log
drwxrwxr-x 2 steven steven 4096 Oct 31 21:43 public
-rw-rw-r-- 1 steven steven 253 Oct 31 21:43 Rakefile
-rw-rw-r-- 1 steven steven 478 Oct 31 21:43 README.rdoc
drwxrwxr-x 8 steven steven 4096 Oct 31 21:43 test
drwxrwxr-x 3 steven steven 4096 Oct 31 21:43 tmp
drwxrwxr-x 3 steven steven 4096 Oct 31 21:43 vendor

生成文件的含义,以后在说明。接下来启动应用程序。

 steven@ubuntu:~/RubymineProjects/OAONLINE$ rails server
=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-10-31 21:52:49] INFO WEBrick 1.3.1
[2013-10-31 21:52:49] INFO ruby 2.0.0 (2013-06-27) [i686-linux]
[2013-10-31 21:52:49] INFO WEBrick::HTTPServer#start: pid=5263 port=3000

应用正常启动,然后在页面浏览一下,看看程序运行的结果:在浏览器中输入地址: http://0.0.0.0:3000

这样第一步完成的很顺利。

(二)接下来定制我们自己的需求

     (1)利用支架生成界面和一些背后的代码例如路由的设置,控制器的编写等详细工作(在后面的章节详解)

OAONLINE是每个公司可以公用的一个OA系统。满足每个公司的基本办公需求。我们需要创建的页面允许我们创建,读取,更新,和删除每个公司的信息。Rails提供一种方式就可以快速生成需要的所有代码和页面。scaffolding(支架)。下面先看一下公司有哪些属性。

下面让我们见证神奇的时刻。在命令行中输入如下信息:

 steven@ubuntu:~/RubymineProjects/OAONLINE$ rails generate scaffold company name:string phone:string address:string email:string fax:string description:text level:decimal 

然后产生如下输出:

 invoke  active_record
create db/migrate/20131101054917_create_companies.rb
create app/models/company.rb
invoke test_unit
create test/models/company_test.rb
create test/fixtures/companies.yml
invoke resource_route
route resources :companies
invoke scaffold_controller
create app/controllers/companies_controller.rb
invoke erb
create app/views/companies
create app/views/companies/index.html.erb
create app/views/companies/edit.html.erb
create app/views/companies/show.html.erb
create app/views/companies/new.html.erb
create app/views/companies/_form.html.erb
invoke test_unit
create test/controllers/companies_controller_test.rb
invoke helper
create app/helpers/companies_helper.rb
invoke test_unit
create test/helpers/companies_helper_test.rb
invoke jbuilder
create app/views/companies/index.json.jbuilder
create app/views/companies/show.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/companies.js.coffee
invoke scss
create app/assets/stylesheets/companies.css.scss
invoke scss
create app/assets/stylesheets/scaffolds.css.scss

(2)对应的数据库

到目前为止,我们还没有讨论关于数据库的问题,我们查看一下rails在创建项目的时候为我们生成的目录中有个文件夹叫做db,进去看一下

 steven@ubuntu:~/RubymineProjects/OAONLINE/db$ ll
total 16
drwxrwxr-x 3 steven steven 4096 Oct 31 22:49 ./
drwxrwxr-x 12 steven steven 4096 Oct 31 21:44 ../
-rw-r--r-- 1 steven steven 0 Oct 31 21:54 development.sqlite3
drwxrwxr-x 2 steven steven 4096 Oct 31 22:49 migrate/
-rw-rw-r-- 1 steven steven 343 Oct 31 21:43 seeds.rb

这是Rails给默认设置的数据库,我们可以修改,在此将数据库改为mysql。修改方式如下:

rails给我们生成的文件中有个config文件夹,里面有database.yml文件,打开文件,发现里面有如下一段内容:

 development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000 # Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000 production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000

将development中的内容修改如下:

development:
adapter: mysql2
database: oaonline
host: 192.168.0.101
username: root
password: root
encoding: utf8
reconnect: false
pool: 5
timeout: 5000

通过迁移来创建数据表:rake db:migrate

竟然出现如下问题:

 (in /home/steven/RubymineProjects/OAONLINE)
rake aborted!
Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile.
/home/steven/RubymineProjects/OAONLINE/config/environment.rb:5:in `<top (required)>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

将'mysql2'添加到Gemfile中,Genfile在程序的根目录中。添加如下代码:

 gem 'mysql2'

再次执行命令:rake db:migrate

 steven@ubuntu:~/RubymineProjects/OAONLINE$ rake db:migrate
== CreateCompanies: migrating ================================================
-- create_table(:companies)
-> 0.0327s
== CreateCompanies: migrated (0.0330s) =======================================

此时数据表创建完成。

下面看一下咱们的工作成果:在浏览器中输入如下地址:http://0.0.0.0:3000/companies

如下为我们生成的几个页面:

OK。大概就是这个样子,实在希望大家帮我指点一下。多多交流。

Ruby on rails初体验(一)的更多相关文章

  1. Ruby on rails初体验(二)

    体验一中添加了一个最基本的支架和一个简单的数据迁移,实现了一个基本的增删改查的功能列表.体验二中要在次功能上继续丰满一下功能.实现如下效果: 在每个公司中都包含有不同的部门,按照体验一中的方法,添加一 ...

  2. Ruby on rails初体验(三)

    继体验一和体验二中的内容,此节将体验二中最开始的目标来实现,体验二中已经将部门添加的部分添加到了公司的show页面,剩下的部分是将部门列表也添加到公司的显示页面,整体思路和体验二中相同,但是还是会有点 ...

  3. Ruby on Rails (ROR)类书籍

    Ruby on Rails (ROR)类书籍下载地址及其他(整理) Ruby on Rails 如此之热,忍不住也去看了看热闹,现在把一些相关的电子图书下载地址整理下,方便有兴趣的朋友. 2006-0 ...

  4. ThinkPHP -- 开发初体验及其几个配置文件的介绍

    ThinkPHP是一款不错的轻量级的PHP+MVC框架,它吸取了Ruby On Rails的特性,不仅将Model.View.Controller分开,而且实现了ORM.模板标签等高级特性.    开 ...

  5. Ruby On Rails环境搭建

    注:现在http://rubyforge.org 网站已经停止运行,取而代之的是https://rubygems.org这个网站,下文中所需要的gem包都可以去这个网站搜索下载.其他完全按照下文说的去 ...

  6. [Ruby on Rails系列]1、开发环境准备:Vmware和Linux的安装

    Ruby on Rails是一个采用Ruby语言的遵循MVC模式的Web开发框架.使用RoR会得到更加快速爽快的Web开发体验.相比于Java EE,该框架使Web开发的速度和效率变得更加轻快和敏捷. ...

  7. 10个基于 Ruby on Rails 构建的顶级站点

    本文系国内 ITOM 行业领军企业 OneAPM 工程师翻译整理自 Raviraj Hegde 的文章 Top Sites Built with Ruby on Rails. 就其本身而言,Ruby ...

  8. Ruby on Rails创始人DHH谈如何进行混合移动APP开发

    混合型APP兼具原生型APP软件良好用户交互体验的优势和网页型APP软件跨平台开发的优势,并且其开发成本和网页型APP软件接近,其开发效率也远高于原生型APP软件.混合型APP已经被众多企业所认可.最 ...

  9. Swift与C++混编 OpenCV初体验 图片打码~

    OpenCV初体验,给图片打码 提到OpenCV,相信大多数人都听说过,应用领域非常广泛,使用C++开发,天生具有跨平台的优势,我们学习一次,就可以在各个平台使用,这个还是很具有诱惑力的.本文主要记录 ...

随机推荐

  1. synchronized同步方法和同步代码块的区别

    同步方法默认使用this或者当前类做为锁. 同步代码块可以选择以什么来加锁,比同步方法更精确,我们可以选择只有会在同步发生同步问题的代码加锁,而并不是整个方法. 同步方法使用synchronized修 ...

  2. Windows Server 2012之活动目录域服务的卸载

    Windows Server 2012之活动目录域服务的卸载 2012-07-11 06:27:35 标签:Windows Server 2012 活动目录域服务 卸载 原创作品,允许转载,转载时请务 ...

  3. C#入门篇-4:使用运算符

    using System; using System.Text; using System.Collections; using System.Collections.Generic; using S ...

  4. PAT——乙级1032

    这些题也确实简单,但是我还是想做做,多熟悉一下C++,毕竟实践是检验真理的唯一标准,有很多小知识点自己做了才知道. 这个题是 1032 挖掘机技术哪家强 (20 point(s)) 为了用事实说明挖掘 ...

  5. 从输入url开始,完善前端体系架构

    原文链接: https://segmentfault.com/a/1190000013662126 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系! javascript 前端 23 ...

  6. springcloud 高可用分布式配置中心

    SpringCloud教程七:高可用的分布式配置中心(SpringCloud Config) 当服务有很多 都要从服务中心获取配置时 这是可以将服务中心分布式处理 是系统具备在集群下的大数据处理 主要 ...

  7. Unity 3D 的四种坐标系

    1, World Space(世界坐标): 我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的.transform.position可以获得该位置坐标. 2, Screen Spa ...

  8. 【bzoj2179】FFT快速傅立叶 FFT

    题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出 输出一行,即x*y的结果. 样例 ...

  9. [HDU3480] Division [四边形不等式dp]

    题面: 传送门 思路: 因为集合可以无序选择,所以我们先把输入数据排个序 然后发先可以动归一波 设$dp\left[i\right]\left[j\right]$表示前j个数中分了i个集合,$w\le ...

  10. [AGC004D] Teleporter [贪心]

    题面: 传送门 思路: 分析可知,这道题中的图是一个环套内向树,首都在环上 首先有一个结论:当首都的出边指向首都时,一定最优(不然首都出发可能无法按时到达首都)(可以按时到达的情况也一定有到不了的) ...