我正在努力让rails 3应用程序准备好使用时区.我的开发机器在EDT中,我托管的服务器是UTC.我的rspec测试中是否有一种方法可以更改ruby正在使用的系统时区,以便我使用相同的系统时区运行测试而无需更改计算机上的系统时钟?我看过Delorean和Timecop,他们不是我想要的.我正在寻找类似的东西
Time.system_time_zone = "UTC"
Run Code Online (Sandbox Code Playgroud)
...然后Time.now将返回UTC时间,而不是我的系统时区设置的任何时间.
注意:我不想删除下面的任何历史记录,但我之前认为这是一个Heroku问题,但事实并非如此.我认为这是我的本地机器通过curl和ruby Net :: HTTP发送帖子的问题
我目前正在开始研究Heroku上的rails应用程序(免费),为了将一些测试数据输入应用程序,我有一个rake任务,它从我的DEV DB中获取测试数据并发布到JSON REST API上. heroku app就像这样:
uri = URI.parse("http://SITENAME.herokuapp.com")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new("/users.json")
request.add_field('Content-Type', 'application/json')
request.body = {'user' => User.first.to_hash }.to_json
response = http.request(request)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,每个请求几乎都需要10秒钟.然后我将顶线更改为:
uri = URI.parse("http://localhost:3000")
Run Code Online (Sandbox Code Playgroud)
......请求过程非常快.有人知道Heroku是否在免费版上放慢了POSTS的速度?(这是有意义的,因为他们希望你支付工作人员dyno)我最终会为付费版本付出代价,但是在这之前想要在我的DEV中稍微进一步.而且,如果他们没有故意放慢速度,我会有点犹豫不决,直到我知道为什么帖子花了这么长时间.需要10秒的线路是:
response = http.request(request)
Run Code Online (Sandbox Code Playgroud)
我确信这很明显,但我想我会提到它.
更新3/12 只是想从今天发布我的一些日志.所有请求都需要10秒钟:
1400
Before: 2013-03-12 21:30:33 UTC
After: 2013-03-12 21:30:43 UTC
1401
Before: 2013-03-12 21:30:43 UTC
After: 2013-03-12 21:30:54 UTC
1402
Before: 2013-03-12 21:30:54 UTC
After: 2013-03-12 21:31:04 UTC
1403
Before: 2013-03-12 21:31:04 UTC
After: 2013-03-12 21:31:14 UTC
1404
Before: …Run Code Online (Sandbox Code Playgroud)