Я получил это работает. Я использовал ruby-1.9.1-p378 с rvm. Я удалил это. Теперь я использую систему ruby-1.8.7-p174, поставляемую с установочным DVD SnowLeopard. Но я все еще получал ошибку с методом to_json, за исключением того, что на этот раз он говорил, уровень стека слишком глубоко Я сделал:
require 'json/pure'
вместо
require 'json'
Затем я изменил код, чтобы он выглядел примерно так:
http://github.com/banker/mongulator/blob/master/mongulator.rb#L53
Вот соответствующая часть кода:
cursor = persons.find(
{"loc" => {"$near" => [params[:lat].to_f, params[:lng].to_f]}},
{:limit => 20})
content_type "application/json"
JSON.pretty_generate(cursor.to_a)
Полный файл находится здесь:
http://github.com/acani/acani-sinatra/blob/master/acani.rb
И это сработало, даже с таким красивым json, как api-график на facebook. Чтобы вернуть JSON все в одну строку, просто сделайте что-то вроде:
cursor.to_a.to_json