亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Ruby on Rails之Oracle應用

2024-08-29 13:50:17
字體:
來源:轉載
供稿:網友
Rails 是一個易用的框架,但像任何技術一樣,要精通它還需一定的時間。  2006 年 4 月發表   您可能對 Ruby on Rails 已有所耳聞,這一新應用框架正以狂風暴雨之勢席卷 Web 開發社區,尤其是 J2EE 和 php 編程界。   Rails 是一個功能強大的 Web 應用平臺,在不到兩年的時間內便贏得了眾多 J2EE 和 PHP 編程人員的廣泛青睞。它為什么會得到 J2EE 和 PHP 編程人員的垂青?了解 Rails 的優勢后您的疑問將一掃而空。其一是它使用了嚴格的 model-view-controller (模式—視圖—控制器)體系結構,贏得了自尊且醉心于設計模式的“妄客”(自我的技術迷)的尊敬 — 這是 J2EE 開發人員對其情有獨鐘的原因。其二是使用 Rails 可以非常方便地構建基礎系統 — 這是它吸引 PHP 開發人員的原因。   但是,從數據庫角度來看,Rails 有一些非常明顯的缺陷。Rails 對數據庫布局和應用程序需求作了許多假定。比如,Rails 假定所有表都使用一個非復合的主鍵。它不支持復合主鍵!另外,Rails 不支持雙步提交;它只能用于單個數據庫后端的情況。   本文不是 Rails 的吹捧文章或是批判文章,僅是對這一技術的一個介紹。其中既有褒獎也有批評。可能有時批判顯得有點嚴厲(在 Rails 狂熱愛好者眼中尤其如此),但是不要為表象所迷惑。使用任何 Web 應用框架都要講究技巧,不管它是 J2EE、asp.net、或 PHP。從長遠來看,使用 Rails 比使用其它 Web 應用開發平臺的效率更高,但是需要一定的時間來熟悉和把握該技術。   什么是 Ruby?什么是 Rails?   Ruby 是一種動態編程語言,它在許多方面類似于 Perl、Python 和 Smalltalk,但是它是自成體系的。java 和 PHP 編程人員似乎可以很輕松的把握這一語言,他們是 Ruby 的最大擁護者。這一語言還吸引著其他人的加入,包括 Don Box 這位 Microsoft 界的超級“妄客”。   Ruby 的歷史不短,它問世于 1993 年,先于在 1995 年便為公眾知曉的 Java 和 PHP。所以盡管 Ruby 是一個成熟的語言,卻不如其它語言普及。這造成了 Ruby 編程語言陣營并不如 Java、PHP 和 Perl 陣營強大。因此,您會發現專門針對這一語言的框架、庫、書籍、網站、博客和其它資源都比較少。   在 David Heinemeier Hanson 于近期推出了 Rails 框架后,Ruby 社區推廣能力不濟的頹勢得到了扭轉,有證據表明該框架是 Ruby 誕生以來最受歡迎的應用程序。Rails 將 Ruby 編程語言擴展為極其適用于 Web 開發的領域特定語言(Domain Specific Language)。它還借用了 ActiveRecord 擴展,將對象關系持久性引入了 Ruby 語言。Rails 讓人敬而遠之的原因除了它不支持復合主鍵和兩步提交外,其最大的障礙在于要使用它您需要重新學習一門編程語言。這不是大部分人可以不求甚解一略而過的階段,學習一門新語言雖然可以為您帶來歡樂,但同時卻是一條令人生畏的坎坷之途。但是,假如您想在自己的履歷中添上濃墨重彩的一筆,Ruby 語言便是不二之選。梅花香自苦寒來,Ruby 是一個完全不受商業利益左右,歷經 10 年錘煉而成的語言。所以,使用 Ruby 能給您帶來愉悅的享受,在很多情況下,其生產率比 Java、C 和 Microsoft .NET 語言高出一個數量級。(IronPython 可能是個例外,它是 Python 語言與 Microsoft .NET 環境的接口。Python 類似于 Ruby,也是一個生產率很高的動態編程語言。)   Rails 的用途是什么?   Rails 是一個從零開始設計而成的框架,用于構建使用關系數據庫后端的動態網站。它將要害詞引入了 Ruby 編程語言,簡化了 Web 應用程序的配置。此外,它還可以基于現有的數據庫模式自動生產完整的 Web 應用程序,盡管有點粗糙。這一能力既是 Ruby 的突出優點,卻同時也是它的致命弱點。Rails 假定了數據庫模式命名規范,假如遵循這一規范,只需執行一個命令即可生成一個基本 Web 站點。但要完成這一工作需要進行一些額外配置,有時這些配置可能根本無法實現。您還會發現 Rail 假定的數據庫規范幾乎都是可更改的,但是更改得越多,該平臺的生產率就越低。這就是 Rails 在開發新數據庫的新應用程序時能大顯神通的原因。但它卻不是處理原有系統的一個上佳方案。   示例是了解使用 Rails 開發新應用程序的最好方式。假如您安裝有 Oracle 數據庫,且能夠基于這一數據庫創建新數據庫和新表,那么創建一個完整的 Web 應用程序的用時將不超過 15 分鐘。在本示例中,我們將使用 Ruby on Rails 來構建一個產品目錄。   示例:簡單的產品目錄   我從去年開始投資高檔漫畫書,非凡是 1946 年以來的舊版漫畫書。我創建了一個簡單的 Ruby on Rails 數據庫應用程序,利用它我在買賣活動中就可來方便地插入、移除、更改和刪除書籍。因為是供我個人使用,所以程序自然是能減則減。本文中要構建的應用程序是我所使用的 Ruby on Rails 應用程序的“廋身”版。   盡管 Rails 和 Oracle 數據庫可用于很多平臺上,但本文采用了 Windows xp,有證據表明它是 Oracle 應用程序開發人員最常用的平臺之一。本示例非常簡單,其實就是 “Hello World” 編程語言示例的數據庫版,目的是讓您初嘗 Ruby,但它并沒有展示 Rails 的所有能力,就像任何編程語言的“Hello World”示例都沒有淋漓盡致地展示該語言的所有能力一樣。   假如您在運行這一示例的過程中出現了問題,原因可能有以下三種:下載的代碼不對;數據庫設置不當,不能連到該示例應用程序;或者是您的 Windows XP 操作系統出現了問題。在開發本示例的過程中,我碰到了一些涉及版本和數據庫配置的問題 — 所有這些都是由缺乏知識而造成的。我從我的朋友 Michael Carland 那里學到了許多知識,這樣才得以順利完成這一示例,并使之盡量簡單。   實際情況是,實現 Ruby on Rails 和 Oracle 的協同工作并不是一件簡單的事情。有時會讓人倍感灰心。如完全按本文中的說明,您應該不會碰到問題。但是一旦超出本示例的范圍,就會出問題。Rails 可以達到很高的生產率,但它是一個命令行開發環境,并不提供高級集成開發環境通常所具有的“自動化”功能。假如您不是“自力更生”型的技術人員,那目前最好不要使用 Rails。第 1 步:設置 Oracle 數據庫   假如您對結合使用 Rails 和 Oracle 不感愛好的話,您也不會來看這篇文章,所以您需要安裝一個 Oracle 數據庫實例并向該數據庫添加一個表。嚴格遵循本文中的命名規范非常重要,否則由 Rails 自動生成的代碼將無法正常運行(假如不進行調整)。您要創建的表如下所述:
CREATE TABLE comics (
 id,  NUMBER(10) NOT NULL,
 title  VARCHAR2(60),
    NUMBER(4),
 publisher VARCHAR2(60),
 PRIMARY KEY (id)
);
CREATE SEQUENCE comics_seq;
  這里提供了一個 SQL 腳本文件,您可以用它來創建表并添加一些產品數據。我建議您使用它,以便您的應用程序便與這里開發的保持一致。完成這一工作最簡單的方法是按照以下步驟使用 SQL*Plus。(假定您已經安裝有 Oracle 數據庫并知道如何使用它。)   使用 SQL*Plus,創建一個擁有 DBA 權限的用戶,用于在這一應用程序中進行操作。
SQL> GRANT dba TO ruby IDENTIFIED BY ruby;
SQL> ALTER USER ruby DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
SQL> EXIT
  使用 SQL 文件,創建應用程序表 COMICS,然后插入一些示例數據。
C:/> sqlplus ruby/ruby@rails @comics.sql
  可能您已經發現本例中創建的 COMICS 是復數形式,這似乎不太正常,因為通常我們都將表命名為單數形式(例如 COMIC)。但是,Rails 采用了復數形式來命名表。通過 Rails 配置可以更改這一默認規范,但使用復數名稱更為簡便。   第 2 步:安裝 Ruby、RubyGems、Rails 和 Rails Oracle 庫   要在 Windows XP 上使用 Rails,需要兩個軟件:帶 RubyGems 的 Ruby 編程語言安裝包,Rails 1.0 (1.1 版已于不久前推出,但本文只討論 1.0),和 Rails Oracle 數據庫庫。要下載和安裝帶 Gems 的 Ruby 安裝程序,請按以下步驟進行。
  1. 訪問 http://rubyinstaller.rubyforge.org/。
  2. 下載“One-Click Ruby Installer”。
  3. 按照說明完成安裝。
安裝完 Ruby 編程平臺后,您就可以使用 RubyGems 這一 Ruby 應用工具很方便地安裝 Ruby 框架了。要安裝 Rails 應用程序開發框架,您只需打開命令行提示符,鍵入一個命令:
C:/> gems install rails -v 1.0.0 --remote
  現在您已經成功安裝了 Ruby、RubyGems 和 Rails,接下來可以安裝一些專用代碼庫,以實現 Rails 應用程序和 Oracle 數據庫服務器的通信。要下載和安裝 Oracle Rails 庫,請訪問 http://rubyforge.org/projects/ruby-oci8,下載 ruby-oci8-0.1.13-mswin.r 到 C 盤中,然后在命令窗口中執行以下命令:
