Ruby on rails開發從頭來(windows)(三十六)- 調試技巧

這次我們來看看一些關於調試的小提示。首先,而且也是最重要的就是,編寫測試代碼,在Rails裡編寫單元測試和功能測試都很簡單,使用它們,可以減低bug發生率,也可以避免在你從前的代碼中突然出現bug。測試代碼告訴你哪些東西能夠工作,哪些不能,並且,測試代碼協助你隔離那些有問題的代碼,因為有時候bug並非很快地表現出來。如果問題發生在一個Model中,我們可以使用指令碼script/console來類比一個irb對話,在其中進行跟蹤,例如下面這樣:Z:\study\ruby\InstantRails

Ruby on rails開發從頭來(windows)(三十五)- 日誌(Log)

Rails內建了Log功能,或者更準確的說,Rails暴露了Logger對象,該對象可以在所有的Rails程式中使用。Logger是從ruby中移植過來的一個簡單的Log架構(你可以在ruby的命令列裡鍵入ri Logger來查看標準庫的文檔),對於我們而言,我們只需要知道Logger能針對warnning,info,error或者fatal level來產生Log資訊,然後確定向Log檔案中寫入哪個層級的Log資訊。logger.warn("I don't think that's

Ruby on rails開發從頭來(windows)(三十三)- 命名規範

在剛開始學習Rails的時候可能會困惑於Rails時怎樣自動處理命名的,比如如何根據一個名為Person的Model來到資料庫中找到名為people的表,這次我們就來看看Rails裡的命名規範。1.混合大小寫,底線,複數我們經常使用簡寫命名變數,在Ruby中,約定為命名變數時,全部字母都小寫,單詞的中間使用底線分割,類(Class)和Modules的命名有不同,不使用底線,單詞的簡寫和首字母使用大寫。所以我們在前面編寫的代碼裡有order_status和LineItem這樣的類名。Rails使用

Ruby on rails開發從頭來(windows)(三十二)- Rails的設定檔

Rails的運行時配置是由config目錄下的檔案來控制的。1.運行時環境(Runtime

Ruby on rails開發從頭來(windows)(三十一)- Rails的目錄結構

之前的三十篇都是根據書本上的內容寫的,很少有自己的理解,從這篇開始,來瞭解一些Rails的內部機理,所以理解的東西比較多,代碼就少了,這次我們來看看Rails的目錄結構。關於Rails的目錄結構,通過前面的練習,我們應該有一些瞭解了,我們的工作目錄主要是app和test兩個。其他目錄還瞭解不多,下面是一個Rails項目通常的目錄結構,我們還用前面的depot項目來作例子,目前的depot項目的結構:├─app             │ ├─controllers       │ ├─helpe

Ruby on rails開發從頭來(windows)(二十九)- 效能測試

Rails所針對的是Web項目,必須要考慮大訪問量的情況,所以我們來看看在Rails怎樣進行效能測試。1.要進行效能測試,我們首先要模仿大量的資料,我們現在知道,在test/fixtures/目錄下的yml檔案裡添加我們的測試資料,在運行測試時,這些資料會被載入到資料庫。但是一條兩條資料還可以,資料多的情況下,一條一條在yml檔案裡寫可不行,所以,我們先看看怎樣在yml檔案裡造大量的資料。在fixtrue目錄下建立一個子目錄performance,在裡面建立order.yml檔案,把內容改成下面

Ruby on rails開發從頭來(windows)(二十八)- 使用Rake運行測試

Rake是使用ruby編寫的程式,我們用Rake來讀入RakeFile。而Rakefile裡包含了定義的任務,每個任務都有一個名字,和它所依賴的一些任務,並且還有一組要執行的動作。現在我們來瞭解一下Rails中的Rake。 當你使用Rails的generate指令碼建立一個項目的時候,會自動在項目的根目錄產生一個Rakefile檔案,可以協助你完成很多任務,我們還可以使用一個命令來查看都提供了哪些功能,在Rails的命令列中執行:depot>rake –tasks

Ruby on rails開發從頭來(windows)(二十七)- 測試驅動開發

在敏捷開發的實踐中,測試驅動是少不了的。這篇來看看在rails中的一個測試驅動開發的例子。在前面我們編寫並進行了一些單元測試和功能測試,現在,我們的客戶突然要求添加一個功能:系統的每個使用者都可以對商品進行查詢。我們先初步的畫了一些草圖,來整理我們的思路和設計,然後開始寫代碼。對於具體的實現,我們已經有了大致的思路,但是如果有更多的反饋資訊的話會有助於我們走在正確的道路上。我們會在深入到代碼之前,編寫測試代碼。考慮我們的代碼將怎樣工作,確定一些規約,當測試通過,你的代碼就OK了。現在,我們來考慮

Ruby on rails開發從頭來(windows)(二十六)- 使用Mock對象

前面我們測試了model和controller,學習了一些常用的測試方法,現在我們來深入學習幾個有關測試的主題。第一個是使用Mock對象。在很多時候,我們的程式和實際的環境有依存關係,比如現在的購物車,在匯款,結賬的時候要接入網路上的銀行帳號,這樣就造成了我們測試的時候必須要有internet環境。比如,我們在model目錄裡建立了一個payment_gateway.rb來處理網路銀行相關的操作,我們在store_control.rb的save_order方法裡這樣寫:gateway =

Ruby on rails開發從頭來(windows)(二十四)-測試Controller

上篇隨筆裡介紹了rails在功能測試方面的一些約定。這次我們繼續會到Controller的測試。之前我們測試的是login,可以相見,使用者在login以後就要開始進行購物的動作了,所以我們現在就來測試store_controller,我們先來測試index方法。1.在index裡,我們列出了所有的可以銷售的書籍的列表,所以,這裡我們要讓store_controller來使用product.yml和orders.yml裡的資料。現在來看看store_controller_test.rb檔案,完整

Ruby on rails開發從頭來(windows)(二十三)-功能測試的約定

上篇隨筆裡測試了login_controller,我們使用了很多rails內建的斷言和get,put等方法來進行測試。這次來看看rails在功能測試方面的一些約定。1.HTTP請求的方法(HTTP request method)下面的方法用來類比HTTP請求並得到一個回應(response)get()put()post()delete()head()這五個函數每一個都有同樣的四個參數,以get()為例:get(action, parameters = nil, session = nil,

Ruby on rails開發從頭來(windows)(二十二)-測試Controller

上次測試Modeul的問題還沒有解決,但是下面的還要繼續,這次來測試Controller。1.在test\functional目錄下,rails已經為我們的controller產生了對應的測試檔案,要注意application_controller不會產生測試檔案。我們以控制登入的LoginController為例,開啟login_controller_test.rb,內容如下:require File.dirname(__FILE__) + '/../test_helper'require '

Ruby on rails開發從頭來(windows)(二十一)-測試Model時的問題

以前的隨筆都是按照書上的例子寫下來的,但是,這次在測試Model時,按照書上的例子代碼怎麼也走不通,所以就換個方式,這篇變成了提問。按照書上的說法,在products_test.rb開始的時候,會根據定義的yml檔案,載入測試資料到一個Hash裡,這樣,在test的時候我們就可以根據yml檔案中用例的名字來訪問一個product對象,例如:def test_read_with_hashassert_kind_of Product, @productvc_book =

Ruby on rails開發從頭來(windows)(二十)-測試model(CRUD)

上篇隨筆簡單瞭解了rails的測試和測試用資料的使用,這次來看看怎樣對一個model進行添刪查改的測試。1.還是使用上次寫的products_test.rb,修改test_turth方法的名字為test_create,並且使其內容為: def test_create  assert_kind_of Product, @product  assert_equal 1, @product.id  assert_equal "Pragmatic Version Control",

Ruby on rails開發從頭來(windows)(十九)-測試開始

前面我們已經完成了一個簡單的購物車,從這篇開始我們看看在rails中怎樣進行測試。在我們建立購物車程式的時候在我們的depot目錄下,就已經有一個test目錄了,這就是為我們進行測試準備的。到目前為止,我們看到裡面的fixtrues和functional,unit目錄中已經有對controller和model對應的測試檔案。我們首先測試一下products這個model。代碼test\unit目錄下的product_test.rb檔案,修改其內容為:require File.dirname(__

Ruby on rails開發從頭來(windows)(十八)-自動產生文檔

到此,我們這個購物車的實現就完成了,下面我們可以利用ruby裡的Rdoc來給我們的程式產生文檔,和dotnet,java,python等一樣,Rdoc可以把我們代碼裡類和方法聲明前面的注釋提取出來產生文檔。對於我們的depot程式,我們在rails的命令列裡運行rake appdoc命令,如圖:完成以後,可以在depot\doc目錄下看到剛才產生的文檔,開啟index.html,看到下面的內容:

Ruby on rails開發從頭來(windows)(十七)-控制存取權限

上次我們實現了登入的頁面,現在我們區別管理員和普通使用者,根據使用者的不同身份,轉入到不同的頁面在rails中提供了filter來截獲訪問某個action的請求,可以用filter在action被調用前或調用後添加我們自己的處理。在這裡,我們在admin的controller中的action被調用前添加攔截器。如果是管理員,就進入管理頁面,如果是普通使用者,就進入登入頁面。1.在application.rb中給ApplicationController類添加authorize方法,代碼如下:de

Ruby on rails開發從頭來(windows)(十六)-登入

現在我們的購物車程式為兩種使用者提供了服務,一類是普通使用者,一類是管理員。兩類使用者分別有不同的功能。上次我們又實現了添加使用者的功能,這次我們來實現登入的功能。1.給login_controller添加login方法。上次使用rails的命令列產生的login_controller中已經包含了login方法,下面修改該方法的內容:def login  if request.get?  session[:user_id] = nil  @user =

Ruby on rails開發從頭來(windows)(十四)-送貨處理

在上次的內容裡,我們完成了訂單的編寫。這次我們類比一個簡單的送貨頁面,給這個購物車的管理員用。1.首先,我們修改order表,給他添加一個欄位shipped_at:create table orders (id int not null auto_increment,name varchar(100) not null,email varchar(255) not null,address text not null,pay_type char(10) not null,shipped_at

Ruby on rails開發從頭來(windows)(十三)-訂單(Order)

在上次的內容裡,我們編寫了CHECKOUT的處理。這次我們將顯示購物車和訂單放在一個頁面上表示,這樣使用者在下訂單的時候就可以很方便地看到自己的購物情況。1.修改checkout.rhtml檔案,只要添加一句代碼:<%= error_messages_for("order") %><%= render_component(:action => "display_cart") %> ――這句 <%= stylesheet_

總頁數: 85 1 .... 55 56 57 58 59 .... 85 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.