亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Ruby on Rails之Oracle應(yīng)用

瀏覽:108日期:2023-11-21 18:15:52
Rails 是一個(gè)易用的框架,但像任何技術(shù)一樣,要精通它還需一定的時(shí)間。2006 年 4 月發(fā)表 您可能對(duì) Ruby on Rails 已有所耳聞,這一新應(yīng)用框架正以狂風(fēng)暴雨之勢(shì)席卷 Web 開(kāi)發(fā)社區(qū),尤其是 J2EE 和 PHP 編程界。 Rails 是一個(gè)功能強(qiáng)大的 Web 應(yīng)用平臺(tái),在不到兩年的時(shí)間內(nèi)便贏(yíng)得了眾多 J2EE 和 PHP 編程人員的廣泛青睞。它為什么會(huì)得到 J2EE 和 PHP 編程人員的垂青?了解 Rails 的優(yōu)勢(shì)后您的疑問(wèn)將一掃而空。其一是它使用了嚴(yán)格的 model-view-controller (模式—視圖—控制器)體系結(jié)構(gòu),贏(yíng)得了自尊且醉心于設(shè)計(jì)模式的“妄客”(自我的技術(shù)迷)的尊敬 — 這是 J2EE 開(kāi)發(fā)人員對(duì)其情有獨(dú)鐘的原因。其二是使用 Rails 可以非常方便地構(gòu)建基礎(chǔ)系統(tǒng) — 這是它吸引 PHP 開(kāi)發(fā)人員的原因。 但是,從數(shù)據(jù)庫(kù)角度來(lái)看,Rails 有一些非常明顯的缺陷。Rails 對(duì)數(shù)據(jù)庫(kù)布局和應(yīng)用程序需求作了許多假定。比如,Rails 假定所有表都使用一個(gè)非復(fù)合的主鍵。它不支持復(fù)合主鍵!另外,Rails 不支持雙步提交;它只能用于單個(gè)數(shù)據(jù)庫(kù)后端的情況。 本文不是 Rails 的吹捧文章或是批判文章,僅是對(duì)這一技術(shù)的一個(gè)介紹。其中既有褒獎(jiǎng)也有批評(píng)。可能有時(shí)批判顯得有點(diǎn)嚴(yán)厲(在 Rails 狂熱愛(ài)好者眼中尤其如此),但是不要為表象所迷惑。使用任何 Web 應(yīng)用框架都要講究技巧,不管它是 J2EE、Asp.Net、或 PHP。從長(zhǎng)遠(yuǎn)來(lái)看,使用 Rails 比使用其它 Web 應(yīng)用開(kāi)發(fā)平臺(tái)的效率更高,但是需要一定的時(shí)間來(lái)熟悉和把握該技術(shù)。 什么是 Ruby?什么是 Rails? Ruby 是一種動(dòng)態(tài)編程語(yǔ)言,它在許多方面類(lèi)似于 Perl、Python 和 Smalltalk,但是它是自成體系的。Java 和 PHP 編程人員似乎可以很輕松的把握這一語(yǔ)言,他們是 Ruby 的最大擁護(hù)者。這一語(yǔ)言還吸引著其他人的加入,包括 Don Box 這位 Microsoft 界的超級(jí)“妄客”。 Ruby 的歷史不短,它問(wèn)世于 1993 年,先于在 1995 年便為公眾知曉的 Java 和 PHP。所以盡管 Ruby 是一個(gè)成熟的語(yǔ)言,卻不如其它語(yǔ)言普及。這造成了 Ruby 編程語(yǔ)言陣營(yíng)并不如 Java、PHP 和 Perl 陣營(yíng)強(qiáng)大。因此,您會(huì)發(fā)現(xiàn)專(zhuān)門(mén)針對(duì)這一語(yǔ)言的框架、庫(kù)、書(shū)籍、網(wǎng)站、博客和其它資源都比較少。 在 David Heinemeier Hanson 于近期推出了 Rails 框架后,Ruby 社區(qū)推廣能力不濟(jì)的頹勢(shì)得到了扭轉(zhuǎn),有證據(jù)表明該框架是 Ruby 誕生以來(lái)最受歡迎的應(yīng)用程序。Rails 將 Ruby 編程語(yǔ)言擴(kuò)展為極其適用于 Web 開(kāi)發(fā)的領(lǐng)域特定語(yǔ)言(Domain Specific Language)。它還借用了 ActiveRecord 擴(kuò)展,將對(duì)象關(guān)系持久性引入了 Ruby 語(yǔ)言。Rails 讓人敬而遠(yuǎn)之的原因除了它不支持復(fù)合主鍵和兩步提交外,其最大的障礙在于要使用它您需要重新學(xué)習(xí)一門(mén)編程語(yǔ)言。這不是大部分人可以不求甚解一略而過(guò)的階段,學(xué)習(xí)一門(mén)新語(yǔ)言雖然可以為您帶來(lái)歡樂(lè),但同時(shí)卻是一條令人生畏的坎坷之途。但是,假如您想在自己的履歷中添上濃墨重彩的一筆,Ruby 語(yǔ)言便是不二之選。梅花香自苦寒來(lái),Ruby 是一個(gè)完全不受商業(yè)利益左右,歷經(jīng) 10 年錘煉而成的語(yǔ)言。所以,使用 Ruby 能給您帶來(lái)愉悅的享受,在很多情況下,其生產(chǎn)率比 Java、C 和 Microsoft .NET 語(yǔ)言高出一個(gè)數(shù)量級(jí)。(IronPython 可能是個(gè)例外,它是 Python 語(yǔ)言與 Microsoft .NET 環(huán)境的接口。Python 類(lèi)似于 Ruby,也是一個(gè)生產(chǎn)率很高的動(dòng)態(tài)編程語(yǔ)言。) Rails 的用途是什么? Rails 是一個(gè)從零開(kāi)始設(shè)計(jì)而成的框架,用于構(gòu)建使用關(guān)系數(shù)據(jù)庫(kù)后端的動(dòng)態(tài)網(wǎng)站。它將要害詞引入了 Ruby 編程語(yǔ)言,簡(jiǎn)化了 Web 應(yīng)用程序的配置。此外,它還可以基于現(xiàn)有的數(shù)據(jù)庫(kù)模式自動(dòng)生產(chǎn)完整的 Web 應(yīng)用程序,盡管有點(diǎn)粗糙。這一能力既是 Ruby 的突出優(yōu)點(diǎn),卻同時(shí)也是它的致命弱點(diǎn)。Rails 假定了數(shù)據(jù)庫(kù)模式命名規(guī)范,假如遵循這一規(guī)范,只需執(zhí)行一個(gè)命令即可生成一個(gè)基本 Web 站點(diǎn)。但要完成這一工作需要進(jìn)行一些額外配置,有時(shí)這些配置可能根本無(wú)法實(shí)現(xiàn)。您還會(huì)發(fā)現(xiàn) Rail 假定的數(shù)據(jù)庫(kù)規(guī)范幾乎都是可更改的,但是更改得越多,該平臺(tái)的生產(chǎn)率就越低。這就是 Rails 在開(kāi)發(fā)新數(shù)據(jù)庫(kù)的新應(yīng)用程序時(shí)能大顯神通的原因。但它卻不是處理原有系統(tǒng)的一個(gè)上佳方案。 示例是了解使用 Rails 開(kāi)發(fā)新應(yīng)用程序的最好方式。假如您安裝有 Oracle 數(shù)據(jù)庫(kù),且能夠基于這一數(shù)據(jù)庫(kù)創(chuàng)建新數(shù)據(jù)庫(kù)和新表,那么創(chuàng)建一個(gè)完整的 Web 應(yīng)用程序的用時(shí)將不超過(guò) 15 分鐘。在本示例中,我們將使用 Ruby on Rails 來(lái)構(gòu)建一個(gè)產(chǎn)品目錄。 示例:簡(jiǎn)單的產(chǎn)品目錄 我從去年開(kāi)始投資高檔漫畫(huà)書(shū),非凡是 1946 年以來(lái)的舊版漫畫(huà)書(shū)。我創(chuàng)建了一個(gè)簡(jiǎn)單的 Ruby on Rails 數(shù)據(jù)庫(kù)應(yīng)用程序,利用它我在買(mǎi)賣(mài)活動(dòng)中就可來(lái)方便地插入、移除、更改和刪除書(shū)籍。因?yàn)槭枪┪覀€(gè)人使用,所以程序自然是能減則減。本文中要構(gòu)建的應(yīng)用程序是我所使用的 Ruby on Rails 應(yīng)用程序的“廋身”版。 盡管 Rails 和 Oracle 數(shù)據(jù)庫(kù)可用于很多平臺(tái)上,但本文采用了 Windows XP,有證據(jù)表明它是 Oracle 應(yīng)用程序開(kāi)發(fā)人員最常用的平臺(tái)之一。本示例非常簡(jiǎn)單,其實(shí)就是 “Hello World” 編程語(yǔ)言示例的數(shù)據(jù)庫(kù)版,目的是讓您初嘗 Ruby,但它并沒(méi)有展示 Rails 的所有能力,就像任何編程語(yǔ)言的“Hello World”示例都沒(méi)有淋漓盡致地展示該語(yǔ)言的所有能力一樣。 假如您在運(yùn)行這一示例的過(guò)程中出現(xiàn)了問(wèn)題,原因可能有以下三種:下載的代碼不對(duì);數(shù)據(jù)庫(kù)設(shè)置不當(dāng),不能連到該示例應(yīng)用程序;或者是您的 Windows XP 操作系統(tǒng)出現(xiàn)了問(wèn)題。在開(kāi)發(fā)本示例的過(guò)程中,我碰到了一些涉及版本和數(shù)據(jù)庫(kù)配置的問(wèn)題 — 所有這些都是由缺乏知識(shí)而造成的。我從我的朋友 Michael Carland 那里學(xué)到了許多知識(shí),這樣才得以順利完成這一示例,并使之盡量簡(jiǎn)單。 實(shí)際情況是,實(shí)現(xiàn) Ruby on Rails 和 Oracle 的協(xié)同工作并不是一件簡(jiǎn)單的事情。有時(shí)會(huì)讓人倍感灰心。如完全按本文中的說(shuō)明,您應(yīng)該不會(huì)碰到問(wèn)題。但是一旦超出本示例的范圍,就會(huì)出問(wèn)題。Rails 可以達(dá)到很高的生產(chǎn)率,但它是一個(gè)命令行開(kāi)發(fā)環(huán)境,并不提供高級(jí)集成開(kāi)發(fā)環(huán)境通常所具有的“自動(dòng)化”功能。假如您不是“自力更生”型的技術(shù)人員,那目前最好不要使用 Rails。第 1 步:設(shè)置 Oracle 數(shù)據(jù)庫(kù) 假如您對(duì)結(jié)合使用 Rails 和 Oracle 不感愛(ài)好的話(huà),您也不會(huì)來(lái)看這篇文章,所以您需要安裝一個(gè) Oracle 數(shù)據(jù)庫(kù)實(shí)例并向該數(shù)據(jù)庫(kù)添加一個(gè)表。嚴(yán)格遵循本文中的命名規(guī)范非常重要,否則由 Rails 自動(dòng)生成的代碼將無(wú)法正常運(yùn)行(假如不進(jìn)行調(diào)整)。您要?jiǎng)?chuàng)建的表如下所述: CREATE TABLE comics (id,;;NUMBER(10) NOT NULL,title;;VARCHAR2(60), ;;NUMBER(4),publisher;VARCHAR2(60),PRIMARY KEY (id));CREATE SEQUENCE comics_seq;這里提供了一個(gè) SQL 腳本文件,您可以用它來(lái)創(chuàng)建表并添加一些產(chǎn)品數(shù)據(jù)。我建議您使用它,以便您的應(yīng)用程序便與這里開(kāi)發(fā)的保持一致。完成這一工作最簡(jiǎn)單的方法是按照以下步驟使用 SQL*Plus。(假定您已經(jīng)安裝有 Oracle 數(shù)據(jù)庫(kù)并知道如何使用它。) 使用 SQL*Plus,創(chuàng)建一個(gè)擁有 DBA 權(quán)限的用戶(hù),用于在這一應(yīng)用程序中進(jìn)行操作。 SQL> GRANT dba TO ruby IDENTIFIED BY ruby;SQL> ALTER USER ruby DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;SQL> EXIT使用 SQL 文件,創(chuàng)建應(yīng)用程序表 COMICS,然后插入一些示例數(shù)據(jù)。 C:> sqlplus ruby/ruby@rails @comics.sql可能您已經(jīng)發(fā)現(xiàn)本例中創(chuàng)建的 COMICS 是復(fù)數(shù)形式,這似乎不太正常,因?yàn)橥ǔN覀兌紝⒈砻麨閱螖?shù)形式(例如 COMIC)。但是,Rails 采用了復(fù)數(shù)形式來(lái)命名表。通過(guò) Rails 配置可以更改這一默認(rèn)規(guī)范,但使用復(fù)數(shù)名稱(chēng)更為簡(jiǎn)便。 第 2 步:安裝 Ruby、RubyGems、Rails 和 Rails Oracle 庫(kù) 要在 Windows XP 上使用 Rails,需要兩個(gè)軟件:帶 RubyGems 的 Ruby 編程語(yǔ)言安裝包,Rails 1.0 (1.1 版已于不久前推出,但本文只討論 1.0),和 Rails Oracle 數(shù)據(jù)庫(kù)庫(kù)。要下載和安裝帶 Gems 的 Ruby 安裝程序,請(qǐng)按以下步驟進(jìn)行。 訪(fǎng)問(wèn) http://rubyinstaller.rubyforge.org/。 下載“One-Click Ruby Installer”。 按照說(shuō)明完成安裝。安裝完 Ruby 編程平臺(tái)后,您就可以使用 RubyGems 這一 Ruby 應(yīng)用工具很方便地安裝 Ruby 框架了。要安裝 Rails 應(yīng)用程序開(kāi)發(fā)框架,您只需打開(kāi)命令行提示符,鍵入一個(gè)命令: C:> gems install rails -v 1.0.0 --remote現(xiàn)在您已經(jīng)成功安裝了 Ruby、RubyGems 和 Rails,接下來(lái)可以安裝一些專(zhuān)用代碼庫(kù),以實(shí)現(xiàn) Rails 應(yīng)用程序和 Oracle 數(shù)據(jù)庫(kù)服務(wù)器的通信。要下載和安裝 Oracle Rails 庫(kù),請(qǐng)?jiān)L問(wèn) http://rubyforge.org/projects/ruby-oci8,下載 ruby-oci8-0.1.13-mswin.r 到 C 盤(pán)中,然后在命令窗口中執(zhí)行以下命令: C:> ruby ruby-oci8-0.1.13-mswin.rb假如一切順利,到目前為此,您就完成了 Ruby、Rails 和 Rails-Oracle 連接庫(kù)的安裝。下一步就是創(chuàng)建您的第一個(gè) Ruby on Rails Web 應(yīng)用程序了。 第 3 步:創(chuàng)建 Web 應(yīng)用程序 要?jiǎng)?chuàng)建一個(gè)新的 Rails 應(yīng)用程序,先要按照以下步驟創(chuàng)建一個(gè)新的 Rails 項(xiàng)目: 使用 rails 命令行應(yīng)用程序創(chuàng)建一個(gè)新項(xiàng)目(將自動(dòng)創(chuàng)建新目錄)。 C:> rails comics_catalog更改目錄,進(jìn)入前一步創(chuàng)建的新項(xiàng)目目錄。 C:> cd comics_catalogC:comics_catalog>現(xiàn)在您已經(jīng)創(chuàng)建了一個(gè)新的 Rails 項(xiàng)目目錄,下面您需要配置項(xiàng)目以讓 Rails 應(yīng)用程序使用 Rails-Oracle 連接庫(kù)。 在您的項(xiàng)目目錄中,有一個(gè) config 目錄,其中有一個(gè) database.yml 文件。您需要使用文本編輯器來(lái)對(duì) database.yml 文件進(jìn)行編輯。該文件的原始內(nèi)容如下: 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:不同的數(shù)據(jù)庫(kù)需要使用不同的連接屬性。Rails 的默認(rèn)設(shè)置適用于 MySQL,但您要重新配置該項(xiàng)目以使用 Oracle。按照下列步驟更改 development 屬性。(您也可以更改 test 和 production 屬性,但本文不討論這些內(nèi)容) development:adapter:ociusernameruby口令):rubyhost:RAILS 使用 Rails 創(chuàng)建 Web 應(yīng)用程序的方法有多種,但到目前為止最為簡(jiǎn)單的方法是使用 Rails 1.0.0 中新增的一個(gè)命令行功能,使用它可以一次構(gòu)建整個(gè)應(yīng)用程序。 C:comics_catalog> ruby script/generate scaffold Comic 除了在命令行窗口中連續(xù)出現(xiàn)的輸出外,還發(fā)生了什么呢?Rails 代碼生成器創(chuàng)建了模型、視圖和控制器 Ruby 代碼來(lái)訪(fǎng)問(wèn) COMICS 表。在本例中您使用 Rails 的 scaffold 來(lái)創(chuàng)建應(yīng)用程序,它將為您完成所有的工作。假如更改了數(shù)據(jù)庫(kù)表,您需要重新運(yùn)行 scaffold 命令。否則您的應(yīng)用程序?qū)o(wú)法工作。 現(xiàn)在您已經(jīng)生成了 web 應(yīng)用程序,接下來(lái)就是啟動(dòng) Ruby Web 服務(wù)器 — WEBRick。 C:comics_catalog> ruby script/server您可以在任何時(shí)候更改您應(yīng)用程序的 Ruby 代碼或 COMICS 表而無(wú)需重啟 web 服務(wù)器。但是,假如您更改了數(shù)據(jù)庫(kù)配置文件(如 database.yml),則需要重啟服務(wù)器。 現(xiàn)在您可以使用 Web 瀏覽器來(lái)訪(fǎng)問(wèn)位于您開(kāi)發(fā)計(jì)算機(jī)中的 Rails Comic Catalog 應(yīng)用程序。使用如下 URL: http://localhost:3000/comics/list瀏覽器應(yīng)該顯示一個(gè)您的目錄中包含的漫畫(huà)書(shū)列表,如圖 1 所示。 Ruby on Rails之Oracle應(yīng)用圖 1:產(chǎn)品目錄表 當(dāng)您使用 scaffold 創(chuàng)建 Rails Web 應(yīng)用程序時(shí),它會(huì)自動(dòng)創(chuàng)建三個(gè) Web 組件,您可以使用這些組件來(lái)查看一個(gè)含目標(biāo)數(shù)據(jù)庫(kù)表所有記錄的列表,以及插入、更改和刪除該表中的記錄。圖 1 中顯示了一個(gè)列表,其中包含了您在本教程開(kāi)始時(shí)執(zhí)行 SQL 腳本而向數(shù)據(jù)庫(kù)中插入的所有示例數(shù)據(jù)。 除了列表視圖外,本程序還提供詳情視圖。點(diǎn)擊任一“Show” 鏈接您就可以查看詳情頁(yè),其中專(zhuān)門(mén)顯示某一記錄的數(shù)據(jù)。圖 2 即是這種頁(yè)面的一個(gè)示例。 圖 2:詳情頁(yè) 您還可以編輯數(shù)據(jù)庫(kù)表中的任一記錄。單擊“Back”鏈接,或使用瀏覽器的回退按鈕返回列表視圖頁(yè),然后點(diǎn)擊任一記錄的“Edit”鏈接。圖 3 顯示了 COMICS 數(shù)據(jù)庫(kù)表中記錄之一的編輯視圖示例。 圖 3:編輯視圖 您也可以向 COMICS 表中添加新記錄,先返回列表視圖,單擊“New Comic”鏈接。然后您將看到一個(gè)插入視圖,它類(lèi)似于圖 3,只是所有域都是空白的。 精通 Rails Product Catalog 示例展示了使用 Rails 可以很方便地創(chuàng)建一個(gè)極其簡(jiǎn)單的表,但是這個(gè)表除用于跟蹤庫(kù)存外在其它方面并沒(méi)有很大的用處。您可以使用 Rails 創(chuàng)建復(fù)雜得多的 Web 應(yīng)用程序,但這需要您花費(fèi)一定的精力來(lái)研究和揣摩代碼。Rails 是一個(gè)易用的框架,但像任何技術(shù)一樣,要精通它還需一定的時(shí)間。這里,我只建議正進(jìn)行全新應(yīng)用程序開(kāi)發(fā),通曉技術(shù)的人員和開(kāi)發(fā)團(tuán)隊(duì)使用 Rails。對(duì)于在此之外的,建議您等其成熟后再使用。 要真正精通 Rails,建議您閱讀一本書(shū),雖然今年稍后會(huì)有一系列書(shū)涌現(xiàn),但目前市面上現(xiàn)有的一本優(yōu)秀著作是 Agile Web Programming with Ruby on Rails ,該書(shū)由 David Heninmier Hanson 和 Dave Thomas 合著完成,由 Pragmatic Bookshelf 在 2005 年出版。Hanson,眾所周知,是 Rails 之父,而 Thomas 則參與了 Programming Ruby:The Pragmatic Programmers' Guide(Pragmatic Bookshelf,第 2 版,2004)一書(shū)的編撰。
主站蜘蛛池模板: 日日综合 | 国模精品视频一区二区三区 | 久久精品国产2020观看福利色 | 九九爱www高清免费人成 | 免费一级毛片女人图片 | 福利一二区 | 国产成人亚洲精品蜜芽影院 | 草草线禁成18年在线视频 | 中文永久免费观看网站 | 婷婷综合 在线 | 啪啪激情网| 国产区香蕉精品系列在线观看不卡 | 亚洲国产aaa毛片无费看 | 国产麻豆视频在线观看 | 亚洲欧美专区精品久久 | 九九精品成人免费国产片 | ww在线观视频免费观看 | 永久免费看电视网站 | 日韩专区一区 | 黄色香蕉视频 | 亚洲黄色片视频 | 国产亚洲综合在线 | 国产欧美激情一区二区三区 | 黄色成人在线播放 | 日韩在线国产 | 一区二区三区网站 | 特一级大黄在线观看 | 色综合久久中文 | 97久久天天综合色天天综合色 | 日本久久久久久中文字幕 | 欧美破处视频在线 | 欧美三级一区 | 国产精品欧美一区二区 | 欧美亚洲国产精品久久高清 | 欧美5g影院天天5g天天看 | 国产免费全部免费观看 | 在线播放国产区 | 国产xxxx做受性欧美88 | 麻豆网址在线观看 | 亚洲综合色就色手机在线观看 | 欧美一区二区三区在线视频 |