C:/> ruby ruby-oci8-0.1.13-mswin.rb
  假如一切順利,到目前為此,您就完成了 Ruby、Rails 和 Rails-Oracle 連接庫的安裝。下一步就是創建您的第一個 Ruby on Rails Web 應用程序了。   第 3 步:創建 Web 應用程序   要創建一個新的 Rails 應用程序,先要按照以下步驟創建一個新的 Rails 項目: 使用 rails 命令行應用程序創建一個新項目(將自動創建新目錄)。
C:/> rails comics_catalog
  更改目錄,進入前一步創建的新項目目錄。
C:/> cd comics_catalog
C:/comics_catalog>
  現在您已經創建了一個新的 Rails 項目目錄,下面您需要配置項目以讓 Rails 應用程序使用 Rails-Oracle 連接庫。   在您的項目目錄中,有一個 config 目錄,其中有一個 database.yml 文件。您需要使用文本編輯器來對 database.yml 文件進行編輯。該文件的原始內容如下:
development:adapter:MySQLdatabase:rails_developmenthost:localhostusernamerootpassWord: # 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:mysqldatabase:rails_testhost:localhostusernamerootpassword:production:adapter:mysqldatabase:rails_productionhost:localhostusernamerootpassword:
不同的數據庫需要使用不同的連接屬性。Rails 的默認設置適用于 MySQL,但您要重新配置該項目以使用 Oracle。按照下列步驟更改 development 屬性。(您也可以更改 test 和 production 屬性,但本文不討論這些內容)
development:
adapter:oci
usernameruby
口令):ruby
host:RAILS
  使用 Rails 創建 Web 應用程序的方法有多種,但到目前為止最為簡單的方法是使用 Rails 1.0.0 中新增的一個命令行功能,使用它可以一次構建整個應用程序。
C:/comics_catalog> ruby script/generate scaffold Comic
  除了在命令行窗口中連續出現的輸出外,還發生了什么呢?Rails 代碼生成器創建了模型、視圖和控制器 Ruby 代碼來訪問 COMICS 表。在本例中您使用 Rails 的 scaffold 來創建應用程序,它將為您完成所有的工作。假如更改了數據庫表,您需要重新運行 scaffold 命令。否則您的應用程序將無法工作。   現在您已經生成了 web 應用程序,接下來就是啟動 Ruby Web 服務器 — WEBRick。
