使用Rails 3.0.7,REE 1.8.7.
我想在响应发送到浏览器后在Rails中运行代码(特别是垃圾收集).
有没有办法修补Rails/Rack /某些东西,以便在响应从控制器发送到浏览器后立即调用GC.start?
*注意:这不是我想使用delayed_job或resque的情况.我已经知道这些工具并且它们不适合这个用例.*
尝试使用mongoexport查询会导致错误.但是同样的查询由mongo-client评估而没有错误.
在mongo-client中:
db.listing.find({"created_at":new Date(1221029382*1000)})
Run Code Online (Sandbox Code Playgroud)
使用mongoexport:
mongoexport -d event -c listing -q '{"created_at":new Date(1221029382*1000)}'
Run Code Online (Sandbox Code Playgroud)
生成的错误:
Fri Nov 11 17:44:08 Assertion: 10340:Failure parsing JSON string near:
$and: [ {
0x584102 0x528454 0x5287ce 0xa94ad1 0xa8e2ed 0xa92282 0x7fbd056a61c4
0x4fca29
mongoexport(_ZN5mongo11msgassertedEiPKc+0x112) [0x584102]
mongoexport(_ZN5mongo8fromjsonEPKcPi+0x444) [0x528454]
mongoexport(_ZN5mongo8fromjsonERKSs+0xe) [0x5287ce]
mongoexport(_ZN6Export3runEv+0x7b1) [0xa94ad1]
mongoexport(_ZN5mongo4Tool4mainEiPPc+0x169d) [0xa8e2ed]
mongoexport(main+0x32) [0xa92282]
/lib/libc.so.6(__libc_start_main+0xf4) [0x7fbd056a61c4]
mongoexport(__gxx_personality_v0+0x3d9) [0x4fca29]
assertion: 10340 Failure parsing JSON string near: $and: [ {
Run Code Online (Sandbox Code Playgroud)
但是Date事先在mongoexport中进行乘法运算:
mongoexport -d event -c listing -q '{"created_at":new Date(1221029382000)}'
Run Code Online (Sandbox Code Playgroud)
作品!
为什么mongo在这两个上下文中以不同的方式评估查询?
(Ruby 1.9.3,MongoDB 2.0.4,Rails 3.2,Mongoid 2.4,Geocoder 1.1.1)
我有以下型号:
class Company
include Mongoid::Document
embeds_one :office
index [[ "office.coordinates", Mongo::GEO2D ]]
end
class Office
include Mongoid::Document
include Geocoder::Model::Mongoid
geocoded_by :address
field :city, :type => String
field :state, :type => String
field :coordinates, :type => Array
embedded_in :company
after_validation :geocode
def address
"#{city}, #{state}"
end
end
Run Code Online (Sandbox Code Playgroud)
我在控制台中这样做:
> c = Company.new
=> #<Company _id: 4f885aa56d20f03898000003, _type: nil>
> c.office = Office.new(:city => "San Francisco", :state => "CA")
=> #<Office _id: 4f885ab66d20f03898000004, _type: nil, city: …Run Code Online (Sandbox Code Playgroud)