2013-11-04 87 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,但我仍然看到相同的语法错误,必须使用旧的语法来修复它。这是有原因的吗? –

相关问题