2012-08-29 72 views
0

有誰知道是什麼原因導致了這個錯誤?我正在嘗試製作基本的機架應用程序。Instance_eval塊未提供?

App.rb =>

class Cherry 
    class << self 
     def app &block 
      Cherry::Application.new &block 
     end 
    end 

    class Application 
     def initialize &block 
      instance_eval &block 
     end 

     def print_start_message 
      puts "Starting server" 
     end 

     def call env 
      [200, {"Content-type" => "text/plain"}, "Hello World"] 
     end 
    end 
end 

Config.ru =>

require 'app' 

    run Cherry.app do 
     print_start_message 
    end 

編輯:顯然,我忘了,包括錯誤woops:

/local/www/cherry/lib/app.rb:12:in 'instance_eval': block not supplied (ArgumentError)

+0

這是[紅寶石塊語法錯誤(http://StackOverflow.Com/q/6854283/),[代碼塊中傳遞重複,以'each'作品用括號括起來,但不用'do' -'end'(ruby)](http://StackOverflow.Com/q/6718340/),[塊定義 - 大括號和''''''end'之間的區別?](http ://StackOverflow.Com/q/6179442/),[沒有'do''end的Ruby多行塊]](http://StackOverflow.Com/q/3680097/),[使用'do'塊vs括號'{ } [](http://StackOverflow.Com/q/2122380/),[Ruby中這些塊編碼風格的區別或價值是什麼?](http://StackOverflow.Com/q/533008/),... –

+0

... [Ruby block and unparenthesized arguments](http://StackOverflow.Com/q/420147/),[爲什麼'do' /'end'和'{}'總是等價的?](ht tp://StackOverflow.Com/q/7487664/),[Ruby塊中的Wierd不完美](http://StackOverflow.Com/q/7620804/)和[將塊傳入方法 - Ruby](http:///StackOverflow.Com/q/10909496/)。 –

回答

0

定了!顯然,你需要周圍的Cherry.app do..塊括號:

run(Cherry.app do 
    "Hello World" 
end)