Time of Update: 2017-02-27
一、前言IronRuby是.NET下的一個Ruby實現,此外還有Ruby.net這一開源項目,二者的主要區別是IronRuby利用了Microsoft最新推出的DLR,而Ruby.net則是完全利用原有的CLR實現的。IronRuby入門可參閱http://msdn.microsoft.com/zh-cn/magazine/dd434651.aspx。關於IronRuby的一些基本操作,本文不會涉及,本文僅僅是IronRuby對Ruby操作的一個具體執行個體。其中包括對所有Ruby類的類名,方法
Time of Update: 2017-02-27
ActiveRecord中的一個對象相當於資料庫中表的一行,對象的屬性對應於表的列,也許你會注意到我們的Order類沒有提及關於orders表的任何東西,這是因為ActiveRecord在運行時來確定這些對應關係,Active Record將資料庫中的模式反應到類中。我們的orders表可能使用下面的sql來建立:create table orders (id int not null auto_increment,name varchar(100) not null,email
Time of Update: 2017-02-27
Rails所針對的是Web項目,必須要考慮大訪問量的情況,所以我們來看看在Rails怎樣進行效能測試。1.要進行效能測試,我們首先要模仿大量的資料,我們現在知道,在test/fixtures/目錄下的yml檔案裡添加我們的測試資料,在運行測試時,這些資料會被載入到資料庫。但是一條兩條資料還可以,資料多的情況下,一條一條在yml檔案裡寫可不行,所以,我們先看看怎樣在yml檔案裡造大量的資料。在fixtrue目錄下建立一個子目錄performance,在裡面建立order.yml檔案,把內容改成下面
Time of Update: 2017-02-27
前面我們測試了model和controller,學習了一些常用的測試方法,現在我們來深入學習幾個有關測試的主題。第一個是使用Mock對象。在很多時候,我們的程式和實際的環境有依存關係,比如現在的購物車,在匯款,結賬的時候要接入網路上的銀行帳號,這樣就造成了我們測試的時候必須要有internet環境。比如,我們在model目錄裡建立了一個payment_gateway.rb來處理網路銀行相關的操作,我們在store_control.rb的save_order方法裡這樣寫:gateway =
Time of Update: 2017-02-27
到此,我們這個購物車的實現就完成了,下面我們可以利用ruby裡的Rdoc來給我們的程式產生文檔,和dotnet,java,python等一樣,Rdoc可以把我們代碼裡類和方法聲明前面的注釋提取出來產生文檔。對於我們的depot程式,我們在rails的命令列裡運行rake appdoc命令,如圖:完成以後,可以在depot\doc目錄下看到剛才產生的文檔,開啟index.html,看到下面的內容:
Time of Update: 2017-02-27
上次我們實現了登入的頁面,現在我們區別管理員和普通使用者,根據使用者的不同身份,轉入到不同的頁面在rails中提供了filter來截獲訪問某個action的請求,可以用filter在action被調用前或調用後添加我們自己的處理。在這裡,我們在admin的controller中的action被調用前添加攔截器。如果是管理員,就進入管理頁面,如果是普通使用者,就進入登入頁面。1.在application.rb中給ApplicationController類添加authorize方法,代碼如下:de
Time of Update: 2017-02-27
現在我們的購物車程式為兩種使用者提供了服務,一類是普通使用者,一類是管理員。兩類使用者分別有不同的功能。上次我們又實現了添加使用者的功能,這次我們來實現登入的功能。1.給login_controller添加login方法。上次使用rails的命令列產生的login_controller中已經包含了login方法,下面修改該方法的內容:def login if request.get? session[:user_id] = nil @user =
Time of Update: 2017-02-27
在上次的內容裡,我們完成了訂單的編寫。這次我們類比一個簡單的送貨頁面,給這個購物車的管理員用。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
Time of Update: 2017-02-27
在上次的內容裡,我們編寫了CHECKOUT的處理。這次我們將顯示購物車和訂單放在一個頁面上表示,這樣使用者在下訂單的時候就可以很方便地看到自己的購物情況。1.修改checkout.rhtml檔案,只要添加一句代碼:<%= error_messages_for("order") %><%= render_component(:action => "display_cart") %> ――這句 <%= stylesheet_
Time of Update: 2017-02-27
在上次的內容裡,我們建立了訂單的Model,和表示頁面,這次繼續編寫CHECKOUT的處理。1.在checkout.rhtml的頁面上,有一個CHECKOUT按鈕,上次還沒有給它編寫處理代碼,現在在store_controller中添加save_order方法,代碼如下:def save_order@cart = find_cart@order = Order.new(params[:order])@order.line_items <<@cart.itemsif
Time of Update: 2017-02-27
第三部分,許可權設計和acl外掛程式的使用。感覺這樣的許可權設計也是很主流的。下面,再看看EOL.ORG在許可權設計方面是如何?的,或者使用了什麼外掛程式。使用者角色設計和許可權管理EOL.org的許可權部分採用acl_system
Time of Update: 2017-02-27
本文將著重介紹如何在不同的作業系統下搭建RoR開發環境,同時,在最後會詳細介紹如何在Windows作業系統下安裝並配置MySQL資料庫。Windows系統下開發環境的搭建本文中將介紹如何在Windows作業系統下搭建RoR開發環境。1.遠程安裝a、步驟1:下載並安裝Ruby一鍵安裝包下載最新的Ruby 1.8.4-16一鍵安裝包,其下載地址為http://rubyforge.org/ projects/rubyinstaller/。下載後運行該安裝檔案,顯示介面如圖2-1所示。圖1
Time of Update: 2017-02-27
數組和雜湊表Ruby的數組和雜湊表是索引集合。兩都都是儲存對象集合并能通過鍵來讀取。數組的鍵是數字,但是 雜湊表則支援對象作為鍵。它們都是隨著新元素的加入要增長。在訪問元素方面,數組效率比較高,但哈 希表更加的靈活。無論是數組還是雜湊表,都能儲存不同類型的對象;你可以使用一個數組儲存數字,字 符串和浮點數,就像你等會將會看到的那樣。你可以使用數組文本來建立和初始化一個新的數組——一個由中括弧包圍的元素集合。對於一個數組
Time of Update: 2017-02-27
Ruby的標準類型:A.數字class Test 3.times { print "X " } 1.upto(5) { |i| print i, " " } 99.downto(95) { |i| print i, " " } 50.step(80,5) { |i| print i, " " } a = "23" b = "34" puts "
Time of Update: 2017-02-27
首先,在ruby1.8中類變數是所有子類和父類共用的,可以看下面的代碼:class IntelligentLife @@home_planet = nil def self.home_planet @@home_planet end def self.home_planet=(x)
Time of Update: 2017-02-27
用ruby寫的掃描當前網頁所有url的指令碼,對於學習ruby的朋友是個不錯的執行個體#scanweb.rb#用法ruby scanweb.rb www.jb51.net 將當前結果儲存在c:\1.txtrequire 'net/http'filename= File.new('c:\1.txt',"w+")if $*[0]==nilputs "hehe,沒有輸入網址"elseh = Net::HTTP.new($*[0], 80)resp, data =
Time of Update: 2017-02-27
一、方法Ruby 的方法定義允許為參數設定預設值,不過在帶有預設值的參數後面不能出現不帶有預設值的參數(允許 * 和 &),也就是說下面的方法定義是不被允許的,解釋時會出現 parse error。 還有一點與 C# 不同的是,方法定義不能出現在方法調用的後面。# parse errordef Display(args1="proshea", args2)end# 允許def Display(args1="proshea", *args2)end#
Time of Update: 2017-02-27
基於目前學習的Ruby知識並有Ruby標準庫的協助,你應該能夠構建一個真實世界的應用程式了。在開始時,我提供了一個應用程式範例,這個程式中使用了大量的我們已經討論過的Ruby特徵。這個程式讀取一個簡單的文字檔以得到一組股票符號和一個人所擁有的股份數並且在一個普通金融網站(finance.yahoo.com)檢索股票價格。在檢索股票價格以後,它計算這個人的portfolio(股份數×每份股票的價格)。不只是展示簡單的Ruby文法和類/對象結構,這個簡單應用程式還使用了Ruby內建的Ar
Time of Update: 2017-02-27
我們都知道在編譯Ruby的時候你需要使用configure的 --disable-pthread參數。沒錯,在configure --disable-pthread 可以讓你得到大約 30% 效能提高。但是,這是為什麼呢?所有的這一些我們需要使用 strace
Time of Update: 2017-02-27
1 得到所定義的實體的列表ruby的反射api能夠使我們在運行時檢測類和對象。因此我們下面將會介紹Module, Class, 和Object 中的定義的一些方法。Module模組有一個constants 的方法,它將會返回系統中所有的常量名,包括類名和模組名。nesting 方法則是返回當前調用點上的嵌套的模組的列表.Ruby代碼list = Math.constants # ["E", "PI"] Module#ancestors