Синатра неопределенный метод «перемотка» - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь опубликовать некоторые данные из моего приложения для Android в Sinatra на моем компьютере. Синатра слушает с:

post '/upload' do
    puts "*****************************************"
    puts "!!!!!!!! #{params.inspect}"
end

И терпит неудачу с:

ERROR NoMethodError: undefined method `rewind' for "ho":String
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:576:in`block in parse_multipart'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:499:in`loop'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:499:in`parse_multipart'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/request.rb:270:in `parse_multipart'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/request.rb:148:in `POST'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/methodoverride.rb:15:in `call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1272:in `block in call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1303:in `synchronize'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1272:in `call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/content_length.rb:13:in `call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52:in `service'
        D:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
        D:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
        D:/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

Параметры сообщения: {"hey" => "ho"}. Я распечатал переменную body внутри rack / utils.rb и получил "ho", поэтому я полагаю, что Синатра задыхается. Я не могу понять, почему, хотя. Публикация на другом сервере прошла успешно. Есть идеи, что я делаю не так?

Я могу опубликовать код Java, но, как обычно для Java, это очень многословно. Я также думаю, что это не проблема, так как он успешно отправляет сообщения на удаленный сервер, как я уже говорил.

1 Ответ

0 голосов
/ 04 июля 2011
post '/upload' do
    puts "*****************************************"
    puts "!!!!!!!! #{params.inspect}"
end

Sinatra всегда будет пытаться использовать последнее возвращаемое значение в качестве данных для анализа перед отправкой в ​​виде http-данных.Здесь ваша последняя инструкция - puts "!!!!!!!! #{params.inspect}", которая возвращает nil.

post '/upload' do
    puts "*****************************************"
    puts "!!!!!!!! #{params.inspect}"
    "Information received"
end

Здесь у Синатры есть какая-то строка для использования, и он счастлив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...