2011-06-18 43 views
21

對我來說,當我搜索某些相關的ruby時,所有與rails相關的ruby都彈出了結果。所以沒有人使用原始的紅寶石了?如何在任何web服務器上運行簡單的ruby腳本(Apache或Mongrel或其他任何東西)

不過,我是新來的紅寶石。今天早上我只是試圖在web服務器上運行一個簡單的hello world ruby​​腳本,首先是apache 2,然後嘗試了混血兒。但不幸的是我失敗了。我儘可能使用Google搜索,但結果只顯示關於軌道上的紅寶石。那麼真的有什麼辦法可以在任何Web服務器上運行ruby腳本,或者即使我只想做一個hello world應用程序,我也必須使用ror。

+3

聽起來你是從PHP或類似來到紅寶石。與Ruby的區別不是那麼大,我們只是有很多可用的框架來輸出原始的html代碼,所以我們從來沒有寫過像puts「」這樣的東西。 – Schmurfy

+1

看看Ruby的[CGI](http://rubydoc.info/stdlib/cgi/1.9.2/frames)庫。它提供了訪問參數,cookie等的幫助器。一旦瞭解了CGI規範的工作原理,創建CGI腳本即使沒有庫也很簡單。 –

+0

你可以發佈你的簡單的「你好世界」示例腳本?這將有助於瞭解你正在嘗試做什麼。它是一種呈現應該在瀏覽器中顯示的HTML的腳本嗎?或者可以從命令行運行的腳本? – Andrew

回答

9

Sinatra可能是您在沒有Rails的情況下從Web服務器運行Ruby腳本的最佳選擇。

到這裏看看:http://www.sinatrarb.com

從西納特拉文檔:

require 'sinatra' 

get '/hi' do 
    "Hello World!" 
end 

然後,只需運行:

$ gem install sinatra 
$ ruby -rubygems hi.rb 
== Sinatra has taken the stage ... 
>> Listening on 0.0.0.0:4567 

剛去http://0.0.0.0:4567在瀏覽器中,你應該找到你「Hello World」

...

要添加到這一點,因爲你還問在Apache或其他Web服務器上運行,你可能想看看這些教程有關部署新的基於西納特拉的應用程序到Apache或Nginx的:

阿帕奇: http://www.pastbedti.me/2009/11/deploying-a-sinatra-app-with-apache-and-phusion-passenger-a-k-a-mod_rack/http://www.giantflyingsaucer.com/blog/?p=1716

Nginx的:http://tommy.chheng.com/2009/06/09/deploying-a-sinatra-app-on-nginx-passenger-with-capistrano-and-git/

注意兩個教程覆蓋通孔客運運行西納特拉 - ,這我有好運氣與(http://www.modrails.com/不要被「modrails」的名字:)推遲)在Apache和Nginx下部署應用程序。

7

您可以配置Apache(例如)以CGI腳本運行.rb文件,然後在腳本頂部添加一個shebang行(#!/path/to/your/ruby#!/usr/bin/env ruby)。然而,這不是最優的,因爲它會爲每個請求啓動一個新的解釋器。

+1

這是傳統的CGI,適合偶爾使用。 Ruby的[CGI](http://rubydoc.info/stdlib/cgi/1.9.2/frames)庫旨在爲此目的提供幫助。 –

4

運行紅寶石網站的比較常用的方法是乘客:http://www.modrails.com/ 這是不安裝真的很難和你使用,這裏是Apache他DOC:http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_a_ruby_on_rails_application

您的應用程序必須是有效的機架應用,這裏是一個最小的Hello World(假設/應用程序是應用程序的根文件夾):

/app/config.ru

require 'rack' 
require 'app' 
run(app) 

/app/app.rb

app = proc do |env| 
    [ 
    # http status code 
    200, 
    # headers 
    {'Content-Type' => 'text/html'}, 
    # html body 
    ["<head><title>Test Page</title></head><body>Hello World !</body>"] 
    ] 
end 

保存上述文件並創建子文件夾/應用/公衆和你的Apache配置使用/應用/公衆的DocumentRoot(由乘客來檢測的Ruby/Rails /西納特拉需要申請)。

這可能看起來很可怕,但這是用於生產部署,在開發過程中,您真的不想搞亂真正的服務器。

所有你需要運行上面我給config.ru文件是:

$ gem install rack 
$ rackup config.ru 

或者,如果你想成爲更接近你的生產系統:

$ gem install passenger 
$ cd /app 
$ passenger start 

這將安裝你的帶乘客的nginx服務器並運行您的應用程序。

在大多數情況下,您絕對不會直接使用機架,而是在rails,sinatra或其他框架上使用ruby來爲您生成html(它們都使用現在的機架以提供與web服務器通用的api)。

+3

它的設置太高了,特別是像我們這樣的新手。我仍然不知道如何啓動和運行。 –

+1

我運行「乘客啓動」,並閱讀「下載Nginx ...」後,我幾乎生氣了我的褲子。現在我有webrack,nginx和Apache。尼斯。 :D –

1

運行此。

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start" 
-3
#!/usr/bin/env ruby //shebang line to indicate path to ruby. 
require 'cgi'  //cgi file to create a simple cgi object. 
cgi = CGI.new  //instantiating a cgi object. 
puts cgi.header //thats telling the server about the type(html). 
puts "hello"  // thats the output on the browser. 
相關問題