[{"data":1,"prerenderedAt":243},["ShallowReactive",2],{"project-7438060":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":42,"post_text":44,"what":45,"said":78,"maker_in_thread":163,"shape":169,"grid":173,"attempts":203,"same_week":204,"maker_shows":234,"maker_hidden":235,"reader_version":236,"card":237},"7438060","Ahoy","Visit tracking for Rails","title","Show HN: Visit tracking for Rails","http:\u002F\u002Fankane.github.io\u002Fahoy\u002F","ankane.github.io","akane",1395344442,2014,51,16,624,2272,28,"notable","dev_tools","rails analytics","library",[24,21,25,26],"rails visit tracking","database analytics","ruby gem","mixed",-0.038,{"positive":30,"neutral":31,"mixed":32,"critical":33},3,6,0,4,13,{"performance":36,"idea":38,"docs":40,"execution":41},{"positive":32,"critical":37},1,{"positive":39,"critical":39},2,{"positive":32,"critical":37},{"positive":37,"critical":32},[32,37,32,30,43,32,37,30,30,30,37,43,30,30,37,43],5,null,{"problem":46,"audience":58,"pricing":44,"motivation":44,"time_to_build":44,"stack":64,"openness":77,"stage":77,"team_size":77},{"value":47,"source":48,"evidence":49},"Tracking page visits in the app database instead of third-party analytics services","commenter",[50,54],{"id":51,"by":52,"text":53},"7438264","apoorvamehta","nice work. one of the biggest problems with external tracking services (mixpanel\u002Fkissmetrics\u002Fgoogle analytics) is reconciling the data with what's present in your database. this…",{"id":55,"by":56,"text":57},"7439288","joevandyk","My e-commerce company started tracking all page visits in the database about a year ago, it's been one of the best decisions we've made. It's amazing to have all of your data in…",{"value":59,"source":60,"evidence":61},"Rails developers who want analytics data in their own database","inferred",[62,63],{"id":51,"by":52,"text":53},{"id":55,"by":56,"text":57},[65,70],{"value":66,"source":60,"evidence":67},"Ruby on Rails",[68],{"id":69},"post",{"value":71,"source":72,"evidence":73},"JavaScript","maker",[74],{"id":75,"by":11,"text":76},"7439571","Currently, a visit record is created as soon as a user lands on a page with the Javascript, but I'm curious to see other ways people want to it.","unknown",{"praise":79,"objections":92,"requests":111,"questions":138,"alternatives":147},[80,85],{"value":81,"source":48,"evidence":82},"Keeps analytics data in the application database, easy to reconcile",[83,84],{"id":51,"by":52,"text":53},{"id":55,"by":56,"text":57},{"value":86,"source":48,"evidence":87},"Easy setup and integration",[88],{"id":89,"by":90,"text":91},"7440122","sbeckeriv","Easy setup and integration so far!",[93,104],{"value":94,"source":48,"evidence":95},"Heavy database writes on every visit under high traffic",[96,100],{"id":97,"by":98,"text":99},"7438625","ShaneOG","Won't this absolutely hammer your database with real-time writes?",{"id":101,"by":102,"text":103},"7439852","rschmitty","Any stats on how much of a load this puts on the existing app? Could this send to redis or a delayed job and be eventually consistent to database for non-logged in users?",{"value":105,"source":48,"evidence":106},"Third-party tools offer live visualisation and more features out of the box",[107],{"id":108,"by":109,"text":110},"7439388","chandraonline","Most of these analytics providers also allow you send data from your server that you can then correlate with your visit data. While I think solutions like this works initially,…",[112,124,131],{"value":113,"source":48,"evidence":114},"Move logging to background jobs or Redis",[115,116,120],{"id":101,"by":102,"text":103},{"id":117,"by":118,"text":119},"7440291","bbwharris","Excellent point. This type of logging should go into the background.",{"id":121,"by":122,"text":123},"7440377","nthj","Redis, yes. Perfect for this kind of thing. delayed_job might make less sense, since delayed_job still INSERTs to the database. I haven't benchmarked it specifically but I'd have…",{"value":125,"source":48,"evidence":126},"Option to write visits only on chosen actions such as sign-up",[127],{"id":128,"by":129,"text":130},"7439432","diasks2","This looks great! I was just thinking I needed something like this a couple days ago, and then this popped up on HN today. I will definitely check it out. I haven't had a chance…",{"value":132,"source":48,"evidence":133},"Add specs",[134],{"id":135,"by":136,"text":137},"7438773","rahilsondhi","Nice work Andrew. No specs though? :(",[139,143],{"value":140,"source":48,"evidence":141},"Is session data stored in a cookie before being written to the db?",[142],{"id":128,"by":129,"text":130},{"value":144,"source":48,"evidence":145},"What is the load impact on the existing app?",[146],{"id":101,"by":102,"text":103},[148,155],{"value":149,"source":48,"evidence":150},"Splunk or log analysis",[151],{"id":152,"by":153,"text":154},"7440120","rosslazer","Why not just log your visits and explore them in something like Splunk?",{"value":156,"source":48,"evidence":157},"Mixpanel, Kissmetrics, Google Analytics",[158,159],{"id":51,"by":52,"text":53},{"id":160,"by":161,"text":162},"7438653","chourobin","I'm not familiar with the other analytics providers, but can't you track certain events (like orders and charges) and bind properties to them using Mixpanel? This could help you…",{"comments":39,"answered":39,"key":164},[165,168],{"id":166,"text":167},"7438655","Unless you have hundreds of unique visitors per second, this shouldn't be a problem.",{"id":75,"text":76},{"commenters":170,"max_depth":30,"maker_replies":39,"first_comment_mins":171,"lifespan_hours":172},15,24,7,[174,176,178,180,183,185,187,189,190,191,192,194,195,197,200,201],[55,32,32,175,56,32],"other\u002Fpositive\u002Fidea",[97,37,37,177,98,32],"project\u002Fcritical\u002Fperformance",[166,37,32,179,11,37],"project\u002Fneutral\u002Fperformance",[181,37,30,179,182,32],"7438696","bherms",[128,39,43,184,129,32],"project\u002Fpositive\u002Fidea",[75,39,32,186,11,37],"maker\u002Fneutral\u002Fdesign",[152,30,37,188,153,32],"project\u002Fcritical\u002Fidea",[101,33,30,179,102,32],[117,33,30,179,118,32],[121,33,30,179,122,32],[135,43,37,193,136,32],"project\u002Fcritical\u002Fdocs",[51,31,43,184,52,32],[160,31,30,196,161,32],"project\u002Fneutral\u002Fidea",[198,31,30,196,199,32],"7439045","riffraff",[108,31,37,188,109,32],[89,172,43,202,90,32],"project\u002Fpositive\u002Fexecution",[],[205,210,215,219,224,229],{"id":206,"name":207,"points":208,"category":209},"7454242","Bread Box",199,"web_saas",{"id":211,"name":212,"points":213,"category":214},"7477095","Coding Interview Practice",172,"learning_science",{"id":216,"name":217,"points":218,"category":20},"7468328","ShareDrop",165,{"id":220,"name":221,"points":222,"category":223},"7435569","2048 Tetris",160,"games",{"id":225,"name":226,"points":227,"category":228},"7472982","Mogo Chat",140,"productivity",{"id":230,"name":231,"points":232,"category":233},"7442925","ngxtop",134,"infrastructure",9,false,"v2",{"id":238,"name":5,"line":6,"ai":235,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":239,"top":18,"kw":240,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":241,"url":9,"mix":242,"praise":81,"objection":94,"sub":21},7438060,-0.04,[24,21,25,26],"0103501333153315",[30,31,32,33],1794036516838]