2012-08-15 70 views
0

好吧,這似乎是一個真正的高貴的問題。簡單的單個紅寶石文件的網絡應用程序

我目前有一個簡單的html和javascript新聞閱讀器運行在我的MAMP服務器上。你可以在Github上看到它。除了抓取和緩存由一個非常小的php文件完成的提要之外,一切都運行客戶端。我有一個ajax調用,它通過傳遞一些參數來從php腳本請求新聞提要。

我已經很晚才學習Ruby,並開始在Ruby中重做這個簡單的PHP腳本。我遇到的問題是,我不能通過像我會用php這樣的參數通過ajax請求ruby腳本。

那麼最簡單的步驟是什麼才能做到這一點?

我覺得自己像一個完整的框架,即使像Sinatra一樣小,也會過度殺傷。所以任何幫助將不勝感激。我完全想到這個錯誤的方式嗎?謝謝。

更新

我去到底Ruby的CGI方式。這就是我所做的。

在我有我的腳本的文件夾中,我添加了一個.htaccess文件,以使apache執行.rb文件。

AddHandler cgi-script .rb 
Options +ExecCGI 

然後我開始像我這樣的紅寶石文件。

#!/usr/bin/ruby 
require 'cgi' 

cgi = CGI.new('html4') 

cgi.out { 
    cgi.html { 
     "Hello World" #started content here 
    } 

} 

然後我確定該文件是可執行的。 chmod 774

感謝您的幫助。

回答

0

這裏最簡單的解決方案是Ruby CGI

+0

我認爲使用Rack比純Ruby CGI更容易。用Ruby CGI設置服務器很容易嗎? – retro 2012-08-15 12:24:04

+0

您是否已經配置了網絡服務器?我猜你自從你有PHP運行(也許與Apache和mod_php)?如果是這樣的話,設置它來處理Ruby CGI很容易。 – Mark 2012-08-15 13:55:52

+1

謝謝你們,這是我最後的方式。雖然缺少一部分難題,但增加了.htaccess規則來識別rb文件並使文件可執行。 – mattl 2012-08-16 06:35:27

0

如果您認爲sinatra對您來說仍然很大,請深入並嘗試編寫純粹的Rack應用程序。

例如見這個最小應用程序 - https://github.com/stevenwilkin/ip.stevenwilkin.com

機架只需要3個元素陣列這樣

[200   , {"Content-Type" => "text/plain"}, [env["REMOTE_ADDR"]]] 
[return status , headers hash     , body string   ] 

軌,屈和大量的另一紅寶石web框架使用內部機架。

如果您需要很好的格式化請求參數,例如您可以使用http://rack.rubyforge.org/doc/classes/Rack/Request.html

+0

那麼你必須在它自己的服務器上運行它,就像你指向的應用程序一樣? – mattl 2012-08-15 13:51:28

+0

您可以使用任何支持的應用程序服務器機架。 https://github.com/rack/rack#supported-web-servers – retro 2012-08-15 15:36:28