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。大概就是這個樣子,實在希望大家幫我指點一下。多多交流。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM