Re: Clojure Jruby (Ruby on Rails) Interop
On Monday, 9 September 2013 07:55:15 UTC+5:30, rdelcueto wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? I somehow missed this thread earlier. If you are OK to use RoR with JRuby, you might want to use the rack servlet https://github.com/jruby/jruby-rack with lein-servlet: https://github.com/kumarshantanu/lein-servlet and use both JRuby and Clojure in the same JVM process. Shantanu -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Clojure Jruby (Ruby on Rails) Interop
Rodrigo, Have you looked at hosting your JVM-based solution with Clojure and jRuby on Heroku? -Ramon On Thursday, October 24, 2013 9:59:56 PM UTC-4, rdelcueto wrote: Thanks for your response Jim. Is there any alternative solution to Openshift that supports the TB and Immutant combo, that you recommend? On Thursday, October 24, 2013 8:47:14 PM UTC-5, Jim Crossley wrote: Unfortunately not, Rodrigo. Frankly, TorqueBox on OpenShift is not a very happy experience, mostly due to bundler and very limited resources on the free OpenShift gears. Until we get those issues worked out, I don't want to encourage anyone to combine TB and Immutant on OpenShift. Also, we're kinda in a wait-and-see mode while the OpenShift guys integrate Docker, as container images should be a lot easier to work with than cartridges. So you're ahead of us at the moment. We expect to catch up, just not sure when. Jim On Thu, Oct 24, 2013 at 8:45 PM, rdelcueto rdel...@gmail.com wrote: Dear Jim, I just began playing with Immutant and TorqueBox. I realized the polyglot-openshift-quickstart* @ *GitHub is marked as obsolete. I found links to newer versions of immutant-quickstart and torquebox-quickstart, though as separate applications. Is there documentation or a tutorial on how to get TorqueBox and Immutant merged into a single OpenShift application, ala lein immutant overlay torquebox? Regards, On Monday, September 9, 2013 11:14:54 AM UTC-5, Jim Crossley wrote: Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdel...@gmail.com wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? Thanks in advance and best regards, Rodrigo -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first
Re: Clojure Jruby (Ruby on Rails) Interop
Hey Ramon, Back when I started coding my project ~6 months ago, I couldn't run Torquebox successfully in Heroku nor Openshift. I read about the Torquebox Lite project, but you loose most of the Torquebox magic. I know now, you can get the full Torquebox stack - {Stomp server Clustering} running on Heroku, but I wouldn't know how big can they scale, since the dyno/gear RAM is quite limited. From experience, I've experience that Torquebox with background jobs and messaging queues, can be quite RAM demanding on my development environment, I wouldn't know how it performs on a Heroku dyno. I also read tons of issues regarding Heroku's intelligent routing, back when I was looking for a hosting solution. So I finally opted for a VPS solution, which does need extra setup (compared to Heroku deployment), but having the extra CPU power +RAM, and running Torquebox with all it's bells and whistles running, was well worth loosing Heroku's perks. - Rodrigo On Tuesday, March 11, 2014 12:26:55 PM UTC-6, Ramon Long wrote: Rodrigo, Have you looked at hosting your JVM-based solution with Clojure and jRuby on Heroku? -Ramon On Thursday, October 24, 2013 9:59:56 PM UTC-4, rdelcueto wrote: Thanks for your response Jim. Is there any alternative solution to Openshift that supports the TB and Immutant combo, that you recommend? On Thursday, October 24, 2013 8:47:14 PM UTC-5, Jim Crossley wrote: Unfortunately not, Rodrigo. Frankly, TorqueBox on OpenShift is not a very happy experience, mostly due to bundler and very limited resources on the free OpenShift gears. Until we get those issues worked out, I don't want to encourage anyone to combine TB and Immutant on OpenShift. Also, we're kinda in a wait-and-see mode while the OpenShift guys integrate Docker, as container images should be a lot easier to work with than cartridges. So you're ahead of us at the moment. We expect to catch up, just not sure when. Jim On Thu, Oct 24, 2013 at 8:45 PM, rdelcueto rdel...@gmail.com wrote: Dear Jim, I just began playing with Immutant and TorqueBox. I realized the polyglot-openshift-quickstart* @ *GitHub is marked as obsolete. I found links to newer versions of immutant-quickstart and torquebox-quickstart, though as separate applications. Is there documentation or a tutorial on how to get TorqueBox and Immutant merged into a single OpenShift application, ala lein immutant overlay torquebox? Regards, On Monday, September 9, 2013 11:14:54 AM UTC-5, Jim Crossley wrote: Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdel...@gmail.com wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system
Re: Clojure Jruby (Ruby on Rails) Interop
Dear Jim, I just began playing with Immutant and TorqueBox. I realized the polyglot-openshift-quickstart* @ *GitHub is marked as obsolete. I found links to newer versions of immutant-quickstart and torquebox-quickstart, though as separate applications. Is there documentation or a tutorial on how to get TorqueBox and Immutant merged into a single OpenShift application, ala lein immutant overlay torquebox? Regards, On Monday, September 9, 2013 11:14:54 AM UTC-5, Jim Crossley wrote: Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdel...@gmail.comjavascript: wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? Thanks in advance and best regards, Rodrigo -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@googlegroups.com javascript: For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To
Re: Clojure Jruby (Ruby on Rails) Interop
Unfortunately not, Rodrigo. Frankly, TorqueBox on OpenShift is not a very happy experience, mostly due to bundler and very limited resources on the free OpenShift gears. Until we get those issues worked out, I don't want to encourage anyone to combine TB and Immutant on OpenShift. Also, we're kinda in a wait-and-see mode while the OpenShift guys integrate Docker, as container images should be a lot easier to work with than cartridges. So you're ahead of us at the moment. We expect to catch up, just not sure when. Jim On Thu, Oct 24, 2013 at 8:45 PM, rdelcueto rdelcu...@gmail.com wrote: Dear Jim, I just began playing with Immutant and TorqueBox. I realized the polyglot-openshift-quickstart* @ *GitHub is marked as obsolete. I found links to newer versions of immutant-quickstart and torquebox-quickstart, though as separate applications. Is there documentation or a tutorial on how to get TorqueBox and Immutant merged into a single OpenShift application, ala lein immutant overlay torquebox? Regards, On Monday, September 9, 2013 11:14:54 AM UTC-5, Jim Crossley wrote: Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/**2013/03/07/overlay-screencast/http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdel...@gmail.com wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? Thanks in advance and best regards, Rodrigo -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@**googlegroups.com For more options, visit this group at http://groups.google.com/**group/clojure?hl=enhttp://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an
Re: Clojure Jruby (Ruby on Rails) Interop
Thanks for your response Jim. Is there any alternative solution to Openshift that supports the TB and Immutant combo, that you recommend? On Thursday, October 24, 2013 8:47:14 PM UTC-5, Jim Crossley wrote: Unfortunately not, Rodrigo. Frankly, TorqueBox on OpenShift is not a very happy experience, mostly due to bundler and very limited resources on the free OpenShift gears. Until we get those issues worked out, I don't want to encourage anyone to combine TB and Immutant on OpenShift. Also, we're kinda in a wait-and-see mode while the OpenShift guys integrate Docker, as container images should be a lot easier to work with than cartridges. So you're ahead of us at the moment. We expect to catch up, just not sure when. Jim On Thu, Oct 24, 2013 at 8:45 PM, rdelcueto rdel...@gmail.comjavascript: wrote: Dear Jim, I just began playing with Immutant and TorqueBox. I realized the polyglot-openshift-quickstart* @ *GitHub is marked as obsolete. I found links to newer versions of immutant-quickstart and torquebox-quickstart, though as separate applications. Is there documentation or a tutorial on how to get TorqueBox and Immutant merged into a single OpenShift application, ala lein immutant overlay torquebox? Regards, On Monday, September 9, 2013 11:14:54 AM UTC-5, Jim Crossley wrote: Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/**2013/03/07/overlay-screencast/http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdel...@gmail.com wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? Thanks in advance and best regards, Rodrigo -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@**googlegroups.com For more options, visit
Re: Clojure Jruby (Ruby on Rails) Interop
Rodrigo, We went with RabbitMQ over ZeroMQ mostly because we were more familiar with it. As I understand it, ZeroMQ is less of a message-queueing system and more sockets on steroids. Which one is best will depend pretty strongly on your particular usecase. In our case, our messages are pretty simple: they're just mongodb docIds plus some extra data. We use the queue the message goes into as the meta-data for the message. If a docId appears in the word-count queue, for example, the Clojure workers know to calculate the avg word count stats for the given document. For us, security comes in the form of username/password authentication for RabbitMQ, plus blocking the ports to everyone save the Ruby and Clojure servers that need to communicate with it. If we were firing off messages with more sensitive data (e.g., passwords), we'd look at encryption then. The performance of the pipeline so far has been great. Ruby can offload the heavy processing to Clojure, so the user can continue working on the site without interruption. Clojure gets to focus on just the processing side, so we can optimize and scale it separately. As for portability, we started with everything on Heroku, but we've been slowly migrating to aws as our needs scale up. Our configuration makes this really easy: we can move the rabbitmq piece over one week, then the clojure the next, without changing anything but a few lines in a config file. Ron On Monday, September 9, 2013 7:47:54 AM UTC-7, rdelcueto wrote: Hey Ron, Thanks for your response. Digging deeper into my question... When I read about the Torquebox Immutant duet, I thought it was particularly interesting solution, because it was fairly easy to deploy and both processes would live inside a JVM environment. I was impressed by how Clojure data structures mapped to Ruby structures and vice-versa, it seemed to provide a very clean and idiomatic messaging platform. Plus it would provide tools for caching, clustering, and what not. Still I wasn't very keen on the JRuby subject, since It's known to have compatibility issues with certain gems. Yesterday while researching on the subject I found about ZeroMQ. Do you have any particular reason to use RabbitMQ over other messaging libraries? Are there any caveats to your interop model? How portable is deploying a site using a messaging solution such as RabbitMQ? I also found out about Google's Protocol Buffers, they seemed like a lightweight solution to pass language agnostic data structures through the messaging infrastructure. Do messages need to be encapsulated somehow, or is this actually unnecessary? How it's done in your case? Regarding security and sensible information interop; Should messages be encrypted? Should they be encrypted as a whole message or partially (only sensible data)? What are the performance implications of this pipeline? Is the overhead and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big enough, for it to be worth thinking on writing everything in Clojure (using the Luminus framework)? On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote: At Rewryte, we use Rails for the web frontend and Clojure for the data processing backend for exactly the reasons you described. We use RabbitMQ to communicate between the two. This maintains separation between the two apps (no JRuby required), and lets us scale them both independently, while taking advantage of each language/framework's strengths. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Clojure Jruby (Ruby on Rails) Interop
At Rewryte, we use Rails for the web frontend and Clojure for the data processing backend for exactly the reasons you described. We use RabbitMQ to communicate between the two. This maintains separation between the two apps (no JRuby required), and lets us scale them both independently, while taking advantage of each language/framework's strengths. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure Jruby (Ruby on Rails) Interop
Forgot to mention, Zweikopf comes as a Ruby gem and as a Clojure library. You should make a decision though wether you're running Ruby scripting container from Clojure or start Clojure runtime from Ruby... On Mon, Sep 9, 2013 at 5:50 PM, Oleksandr Petrov oleksandr.pet...@gmail.com wrote: I've been working with an application that written in Ruby and Clojure. Nothing forbids you from using some messaging system for communication between Ruby and Clj, although we required direct access to Ruby from Clojure and vice versa. That's pretty much how Zweikopf was born: http://github.com/ifesdjeen/zweikopf With Zweikopf you can call Ruby code from Clojure and Clojure code from Ruby, given that Runtime was registered properly. You can convert any Clojure data structure to Ruby one and back, custom serialisation, circular dependency detection included. I would suggest not using any serialisation means if you intend running both languages in a single process / JVM. That would add a significant overhead and you won't be able to have direct access to whatever class you may need at given time without wrapping it into some RPC container. On Mon, Sep 9, 2013 at 4:47 PM, rdelcueto rdelcu...@gmail.com wrote: Hey Ron, Thanks for your response. Digging deeper into my question... When I read about the Torquebox Immutant duet, I thought it was particularly interesting solution, because it was fairly easy to deploy and both processes would live inside a JVM environment. I was impressed by how Clojure data structures mapped to Ruby structures and vice-versa, it seemed to provide a very clean and idiomatic messaging platform. Plus it would provide tools for caching, clustering, and what not. Still I wasn't very keen on the JRuby subject, since It's known to have compatibility issues with certain gems. Yesterday while researching on the subject I found about ZeroMQ. Do you have any particular reason to use RabbitMQ over other messaging libraries? Are there any caveats to your interop model? How portable is deploying a site using a messaging solution such as RabbitMQ? I also found out about Google's Protocol Buffers, they seemed like a lightweight solution to pass language agnostic data structures through the messaging infrastructure. Do messages need to be encapsulated somehow, or is this actually unnecessary? How it's done in your case? Regarding security and sensible information interop; Should messages be encrypted? Should they be encrypted as a whole message or partially (only sensible data)? What are the performance implications of this pipeline? Is the overhead and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big enough, for it to be worth thinking on writing everything in Clojure (using the Luminus framework)? On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote: At Rewryte, we use Rails for the web frontend and Clojure for the data processing backend for exactly the reasons you described. We use RabbitMQ to communicate between the two. This maintains separation between the two apps (no JRuby required), and lets us scale them both independently, while taking advantage of each language/framework's strengths. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- alex p -- alex p -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure Jruby (Ruby on Rails) Interop
Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdelcu...@gmail.com wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? Thanks in advance and best regards, Rodrigo -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure Jruby (Ruby on Rails) Interop
Hey Ron, Thanks for your response. Digging deeper into my question... When I read about the Torquebox Immutant duet, I thought it was particularly interesting solution, because it was fairly easy to deploy and both processes would live inside a JVM environment. I was impressed by how Clojure data structures mapped to Ruby structures and vice-versa, it seemed to provide a very clean and idiomatic messaging platform. Plus it would provide tools for caching, clustering, and what not. Still I wasn't very keen on the JRuby subject, since It's known to have compatibility issues with certain gems. Yesterday while researching on the subject I found about ZeroMQ. Do you have any particular reason to use RabbitMQ over other messaging libraries? Are there any caveats to your interop model? How portable is deploying a site using a messaging solution such as RabbitMQ? I also found out about Google's Protocol Buffers, they seemed like a lightweight solution to pass language agnostic data structures through the messaging infrastructure. Do messages need to be encapsulated somehow, or is this actually unnecessary? How it's done in your case? Regarding security and sensible information interop; Should messages be encrypted? Should they be encrypted as a whole message or partially (only sensible data)? What are the performance implications of this pipeline? Is the overhead and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big enough, for it to be worth thinking on writing everything in Clojure (using the Luminus framework)? On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote: At Rewryte, we use Rails for the web frontend and Clojure for the data processing backend for exactly the reasons you described. We use RabbitMQ to communicate between the two. This maintains separation between the two apps (no JRuby required), and lets us scale them both independently, while taking advantage of each language/framework's strengths. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure Jruby (Ruby on Rails) Interop
I've been working with an application that written in Ruby and Clojure. Nothing forbids you from using some messaging system for communication between Ruby and Clj, although we required direct access to Ruby from Clojure and vice versa. That's pretty much how Zweikopf was born: http://github.com/ifesdjeen/zweikopf With Zweikopf you can call Ruby code from Clojure and Clojure code from Ruby, given that Runtime was registered properly. You can convert any Clojure data structure to Ruby one and back, custom serialisation, circular dependency detection included. I would suggest not using any serialisation means if you intend running both languages in a single process / JVM. That would add a significant overhead and you won't be able to have direct access to whatever class you may need at given time without wrapping it into some RPC container. On Mon, Sep 9, 2013 at 4:47 PM, rdelcueto rdelcu...@gmail.com wrote: Hey Ron, Thanks for your response. Digging deeper into my question... When I read about the Torquebox Immutant duet, I thought it was particularly interesting solution, because it was fairly easy to deploy and both processes would live inside a JVM environment. I was impressed by how Clojure data structures mapped to Ruby structures and vice-versa, it seemed to provide a very clean and idiomatic messaging platform. Plus it would provide tools for caching, clustering, and what not. Still I wasn't very keen on the JRuby subject, since It's known to have compatibility issues with certain gems. Yesterday while researching on the subject I found about ZeroMQ. Do you have any particular reason to use RabbitMQ over other messaging libraries? Are there any caveats to your interop model? How portable is deploying a site using a messaging solution such as RabbitMQ? I also found out about Google's Protocol Buffers, they seemed like a lightweight solution to pass language agnostic data structures through the messaging infrastructure. Do messages need to be encapsulated somehow, or is this actually unnecessary? How it's done in your case? Regarding security and sensible information interop; Should messages be encrypted? Should they be encrypted as a whole message or partially (only sensible data)? What are the performance implications of this pipeline? Is the overhead and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big enough, for it to be worth thinking on writing everything in Clojure (using the Luminus framework)? On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote: At Rewryte, we use Rails for the web frontend and Clojure for the data processing backend for exactly the reasons you described. We use RabbitMQ to communicate between the two. This maintains separation between the two apps (no JRuby required), and lets us scale them both independently, while taking advantage of each language/framework's strengths. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- alex p -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure Jruby (Ruby on Rails) Interop
2013/9/9 Oleksandr Petrov oleksandr.pet...@gmail.com Forgot to mention, Zweikopf comes as a Ruby gem and as a Clojure library. You should make a decision though wether you're running Ruby scripting container from Clojure or start Clojure runtime from Ruby Or integrate the two using messaging, e.g. with [1] and [2]. 1. http://hotbunnies.info 2. http://clojurerabbitmq.info -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure Jruby (Ruby on Rails) Interop
Thank you all for your advice and information provided. It's clear to me now that a message based solution is a good option. I'm still unsure on which messaging framework I should start with. Actually it was Jim's screencast, which got me into thinking in the messaging solution using TorqueBox and Immutant. They look like brilliant mature tools, and might be the way to go. My only consideration regarding TorqueBox is having to play with JRuby. In my research a stumbled upon Allen Rohner's talk, The Good, The Bad The Ugly (Clojure JRuby)http://www.infoq.com/presentations/Good-Bad-Ugly-Clojure-JRuby, and got me thinking that this hybrid scenario can as well introduce unwanted complexity. The whole reason of using Clojure instead of pure RoR, is dodge complexity in customizing the Rails framework to my needs. What happens to the RoR database migration model, now that the backend is encharge of it? Of course Allen's case wasn't targeting a messaging scenario, but a much complex and messier Clojure-Ruby interaction, which I think isn't in my outlook. But still he pointed out many obstacles of clashing two very different paradigms. But how and what should each, the RoR frontend and Clojure backend, encapsulate. Which are the good practices in this scenarios? For instance, I was thinking in delegating to Clojure the database records manipulation, while still letting the RoR frontend, have it's independent connection to the DB in a read-only fashion, for managing session logins. Is this encapsulation violation an atrocious idea? Should all interactions be abstracted into the messaging framework? Does anyone know of any opensource project which has this kind of model? It would be very illustrative to look at how people have actually implemented it. On Monday, September 9, 2013 11:14:54 AM UTC-5, Jim Crossley wrote: Hi Rodrigo, I'm one of the developers of TorqueBox and Immutant. Your email prompted me to re-watch a screencast [1] I made in March showing how to use them together. I realized things have changed a little since then, so I added a few annotations to the video highlighting the differences. Hopefully enough to get you up and experimenting. As you've probably figured out, both TorqueBox and Immutant are integrated stacks, bundling some commodity services that most non-trivial applications need, e.g. scheduling, caching, and messaging. The intent of any integrated platform is to relieve administration burden. But that only works for you if the inherent choices within that stack fit the needs of your app. We think/hope default Immutant configuration and abstractions (e.g. queues, topics, request/respond) offers a good balance to fit a wide variety of apps. If simple integration between Ruby and Clojure apps is your chief goal, I think Immutant/TorqueBox is compelling, but I'm biased. I would definitely recommend using some sort of messaging broker, though, i.e. don't mix Clojure and Ruby in the same source file or project. Performance and security concerns are so application-specific I hate to make any generic statements about them other than, be fast and secure. ;-) But do feel free to bother us in #torquebox or #immutant on freenode with any questions about your particular app/needs. Thanks, Jim [1] http://immutant.org/news/2013/03/07/overlay-screencast/ On Sun, Sep 8, 2013 at 10:25 PM, rdelcueto rdel...@gmail.comjavascript: wrote: Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the
Clojure Jruby (Ruby on Rails) Interop
Hi everyone, I'm about to start working on building a site for a startup company. We are a small team, and currently they've been coding the site using RoR (Ruby on Rails). I was thinking Clojure might be better suited for the task, specially because we'll need to implement a backend which is robust, scalable and secure, but also we'll need flexibility, which I think the RoR framework won't shine at all. At our team, we are two coders, non of us are proficient in Web Developing, and we have little experience with RoR, and I thought (I'm sure) maybe investing time learning Clojure will provide us with better tools. PROBLEM/QUESTION While searching for alternative solutions, I stumbled upon the Flightcaster case, we're they are using RoR to implement the site's frontend and Clojure for the system backend. I thought this was a very elegant solution, using each tool for what it's good at. Plus this way we can reuse what they've already implemented. I found a way to do this is by using Torquebox and Immutant, and using the messaging systems to communicate between Jruby and Clojure. Still I have no idea of how this works, and the performance and security implications it brings to the table. I found little information on the subject. I would appreciate if anyone could provide guidance, examples or documentation on the subject. Any reference to open source projects which use this hybrid language solutions on the JVM would be great to have. Is this the best way to solve the RoR interactions? Is there any other way? Thanks in advance and best regards, Rodrigo -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.