2011-05-12 45 views
3

我正在使用WEBrick在端口2000上啓動本地服務器並嘗試使用ERB執行Ruby。 (我在我的OS X框中安裝了Ruby 1.9.2)。它似乎沒有工作。如何在本地WebServer上執行簡單的Ruby

例如,我創建了一個ERB文件(tryErb.erb)是這樣的:我以前chmod a=rwx tryErb.erb來使文件可執行

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>try erb</title> 
</head> 
<body> 
    <p> % 99.downto(96) do |number| 
    <%= number %> bottles of beer… 
    % end 
    </p> 
</body> 
</html> 

,但如果我嘗試訪問正確的URL(HTTP:// localhost:2000/tryErb.erb),似乎沒有任何工作。瀏覽器不會去任何地方;它只是停留在根的索引上。 在日誌中的bash所示:

本地主機 - - [12 /月/ 2011:10:12:05 CEST] 「GET /tryErb.erb HTTP/1.1」 200 - > /tryErb.erb

任何想法?

+0

得到了同樣的問題。不能得到它來解釋紅寶石線 – GnrlBzik 2011-05-12 15:34:57

+0

實際上看看這個帖子:http://stackoverflow.com/questions/2752906/how-to-access-html-request-parameters-for-a-rhtml-page-served- by-webrick – GnrlBzik 2011-05-12 15:42:54

回答

4

好吧,想通了這一個,不完全雖然。你需要指定MIME類型:MimeTypes => {'rhtml'=>'text/html'},我從http://www.ruby-forum.com/topic/96436複製這個,識別rhtml並運行你在<%...%>中的任何紅寶石代碼。

require 'webrick' 

include WEBrick 

def start_webrick(config = {}) 
    # always listen on port 3000 
    config.update(:Port => 3000) 
    config.update(:MimeTypes => {'rhtml' => 'text/html'}) 
    server = HTTPServer.new(config) 
    yield server if block_given? 
    ['INT', 'TERM'].each {|signal| 
     trap(signal) {server.shutdown} 
    } 
    server.start 
end 

start_webrick(:DocumentRoot => Dir::pwd) 
+0

謝謝GnrlBzik!它使用.rhtml ...沒有辦法使用.erb! – 2011-05-12 18:22:33

+0

歡迎你,是的,我並沒有在工作,但到目前爲止,我不需要任何超越rhtml的東西,只是爲了測試瀏覽器中的東西,我所做的其他事情都是在rails中完成的。你爲什麼想要第一個地方的erb?你是否認爲這是需要命名的文件?我在問,因爲我也是這樣認爲的。 – GnrlBzik 2011-05-12 18:33:17

相關問題