2013-11-04 111 views
4

我遇到了這個語法錯誤與下面的代碼,我不明白爲什麼紅寶石抱怨它。語法錯誤,意外的':',期待')'

def user_list 
    server = Lumberg::Whm::Server.new(
    host: "localhost", 
    hash: IO.read("/root/.accesshash") 
) 

results = server.account.list 
accounts = result[:params][:acct].map {|a| a["user"] } 

end 
end 

語法錯誤如下:

# bundle exec bin/userscan 
bin/userscan:3:in `require': /usr/src/userscan/lib/userscan.rb:131: syntax error, unexpected ':', expecting ')' (SyntaxError) 
    host: "localhost", 
    ^
/usr/src/userscan/lib/userscan.rb:131: syntax error, unexpected ',', expecting kEND 
/usr/src/userscan/lib/userscan.rb:133: syntax error, unexpected ')', expecting kEND 
    from bin/userscan:3 

據我所知,它的抱怨-should-的部分是好的。顯然,分號實際上應該在那裏,括號應該包含整個兩行。我已經玩了一下,但我只是繼續變得更糟,而不是更好。

任何協助我搞亂了這裏將不勝感激。

回答

5

語法host: ".."是ruby 1.9的新增功能。如果您使用的是Ruby 1.8,則必須使用舊語法:

server = Lumberg::Whm::Server.new(
    :host => "localhost", 
    :hash => IO.read("/root/.accesshash")) 
+0

就是這樣。我在一個紅寶石1.8服務器上,並沒有意識到1.8和1.9之間的區別。感謝你的協助。 – Striketh

+0

我按照'ruby --version'運行1.9.3,但我仍然看到相同的語法錯誤,必須使用舊的語法來修復它。這是有原因的嗎? –

相關問題