接触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. TCP/IP网络编程之多进程服务端(一)

    进程概念及应用 我们知道,监听套接字会有一个等待队列,里面存放着不同客户端的连接请求,如果有一百个客户端,每个客户端的请求处理是0.5s,第一个客户端当然不会不满,但第一百个客户端就会有相当大的意见了 ...

  2. Python框架之Django学习笔记(十一)

    话说上次说到数据库的基本访问,而数据库我们主要进行的操作就是CRUD,也即是做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete),俗 ...

  3. IOS开发---菜鸟学习之路--(十一)-使新闻内容自适应高度

    上一章当中,我们留了一个小BUG. 其实就是浏览新闻的时候,如果文字内容过长的花,UITextView 会有个下拉框,而最底层的UIScrollView也有个下拉框,那么在使用的时候就会非常的不爽. ...

  4. [转载]robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例

    原文地址:robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例运行作者:机器,猫 最近一直在完成一些robotium的小功能,用来更方便的完成一些小功能的测试,或者可以说用来娱乐 ...

  5. Python+Selenium练习篇之17-断言页面标题

    继续来介绍一个Selenium中页面title断言方法. 相关脚本代码如下: # coding=utf-8 import time from selenium import webdriver dri ...

  6. Python+Selenium练习篇之5-利用partial link text定位元素

    本文介绍如何通过partial link text来定位页面元素.看到这个,有点和前一篇文字link text有点类似.字面意思,确实和link text相类似,partial link text就是 ...

  7. Django-缓存机制、跨域请求(CORS)、ContentType组件

    Django缓存机制: 在settings中间件里面设置: 三个粒度: 1 全站缓存 用中间件: MIDDLEWARE = [ # 'django.middleware.cache.UpdateCac ...

  8. 实战小项目之IMX6 VPU使用

    项目简介 基于官方的demo进行修改,限于能力问题,并没有将功能代码完全从官方的demo中分离出来,还是基于原来的框架进行修改,做了一些简单的封装,我做的工作如下: 使用自己的采集程序 定义6中工作模 ...

  9. md5 加密算法和升级

    在这里插一小节加密的吧,使用openssl库进行加密. 使用MD5加密 我们以一个字符串为例,新建一个文件filename.txt,在文件内写入hello ,然后在Linux下可以使用命令md5sum ...

  10. 【转】UGUI文本字体颜色和大小等代码修改

    http://blog.csdn.net/alayeshi/article/details/51842195 由于项目需求用UGUI在同个文本中显示出颜色和大小都不同的文字,我上网找个很久并没有见到相 ...