2012-01-13 10 views
1

내가 가진에 다음 Gemfile에 대답하지시나는 아주 기본적인 GET 요청

require 'sinatra' 
require 'json' 

get '/ze/api/session.json' do 
    content_type :json 
    { :name => 'name' } 
end 

그리고이 같은 기본적인 요구를 할 때 :

curl localhost:4567/ze/api/session.json 

나는이 얻을 :

[2012-01-13 17:30:36] ERROR TypeError: can't convert Array into String 
/Users/mauricio/.rvm/gems/[email protected]/gems/rack-1.4.0/lib/rack/handler/webrick.rb:72:in `block in service' 
/Users/mauricio/.rvm/gems/[email protected]/gems/rack-1.4.0/lib/rack/handler/webrick.rb:71:in `each' 
/Users/mauricio/.rvm/gems/[email protected]/gems/rack-1.4.0/lib/rack/handler/webrick.rb:71:in `service' 
/Users/mauricio/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
/Users/mauricio/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
/Users/mauricio/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 
localhost - - [13/Jan/2012:17:30:36 BRT] "GET /ze/api/session.json HTTP/1.1" 500 311 

저는 Lion Mac에서 RVM과 함께 Ruby 1.9.2를 사용하고 있습니다.

+0

도움이되지 않는 주석을하지만 코드 솔리드, 우분투에서 잘 작동합니다. 10.10'ruby app.rb'를 실행하여 앱을 시작하고 있습니까? – Gazler

+0

@ Gazler webrick 처리기에서 오류가 발생했습니다. 'set : server, webrick''을 추가 해보면 재현 할 수 있어야합니다. 다른 핸들러 (얇은?)가 여기에 더 용서하고있는 것처럼 보입니다. – matt

답변

4

경로에서 해시를 반환하려고하지만 해시가 something you can return here이 아닙니다.

만하면 다음 반환 할 수 있습니다 JSON 문자열로 해시 (당신이 JSON을 요구했지만, 아직 사용하지 않는) 설정하는 .to_json를 사용 : 아마도

get '/ze/api/session.json' do 
    content_type :json 
    { :name => 'name' }.to_json 
end 
+0

그게 고마워, 내가 따라 한 튜토리얼은 to_json 호출을 언급하지 않았다. –

관련 문제