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

   Rails 适用于那些以数据为中心的应用,不少应用的核心部分包括一个数据库,这些引用的存在的主要缘由是为了让客户能够经过它们来操做数据库,而不是直接使用SQL。css

    

     Rails应用的组成部分:html

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

     (2)Web服务器。能够是rails内置的web服务器也能够用apache等。mysql

     (3)数据库。能够是rails自带的sqLite或者是mysql等。linux

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

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

   

    (—)用Rails建立Web应用:sql

      (1)在命令行中输入:             数据库

1 steven@ubuntu:~/RubymineProjects$ rails new OAONLINE

             输出以下信息:         

  1 create      2       create  README.rdoc    3       create  Rakefile    4       create  config.ru    5       create  .gitignore    6       create  Gemfile    7       create  app    8       create  app/assets/javascripts/application.js    9       create  app/assets/stylesheets/application.css   10       create  app/controllers/application_controller.rb   11       create  app/helpers/application_helper.rb   12       create  app/views/layouts/application.html.erb   13       create  app/assets/images/.keep   14       create  app/mailers/.keep   15       create  app/models/.keep   16       create  app/controllers/concerns/.keep   17       create  app/models/concerns/.keep   18       create  bin   19       create  bin/bundle   20       create  bin/rails   21       create  bin/rake   22       create  config  41       ..............

        此时OAONLINE应用就建立成功。

      启动Web应用:

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

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

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

1 steven@ubuntu:~/RubymineProjects/OAONLINE$ rails server  2 => Booting WEBrick  3 => Rails 4.0.0 application starting in development on http://0.0.0.0:3000  4 => Run `rails server -h` for more startup options  5 => Ctrl-C to shutdown server  6 [2013-10-31 21:52:49] INFO  WEBrick 1.3.1  7 [2013-10-31 21:52:49] INFO  ruby 2.0.0 (2013-06-27) [i686-linux]  8 [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(支架)。下面先看一下公司有哪些属性。

 

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

 

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

  而后产生以下输出:

 

 1 invoke  active_record   2       create    db/migrate/20131101054917_create_companies.rb   3       create    app/models/company.rb   4       invoke    test_unit   5       create      test/models/company_test.rb   6       create      test/fixtures/companies.yml   7       invoke  resource_route   8        route    resources :companies   9       invoke  scaffold_controller  10       create    app/controllers/companies_controller.rb  11       invoke    erb  12       create      app/views/companies  13       create      app/views/companies/index.html.erb  14       create      app/views/companies/edit.html.erb  15       create      app/views/companies/show.html.erb  16       create      app/views/companies/new.html.erb  17       create      app/views/companies/_form.html.erb  18       invoke    test_unit  19       create      test/controllers/companies_controller_test.rb  20       invoke    helper  21       create      app/helpers/companies_helper.rb  22       invoke      test_unit  23       create        test/helpers/companies_helper_test.rb  24       invoke    jbuilder  25       create      app/views/companies/index.json.jbuilder  26       create      app/views/companies/show.json.jbuilder  27       invoke  assets  28       invoke    coffee  29       create      app/assets/javascripts/companies.js.coffee  30       invoke    scss  31       create      app/assets/stylesheets/companies.css.scss  32       invoke  scss  33       create    app/assets/stylesheets/scaffolds.css.scss

 

(2)对应的数据库

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

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

   这是Rails给默认设置的数据库,咱们能够修改,在此将数据库改成mysql。修改方式以下:

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

 1 development:   2   adapter: sqlite3     3   database: db/development.sqlite3   4   pool: 5   5   timeout: 5000   6    7 # Warning: The database defined as "test" will be erased and   8 # re-generated from your development database when you run "rake".   9 # Do not set this db to the same as development or production.  10 test:  11   adapter: sqlite3  12   database: db/test.sqlite3  13   pool: 5  14   timeout: 5000  15   16 production:  17   adapter: sqlite3  18   database: db/production.sqlite3  19   pool: 5  20   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

居然出现以下问题:

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

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

1 gem 'mysql2'

再次执行命令:rake db:migrate

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

此时数据表建立完成。

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

 以下为咱们生成的几个页面:

 

 

OK。大概就是这个样子,实在但愿你们帮我指点一下。多多交流。