• Ruby on rails初体验(一)


         接触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)在命令行中输入:             

    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。大概就是这个样子,实在希望大家帮我指点一下。多多交流。

  • 相关阅读:
    插入排序java代码
    选择排序java代码
    break语句的作用
    while和do-while的区别
    if-else-if-else与switch的区别
    Java中基本类型的转换规则
    如何让计算机最高效的算出2乘以8?
    |和||的作用和区别
    &和&&的作用和区别
    i++和++i的作用和区别
  • 原文地址:https://www.cnblogs.com/fantiantian/p/3401913.html
Copyright © 2020-2023  润新知