C:/comics_catalog> ruby script/server
您可以在任何時候更改您應用程序的 Ruby 代碼或 COMICS 表而無需重啟 web 服務器。但是,假如您更改了數據庫配置文件(如 database.yml),則需要重啟服務器。   現在您可以使用 Web 瀏覽器來訪問位于您開發計算機中的 Rails Comic Catalog 應用程序。使用如下 URL:   http://localhost:3000/comics/list  瀏覽器應該顯示一個您的目錄中包含的漫畫書列表,如圖 1 所示。

圖 1:產品目錄表
當您使用 scaffold 創建 Rails Web 應用程序時,它會自動創建三個 Web 組件,您可以使用這些組件來查看一個含目標數據庫表所有記錄的列表,以及插入、更改和刪除該表中的記錄。圖 1 中顯示了一個列表,其中包含了您在本教程開始時執行 SQL 腳本而向數據庫中插入的所有示例數據。   除了列表視圖外,本程序還提供詳情視圖。點擊任一“Show” 鏈接您就可以查看詳情頁,其中專門顯示某一記錄的數據。圖 2 即是這種頁面的一個示例。

圖 2:詳情頁
  您還可以編輯數據庫表中的任一記錄。單擊“Back”鏈接,或使用瀏覽器的回退按鈕返回列表視圖頁,然后點擊任一記錄的“Edit”鏈接。圖 3 顯示了 COMICS 數據庫表中記錄之一的編輯視圖示例。

圖 3:編輯視圖
  您也可以向 COMICS 表中添加新記錄,先返回列表視圖,單擊“New Comic”鏈接。然后您將看到一個插入視圖,它類似于圖 3,只是所有域都是空白的。   精通 Rails   Product Catalog 示例展示了使用 Rails 可以很方便地創建一個極其簡單的表,但是這個表除用于跟蹤庫存外在其它方面并沒有很大的用處。您可以使用 Rails 創建復雜得多的 Web 應用程序,但這需要您花費一定的精力來研究和揣摩代碼。Rails 是一個易用的框架,但像任何技術一樣,要精通它還需一定的時間。這里,我只建議正進行全新應用程序開發,通曉技術的人員和開發團隊使用 Rails。對于在此之外的,建議您等其成熟后再使用。   要真正精通 Rails,建議您閱讀一本書,雖然今年稍后會有一系列書涌現,但目前市面上現有的一本優秀著作是 Agile Web Programming with Ruby on Rails ,該書由 David Heninmier Hanson 和 Dave Thomas 合著完成,由 Pragmatic Bookshelf 在 2005 年出版。Hanson,眾所周知,是 Rails 之父,而 Thomas 則參與了 Programming Ruby:The Pragmatic Programmers' Guide(Pragmatic Bookshelf,第 2 版,2004)一書的編撰。


上一篇:影響ORACLE性能的源頭:性能調優原則

