I am trying to return a file during an async sinatra request, something like this:
aget "/test" do if(File.exists?("test.tar")) send_file("test.tar", :filename => "test.tar", :type => "application/octet-stream") return end EM.defer(proc{ # create test.tar }, proc{ |r| send_file("test.tar", :filename => "test.tar", :type => "application/octet-stream") })
However, it seems that when I do this, I get an error message:
wrong number of arguments (0 for 1) file: file.rb location: call line: 29
trace:
/var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/file.rb in call def call(env) /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in block in body response.body = Array(async_handle_exception {response.body.call}) /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in async_handle_exception yield /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in body response.body = Array(async_handle_exception {response.body.call}) /var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb in invoke body(res.pop) /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in block in async_catch_execute invoke { halt h } /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in async_handle_exception yield /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in async_catch_execute async_handle_exception do /var/lib/gems/1.9.1/gems/async_sinatra-1.0.0/lib/sinatra/async.rb in block in async_schedule native_async_schedule { async_catch_execute(&b) } /var/lib/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb in call end.each { |j| j.call } /var/lib/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb in block in run_deferred_callbacks end.each { |j| j.call } /var/lib/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb in each @next_tick_mutex.synchronize do /var/lib/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb in run_deferred_callbacks @next_tick_mutex.synchronize do /var/lib/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb in run_machine run_machine /var/lib/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb in run run_machine /var/lib/gems/1.9.1/gems/thin-1.3.1/lib/thin/backends/base.rb in start EventMachine.run(&starter) /var/lib/gems/1.9.1/gems/thin-1.3.1/lib/thin/server.rb in start @backend.start /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/handler/thin.rb in run server.start /var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb in run! handler.run self, :Host => bind, :Port => port do |server| /var/lib/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb in block in <module:Sinatra> at_exit { Application.run! if $!.nil? && Application.run? } end
source share