2013-04-07 134 views
1

我正在第一次鑽研Ruby和Sinatra,並穿過Alan Harris和Konstatin Haase的「Sinatra Up and Running」。在對我的Ruby版本進行分類(使用RVM)之後,創建擴展時,我沒有遇到第3章中的任何問題。代碼如下(post_get.rb):嘗試創建第一個Sinatra擴展時出現錯誤

require 'sinatra/base' 

module Sinatra 
    module PostGet 
    def post_get (route, &block) 
     get (route, &block) 
     post (route, &block) 
    end 
    end 

    register PostGet 
end 

與(post_get_test.rb)用於:

require 'sinatra' 
require './post_get' 

post_get '/' do 
     "Hello #{params[:names]}" 
end 

但是,每當我跑 「紅寶石post_get_test.rb」 我得到以下運行時錯誤立即:

[email protected]:~/sinatra$ ruby post_get_test.rb 
/home/user/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': /home/user/sinatra/post_get.rb:6: syntax error, unexpected ',', expecting ')' (SyntaxError) 
     get (route, &block) 
       ^
/home/user/sinatra/post_get.rb:7: syntax error, unexpected ',', expecting ')' 
     post (route, &block) 
       ^
/home/user/sinatra/post_get.rb:13: syntax error, unexpected $end, expecting keyword_end 
    from /home/user/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from post_get_test.rb:2:in `<main>' 

我不太清楚,即使從哪裏開始整理出來。有人能指出我正確的方向來解決這個問題嗎?

謝謝。

回答

2

您發佈的代碼是正確的,但與錯誤消息中報告的代碼不同。

在錯誤消息導致錯誤看起來就像這樣的線:

get (route, &block) 

post (route, &block) 

注意getpost和開口(之間的空間。在Ruby中,當調用方法並使用括號時,方法名稱和左括號之間不得有空格(如問題中的代碼塊)。

請確保在您的實際代碼中此處沒有空格,您應該沒問題。

發生了什麼事是紅寶石試圖解析什麼是包含在括號,並將結果傳遞作爲參數的方法,而不是利用他們的內容作爲參數列表。

+0

在第一個代碼塊中複製時我有點sl but,但我已經編輯它以顯示正確的空白區域。我已經改變了一點空白空間,但是我所做的一切似乎都不會影響我收到的錯誤消息。 – rsgoheen 2013-04-08 07:03:49

+0

就是這樣。我沒有意識到Ruby對這種空白非常敏感。謝謝。 – rsgoheen 2013-04-08 17:10:52

相關問題