[{"data":1,"prerenderedAt":303},["ShallowReactive",2],{"project-5589208":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":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":43,"post_text":46,"what":47,"said":91,"maker_in_thread":183,"shape":192,"grid":196,"attempts":264,"same_week":265,"maker_shows":34,"maker_hidden":295,"reader_version":296,"card":297},"5589208","Sync","Realtime partials with Rails","title","Show HN: Sync – Realtime partials with Rails","http:\u002F\u002Fchrismccord.com\u002Fblog\u002F2013\u002F04\u002F21\u002Fsync-realtime-rails-partials\u002F","chrismccord.com","chrismccord",1366638566,2013,143,29,142,1739,9,"notable","languages","rails realtime library","library",[24,25,26,27,28],"rails","realtime partials","pubsub","faye","pusher","loved",0.495,{"positive":32,"neutral":33,"mixed":34,"critical":34},12,6,1,20,{"idea":37,"design":39,"performance":41,"execution":42},{"positive":38,"critical":34},4,{"positive":40,"critical":40},0,{"positive":40,"critical":40},{"positive":40,"critical":40},[44,45,40,44,45,40,34,40,45,40,45,44,45,40,44,40,44,45,44,40,44,40,45,40,44,44,44,44,44],5,3,null,{"problem":48,"audience":59,"pricing":46,"motivation":68,"time_to_build":46,"stack":72,"openness":88,"stage":89,"team_size":90},{"value":49,"source":50,"evidence":51},"Realtime updates in Rails apps without client-side MVC frameworks or hand-written jQuery","commenter",[52,56],{"id":53,"by":54,"text":55},"5592244","habosa","Wow this really should become part of core Rails. This is definitely real time done the \"rails way\". I prefer Rails to anything else I've tried but my ideas increasingly revolve…",{"id":57,"by":11,"text":58},"5591003","Sync is an alternative to Ember\u002FBackbone, but not a replacement. If you're trying to replicate desktop software in the browser for instance, a heavy client-side framework is the…",{"value":60,"source":61,"evidence":62},"Rails developers building realtime web apps","inferred",[63,64],{"id":53,"by":54,"text":55},{"id":65,"by":66,"text":67},"5590145","joshcrowder","This is brilliant, looking forward to using this. Is this in use anywhere?",{"value":69,"source":61,"evidence":70},"Make realtime Rails views simpler than client-side MVC frameworks",[71],{"id":57,"by":11,"text":58},[73,80,84],{"value":74,"source":75,"evidence":76},"Ruby on Rails","maker",[77],{"id":78,"by":11,"text":79},"5590607","Faye will gladly run on Heroku with a foreman process, but I think Pusher is a tough choice to beat to get you up and running quickly. Sync does indeed support Rails 4. In fact,…",{"value":81,"source":75,"evidence":82},"Faye",[83],{"id":78,"by":11,"text":79},{"value":85,"source":75,"evidence":86},"Pusher",[87],{"id":78,"by":11,"text":79},"unknown","launched","solo",{"praise":92,"objections":116,"requests":130,"questions":145,"alternatives":171},[93,105],{"value":94,"source":50,"evidence":95},"Fits the Rails way and should be part of core Rails",[96,97,101],{"id":53,"by":54,"text":55},{"id":98,"by":99,"text":100},"5592868","marcamillion","Ahhh ok. I get you, re: the caching. This is very cool. I have been waiting for something like this, to dive into the real-time web. Wading into client-side JS frameworks has…",{"id":102,"by":103,"text":104},"5590997","andyl","OMG this is great - should be a standard part of rails.",{"value":106,"source":50,"evidence":107},"Good alternative to client-side MVC frameworks",[108,112],{"id":109,"by":110,"text":111},"5591017","Jarred","This is awesome! The next time I need functionality similar to what a client-side MVC framework provides, I'll give this a try first.",{"id":113,"by":114,"text":115},"5590943","benradler","Me gusta. Can this potentially replace a client-side MVC framework like backbone.js or ember.js entirely or are there limitations?",[117,126],{"value":118,"source":50,"evidence":119},"Requires an extra pubsub process such as Faye or Pusher",[120,123],{"id":121,"by":99,"text":122},"5592651","I really like this. The only thing that kinda threw me off a bit was putting the partials in the \u002Fviews\u002Fsync\u002Fresource\u002F folder. Feels a bit non-RESTy. I imagine, for a…",{"id":124,"by":11,"text":125},"5592066","That's correct. If on Heroku, Faye would run in it's own dyno process, while Pusher is a commercial product. Sync requires a pubsub server to talk to, so either is a must. I…",{"value":127,"source":50,"evidence":128},"Partials must live in a sync folder, which feels non-RESTful",[129],{"id":121,"by":99,"text":122},[131,138],{"value":132,"source":50,"evidence":133},"Support for Django or other frameworks",[134],{"id":135,"by":136,"text":137},"5593317","acjohnson55","Does anybody know of anything like this for Django? I'm very much interested in better integration between client-side and server-side code. I'm really not sold on the…",{"value":139,"source":50,"evidence":140},"Client-side templating for updates",[141],{"id":142,"by":143,"text":144},"5592983","hifier","This looks really great. Does anyone have any thoughts on how this could be combined with client friendly templating so that the rendering of the partial could be done client…",[146,153,163],{"value":147,"source":50,"evidence":148},"How it interacts with Russian doll caching",[149,150],{"id":121,"by":99,"text":122},{"id":151,"by":11,"text":152},"5592824","The partials each get separated into their own folder based on their model name. So it's not a grab-bag of random partials – it's the same folder structure an application would…",{"value":154,"source":50,"evidence":155},"Why partials are namespaced under sync directory",[156,160],{"id":157,"by":158,"text":159},"5593603","tomhallett","Can you provide some details on why the partials have to be namespace'd to the sync directory? My guess is: sync partials can only be \"resource\" based, and can't be given locals…",{"id":161,"by":11,"text":162},"5594968","You're right about part of the reason. One reason the partials are namespaced is indeed to serve as a distinction since at the moment, only the resource can hold the context for…",{"value":164,"source":50,"evidence":165},"Whether it works with Rails 4 and Heroku",[166,170],{"id":167,"by":168,"text":169},"5590565","tortilla","This looks perfect for a current project with a quite a bit of jQuery and partials. I may just redo using Sync. Do you have any recommendations for using on Heroku? Should I just…",{"id":78,"by":11,"text":79},[172,176,180],{"value":173,"source":50,"evidence":174},"Backbone.js",[175],{"id":113,"by":114,"text":115},{"value":177,"source":50,"evidence":178},"Ember.js",[179],{"id":113,"by":114,"text":115},{"value":85,"source":50,"evidence":181},[182],{"id":167,"by":168,"text":169},{"comments":184,"answered":185,"key":186},8,7,[187,188,189],{"id":151,"text":152},{"id":161,"text":162},{"id":190,"text":191},"5590672","I struggled with the naming to be honest, but settled on something short and sweet that sounded nice to me. Googling hopefully won't be a problem when coupled with a copule…",{"commenters":193,"max_depth":33,"maker_replies":184,"first_comment_mins":194,"lifespan_hours":195},19,92,64,[197,199,201,203,204,206,208,213,215,217,221,224,228,229,230,232,234,237,238,239,242,243,244,248,249,250,254,258,262],[53,40,44,198,54,40],"project\u002Fpositive\u002Fidea",[121,34,45,200,99,40],"project\u002Fmixed\u002Fdesign",[151,34,40,202,11,34],"maker\u002Fneutral\u002Fperformance",[98,34,44,198,99,40],[157,34,45,205,158,40],"project\u002Fneutral\u002Fdesign",[161,34,40,207,11,34],"maker\u002Fneutral\u002Fdesign",[209,210,34,211,212,40],"5590619",2,"project\u002Fcritical\u002Fidea","hemancuso",[190,210,40,214,11,34],"maker\u002Fneutral\u002Fnone",[142,45,45,216,143,40],"project\u002Fneutral\u002Fidea",[218,45,40,219,220,40],"5593658","commenter\u002Fneutral\u002Fidea","wilg",[222,45,45,223,143,40],"5605831","project\u002Fneutral\u002Fperformance",[225,38,44,226,227,40],"5590540","project\u002Fpositive\u002Fnone","robotmay",[113,44,45,216,114,40],[57,44,40,216,11,34],[231,44,44,226,114,40],"5591205",[233,44,40,214,11,34],"5591281",[235,33,44,226,236,40],"5590139","killion",[135,185,45,216,136,40],[65,184,44,226,66,40],[240,184,40,241,11,34],"5590216","project\u002Fneutral\u002Fnone",[167,184,44,226,168,40],[78,184,40,226,11,34],[245,184,45,246,247,40],"5591971","project\u002Fneutral\u002Fexecution","scoot",[124,184,40,246,11,34],[109,18,44,198,110,40],[251,252,44,226,253,40],"5590348",10,"livando",[255,256,44,226,257,40],"5589679",11,"TallboyOne",[259,32,44,260,261,40],"5598925","maker\u002Fpositive\u002Fnone","tikhon",[102,263,44,198,103,40],13,[],[266,271,276,280,285,290],{"id":267,"name":268,"points":269,"category":270},"5600982","Usability checklist",216,"dev_tools",{"id":272,"name":273,"points":274,"category":275},"5584520","jsdares",177,"learning_science",{"id":277,"name":278,"points":279,"category":270},"5569854","Takipi",146,{"id":281,"name":282,"points":283,"category":284},"5590394","tweetsFC",98,"consumer_social",{"id":286,"name":287,"points":288,"category":289},"5598852","Squaresend",95,"web_saas",{"id":291,"name":292,"points":293,"category":294},"5583516","Tweetspiration",82,"productivity",false,"v2",{"id":298,"name":5,"line":6,"ai":295,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":299,"top":18,"kw":300,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":301,"url":9,"mix":302,"praise":94,"objection":118,"sub":21},5589208,0.5,[24,25,26,27,28],"53053010303530505350503055555",[32,33,34,34],1793990893424]