2015-11-13 49 views
0

我想用Ruby來設置主頁。我目前有這樣的代碼:紅寶石網頁只顯示源代碼

#!/usr/bin/ruby -w 

puts "Hello, Ruby!"; 

它被保存爲testing.rb。我能夠將文件託管到我學校的公共服務器上,因此我可以在我學校的目錄中找到它,例如school.ca/myname/public_html/testing.rb

這適用於以前的HTML,CSS,Perl,ASP和PHP程序。現在我正在嘗試設置Ruby,並且遇到了問題。它顯示在URL上的所有內容都是我上面的源代碼。

我改變了文件的權限爲644

+2

[這是相關的 - 紅寶石是不是像PHP中,你可以放入它,一切都神奇「工程」。](http://stackoverflow.com/q/5664553/1079354) – Makoto

+0

@Makoto,謝謝爲鏈接,真的很有幫助! – GreatShark

+0

*它顯示在URL上的所有內容都是我上面*的源代碼。嘗試給你的ruby文件一個'.cgi'的擴展名。 – 7stud

回答

0

Ruby是不是瀏覽器能真正對自己的解釋沒有幫助的語言 - 你需要可以建立一個服務器,並把它打印出自己的HTML網頁,或者使用這樣的框架(例如Sinatra,Rails)。

+3

瀏覽器也不解釋PHP。 –

+2

或Perl。或ASP。 – Makoto

+0

這是事實 - 這些語言由服務器預先處理成瀏覽器可以理解的格式。 Ruby不是沒有一些設置。 – MkNiz

1

您需要一個Ruby認知的Web服務器。有一種解決方案可以使運行Ruby幾乎與運行PHP一樣簡單:Phusion Passenger。它可以作爲Apache或Nginx插件安裝,這是兩個非常常見的Web服務器。但是,爲了安裝這些插件,您通常需要root訪問您的服務器,我假設您沒有。

完全不同的解決方案是使用雲服務提供商,如Heroku。只要您的應用沒有24小時運行,他們就會提供免費計劃。爲了使用這個服務,你必須熟悉git,但是這很簡單,就像通過git上傳你的代碼來運行你的應用程序一樣簡單。

至於構建你的第一個Ruby Web應用程序,你應該檢查出Sinatra。一個簡單的你好世界應用程序看起來如下:

require "sinatra" 

get "/" do 
    "Hello World!" 
end 

Sinatra是一個紅寶石寶石。您可以使用一個名爲gem工具的命令行安裝這些庫:

gem install sinatra 
+0

我想我會用Sinatra方法拍攝一張照片。但是,我有點失落,我在哪裏放置「需要sinatra」代碼? – GreatShark

+0

Sinatra應用程序可以存在於單個文件中。所以你只是把它放在你的文件的頂部。上述示例中的所有五行都進入相同的文件。 – t6d

+0

@GreatShark,'require'sinatra''不會工作,除非你在學校的服務器上安裝sinatra gem,我猜他們不會允許你這樣做。 – 7stud

1

我改變了文件的權限爲644。

~/ruby_programs$ chmod 644 cgi.cgi 
~/ruby_programs$ ls -al cgi.cgi 
-rw-r--r-- 1 7stud staff 102 Nov 13 15:50 cgi.cgi 

文件權限顯示如下:

  1. 第一個字符是-d-指文件,d意味着目錄

  2. 然後有三組三個字符表示對owner,groupother的權限:

r = readable 
w = writable 
x = executable 

644產生的權限:

rw-r--r-- 

這等同於:

owner: rw- (read, write) 
group: r-- (read only) 
other: r-- (read only) 

你不必知道誰是owner ,或者誰是的一部分,或者屬於other類別的用戶,以確認沒有人有權執行該文件。你需要這樣做:

~/ruby_programs$ chmod a+x cgi.cgi #=>all + x => give execute permissions to everyone 
~/ruby_programs$ ls -al cgi.cgi 
-rwxr-xr-x 1 7stud staff 102 Nov 13 15:50 cgi.cgi 

現在的權限是:

owner: rwx 
group: r-x 
other: r-x 

這意味着,現在任何人都可以執行該文件。

它在URL上顯示的所有內容都是我上面的源代碼。

如果您還沒有這樣做,請嘗試給您的紅寶石文件.cgi擴展名。然後使用此代碼:

#!/usr/bin/env ruby 

puts "Content-type: text/html\n\n" 
puts "<html><body>Hello, Ruby!</body></html>" 

您確定在您學校的服務器上安裝了ruby嗎?