Hi Sasha You are right, your application might become more complex if you split it up the application into a backend and a frontend part using the neo4j server/heroku add on. The tight integration in Rails of the active model objects in the view which make things like validation, creating nested model object, http routing, paginatation, or using other rails plugins (etc...) will not work out of the box when you split up your application with your own HTTP API. However, if your view uses a lot of javascript talking to rails controllers (e.g. single page javascript application) then a neo4j server solution would probably be a good choice. Also, it might feel better having the database as a service rather then as an embedded database.
I would still use rails in the backend neo4j server unless the application I develop was very small. (I have not tried this yet.) Rails is a great framework for writing REST/HTTP services. ps: Hope you don't mind that I post this on the neo4j.rb mailing list Cheers Andreas On Fri, Aug 12, 2011 at 11:08 PM, Michael Hunger < [email protected]> wrote: > Sasha you can clone the example github repo (that's also mentioned in the > docs): > > https://github.com/tbaum/script-extension-example > > Remove the .git directory and add it as a new repo to your github account. > > Feel free to change whatever you'd like (Gemfile, code, whatever). > > Michael > > Am 12.08.2011 um 23:00 schrieb Sasha Agafonoff: > > Hi Michael, > > That's all very helpful and makes a huge amount of sense. Thanks very much > for committing your time to replying - I appreciate you making the effort! > > I'd be really grateful for any suggestions from the group/list as to > getting started on writing a Rails 3 front end to leverage the backend > database. Perhaps if anyone else has started using the Heroku Add-on and > they are able to do so, they could share a basic template (perhaps on > GitHub) so I could get a better sense of how to get the plumbing working... > :-) > > Cheers, Sasha > > On 12 August 2011 16:31, Michael Hunger > <[email protected]>wrote: > >> The point is: You don't want to run your webapp in your database. >> >> A customer facing rails3 app is an webapp with lots of javascript, UI, >> images, views etc which also has to be scaled to many instances. >> >> On the other hand it needs data to work with. The source of the data is a >> database in this cause a graph database. >> >> But it is much better to talk to your database in terms of your domain >> (e.g. users, blog posts comments) instead of nodes and relationships. So you >> basically cut of that lower layer that talks directly to the graph database >> (and which is very performance sensitive) and move it over to the db. >> >> Then you can define the typical use-cases you need for your webapp to >> render a page and have the domain level endpoints in your database server >> that provide the _domain level_ data for this rendering process in this >> granularity and size. >> >> HTH >> >> Michael >> >> P.S: And without a frontend (just having the "user management >> system"-domain model running on the graph) (in the neo4j-server in our case) >> doesn't help you because you don't have to show anything to anyone (no UI). >> Am 12.08.2011 um 22:02 schrieb Sasha Agafonoff: >> >> PPS: I move this discussion to the users list as others probably want to >> chime in. >> >> >> Hi Michael, >> >> Thanks for your email! I am keen to use neo4j.rb rather than neography. >> The process set out in your example for setting up a back-end neo4j server >> on Heroku seems pretty straightforward, and I think I understand how I can >> define domain models and deploy them that way. I think with a bit of effort >> I could work out how to build something as a Rails front end to work with >> this, but with my limitations as a coder I don't think I'll do a fantastic >> job of it. >> >> Where I'm struggling is in understanding why I'd need to write two >> separate apps (backend-frontend) and not be able to write a single app built >> in the same way as the Rails Project Template ( >> http://neo4j.rubyforge.org/guides/rails3.html) that Andreas has made >> available on GitHub. Using that template, I could get rolling with a user >> management system and domain model very quickly. >> >> Andreas: not sure if you have any suggestions about bridging this gap? >> Maybe I'm missing something simple...? >> >> Cheers, Sasha >> >> On 11 August 2011 18:27, Michael Hunger <[email protected] >> > wrote: >> >>> Sasha, >>> >>> our rails(3) experience is rather limited. We can ask Andreas if he can >>> come up with something, but I can't make any promises. >>> >>> On the frontend web-app side you're free to do whatever rails stuff you >>> want anyway. >>> >>> On the server side we'd like to encourage really tight, persistence >>> centric REST-applicaitions that talk on a domain level to the >>> "frontend"-webapp that runs on Heroku. >>> >>> So for a "backend" rails-REST-app it would perhaps best to look for a >>> good rails3-REST-App example and create something similar, just that it uses >>> neo4j.rb instead of the built-in ActiveRecord for persistence. >>> Expose useful domain level endpoints to the frontend webapp and use that >>> one to drive the persistence layer running in the Neo4j Server. >>> >>> If you don't want to use server-side JRuby code, you're limited to a >>> wrapper like neography for the interaction with the graph database. >>> >>> If you'd like to invest time and effort we would be more than happy to >>> integrate it (with attribution) into the documentation. >>> >>> Thanks for your suggestions. >>> >>> Michael >>> >>> P.S. have you seen the general rails3 docs for heroku, I haven't looked >>> into them that much, so I don't know how much one could borrow from there. >>> >>> >>> Am 12.08.2011 um 00:18 schrieb Sasha Agafonoff: >>> >>> Hiya, >>> >>> I'm really pleased to see support kicking off for neo4j on heroku - it's >>> got me interested in picking up my old peoplemap project and doing a full >>> Rails 3-based reboot with the latest version of Andreas' neo4j.rb library. >>> I've joined the beta program, but I'm finding the learning curve pretty >>> challenging... >>> >>> The documentation at http://devcenter.heroku.com/articles/neo4j is >>> really awesome, but it's all centered around two Sinatra-based approaches to >>> accessing the heroku-hosted neo4j instances. The big challenge for me is in >>> working out how to take this (very fine) material and translate it into a >>> Rails 3 context. >>> >>> I will be the first to admit to many limitations as a coder (possibly due >>> to too many years wasted in sales) but I suspect that there will/may be >>> others... :-) >>> >>> Any chance of getting even a very simple Rails 3 example up on this page >>> as well? I think that with just a little more guidance in how to get >>> something configured and running, I could probably go and build something a >>> bit more developed that could contribute to the beta program and advancing >>> neo4j more generally! >>> >>> Cheers, Sasha >>> >>> >> > > > -- > _________________________________________ > Sasha Agafonoff > web: http://www.404.com.au > email: [email protected] > mobile: +56 (9) 8837 5815 > phone: +56 (2) 8238 525 > professional profile: http://www.linkedin.com/in/sashaagafonoff > > > _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