下一篇:Oracle SQL內置函數大全(一)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看91久久久久久| 狠狠久久亚洲欧美专区| 综合久久五月天| 欧美性受xxx| 欧美高清一级大片| 神马久久久久久| 亚洲成色www8888| 亚洲精品动漫100p| 精品日本高清在线播放| 精品亚洲精品福利线在观看| 日韩成人免费视频| 亚洲免费视频一区二区| 久久久国产精品亚洲一区| 一区二区三区www| 国产福利视频一区二区| 97精品视频在线播放| 精品久久久久久久久中文字幕| 91免费综合在线| 日韩黄色av网站| 在线不卡国产精品| 亚洲一区999| 精品久久久免费| 国产91成人video| 欧美黑人一区二区三区| 98午夜经典影视| 欧美—级高清免费播放| 亚洲天堂久久av| 高清一区二区三区日本久| 国产精品久久久久久久久久新婚| 91久久久久久久久久| 日韩精品视频在线观看网址| 国产精品pans私拍| 亚洲专区中文字幕| 日本19禁啪啪免费观看www| 亚洲男人第一av网站| 欧美成人h版在线观看| 91精品国产色综合| 亚洲欧美另类国产| 日韩大片免费观看视频播放| 色999日韩欧美国产| 国产精品入口尤物| 性色av一区二区三区在线观看| 国产精品一区二区三区久久| 日韩电影视频免费| 久久久成人的性感天堂| 国产精品久久久久久久久久久久久| 欧美成人在线免费| 久久91精品国产91久久跳| 国产丝袜一区视频在线观看| 91日本在线视频| 国内外成人免费激情在线视频| 亚洲精品成人久久电影| 欧美激情精品久久久| 91九色精品视频| 欧美成人午夜免费视在线看片| 日韩精品久久久久| 亚洲精品国产精品久久清纯直播| 欧美激情xxxx性bbbb| 国产精品激情av在线播放| 国产男女猛烈无遮挡91| 国产精品久久久久久久一区探花| 国产成人精品视频在线| 国产免费久久av| 国产成人精品免高潮费视频| 欧美影院在线播放| 伊人久久大香线蕉av一区二区| 日韩最新中文字幕电影免费看| 亚洲成年人在线| 国产成人免费av| 日韩美女免费观看| 欧美另类老女人| 91免费看片在线| 欧美亚洲成人精品| 久热在线中文字幕色999舞| 国产精品久久久久久久美男| 国产一区视频在线播放| 清纯唯美亚洲综合| 美女少妇精品视频| 4388成人网| 日韩免费在线电影| 国产精品久久久久久久av电影| 亚洲风情亚aⅴ在线发布| 亚洲天堂男人天堂女人天堂| 精品综合久久久久久97| 亚洲免费视频在线观看| 日韩欧美在线免费观看| 性日韩欧美在线视频| 亚洲精品欧美极品| 91久久久久久| 国产成人欧美在线观看| 亚洲成人久久网| 91视频免费在线| 精品久久久久久电影| 国产精品亚洲一区二区三区| 欧美日韩亚洲精品内裤| 91av在线不卡| 日本sm极度另类视频| 国产成人精品一区二区在线| 精品国产网站地址| 成人免费在线视频网址| 日本人成精品视频在线| 97国产在线视频| 69影院欧美专区视频| 国产v综合v亚洲欧美久久| 91久久精品久久国产性色也91| 午夜精品视频网站| 亚洲欧洲国产伦综合| 国产精品久久久久久av福利| 国产在线视频2019最新视频| 97超级碰在线看视频免费在线看| 国产91色在线| 国产精品午夜一区二区欲梦| 在线观看亚洲区| 久久久精品中文字幕| 色哟哟入口国产精品| 成人在线免费观看视视频| 日本高清+成人网在线观看| 久久精品国产v日韩v亚洲| 亚洲摸下面视频| 欧美激情国产高清| 日本中文字幕不卡免费| 欧美激情亚洲精品| 亚洲第一精品电影| 久久99精品久久久久久噜噜| 91美女片黄在线观看游戏| 欧美美最猛性xxxxxx| 国产精品99久久久久久www| 成人免费视频在线观看超级碰| 亚洲电影av在线| 日韩电影大全免费观看2023年上| 精品电影在线观看| 色妞在线综合亚洲欧美| 2019中文字幕在线| 国产精品va在线| 7777精品久久久久久| 亚洲3p在线观看| 最新国产成人av网站网址麻豆| 高清亚洲成在人网站天堂| 国产suv精品一区二区三区88区| 成人久久久久爱| 国产乱肥老妇国产一区二| 欧美一级在线播放| 亚洲一区制服诱惑| 欧美精品激情视频| 成人xvideos免费视频| 国产一区二区激情| 国产精品video| 欧美有码在线观看| 欧美高清自拍一区| 欧美—级a级欧美特级ar全黄| 日韩在线观看免费高清完整版| 一区二区三区天堂av| 91精品久久久久久久久久另类| 亚洲国产精品久久久久| 国产精品伦子伦免费视频| 欧美精品激情在线观看| 亚洲人精品午夜在线观看| 日韩电影在线观看永久视频免费网站| 亚洲综合精品一区二区| 亚洲免费影视第一页| 国产午夜精品免费一区二区三区| 国产精品麻豆va在线播放| 亚洲综合精品伊人久久| 久久综合久中文字幕青草|