2011-05-16 49 views
2

我想设置一个简单的Sinatra应用程序来捕获发送到/ URL的原始POST数据,并将该数据作为格式的文件保存到文件系统YYYYMMDD-HHMMSS.json。Ruby Sinatra简单应用程序 - 原始POST数据

我将张贴到URL中的数据是以JSON格式的简单文本数据。

设置这个简单的Sinatra应用程序的最佳方法是什么?不确定如何捕获原始POST数据。

UPDATE /代码:

post '/' do 
    raw = request.env["rack.input"].read 
    n = DateTime.now 
    filename = n.strftime("%Y%m%d") + "T" + n.strftime("%H%M%S") #any way to include microseconds? 
    # write to file 
end 
+0

见下文和意见回答。我已经尝试了此页面上的评论中提到的所有方法http://www.gittr.com/index.php/archive/getting-data-into-a-sinatra-application/ – BuddyJoe 2011-05-17 01:07:26

+0

这些方法都不起作用。我如何解决这个问题? – BuddyJoe 2011-05-17 01:07:51

回答

5

像这样的东西应该为你工作:

post "/" do 
    File.open("#{Time.now.strftime("%Y%m%d-%H%M%S")}.json", "w") do |f| 
    f.puts params["data"]  
    end 
end 
+0

哇。当我调整这个问题的时候达到了。这应该够了吧。任何方式来包含毫秒的时间戳? – BuddyJoe 2011-05-16 18:49:12

+1

'以毫秒为单位''Time.now.strftime(“%Y%m%d-%H%M%S%L”)'' – 2011-05-16 19:15:59

+0

不得不在Windows上升级到1.92才能得到这个。 1.87在Windows上缺少%L选项。正在驾驶着我。 – BuddyJoe 2011-05-16 19:51:45