2011-03-22 46 views
2

我使用Sinatra模塊化風格,我不知道會發生什麼壞事。我檢索算法谷歌,但沒有發現任何Sinatra,模塊化風格。我做錯了什麼?

require 'sinatra/base' 

class App < Sinatra::Base 

    get '/' do 
    haml '%h1 Test' 
    end 

end 

run App 

而且一看test.rb:12:<main>': undefined method主跑」:對象(NoMethodError) 怎麼回事?

+0

'App.run!'而不是'run app'? – matt 2011-03-22 19:57:43

+0

沒有幫助跑! – maxfry 2011-03-22 19:58:48

+0

== Sinatra/1.2.1採用4567進行開發,從薄型備份開始 >>瘦Web服務器(v1.2.8代號黑鍵) >>最大連接數設置爲1024 >>在0.0.0.0上進行監聽:4567,CTRL + C停止 /home/maxfry/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in'start_tcp_server':沒有受體(RuntimeError) \t從/home/maxfry/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in – maxfry 2011-03-22 20:00:41

回答

10

你是否通過ruby -rubygems hi.rb運行它(假設這段代碼是在hi.rb中)。如果是這樣,你不需要運行應用程序。除非你通過在Sinatra上構建的另一個框架來運行它。

可能還需要包括HAML ...

你有config.ru:

# config.ru 
require 'my_app' 
run MyApp 

和my_app.rb:

# my_app.rb 
require 'sinatra/base' 
require 'haml' 

class MyApp < Sinatra::Base 

get('/') { haml '%h1 Test' } 

    # start the server if ruby file executed directly 
    run! if app_file == $0 
end 

然後將文件夾在其中運行my_app.rb啓動本地主機上的應用程序:4657:

rackup -p 4567 
+0

是的,在我的例子中,我忘了需要'haml'。但是這並不奏效。 – maxfry 2011-03-22 19:53:23

+0

好的,做了一些編輯。我讀了你原來的帖子不對。這應該讓你去。如果你想呈現頁面而不是從my_app.rb中的代碼 - 你可以做「haml:pagename」,它會呈現./views/pagename.haml – Jared 2011-03-22 20:05:21

+0

之後,我有一個新問題:config.ru:5:in '塊在

':未初始化的常量Rack :: Builder :: App(NameError) – maxfry 2011-03-22 20:06:45

2

關於上述的錯誤如下顯示輸入註釋:

`start_tcp_server': no acceptor (RuntimeError) 

這似乎當你試圖綁定到一個已經綁定端口。嘗試不同的端口號碼應該解決。

+0

和我一樣,這一定是答案 – pahnin 2012-07-10 18:31:40