InfoQ

Interview

James Adam on Rails Engines and Ruby in the Enterprise

Interview with Dr. James Adam on Apr 19, 2007 03:27 AM

Community
Ruby
Topics
Ruby on Rails
Tags
Rails Engines,
Rails Plugins,
Enterprisey
Summary
Dr. JamesAdam has been an active member of the Ruby community for more than four years, contributing to a number of projects including the FXRuby GUI toolkit and the Ruby-OpenGL bindings. InfoQ interviews James about his pioneering work with Rails Engines, the Rails plugin system and what it's like to be doing heavy Ruby development in enterprise settings.

Bio
Dr. JamesAdam has been an active member of the Ruby community for more than four years, contributing to a number of projects such as the FXRuby GUI toolkit and the Ruby-OpenGL bindings. He is a Rails early-adopter and contributor, working with the plugin system since its inception. He has spoken at both conferences and user groups about using Rails plugins for effective team development.
We are here with James Adam and he just gave a talk about his claim to fame. Can you introduce yourself and let us know what you are working on?
What are Rails Engines?
What problems in Rails do Rails engines solve for you?
DHH has gone on the record to say re-use is overrated and that he hates components. Are you causing a schism in the Rails community?
What are some other examples? You mentioned reporting
Are these hosted applications that you are talking about? Are you talking about developing multiple individual small hosted applications or are these hosted at your facility and you are re-using this functionality within one system?
Wouldn't that be the way to go to maximize the efforts and basically figure out the best way to do all the aspects of your business for all the clients? Why did you choose a different approach?
Let's get into the nitty-gritty for a second. Do you use Subversion?
Do you have extra repositories for your Engines or do you basically put everything in one big repository?
If you are going with an engine approach to be able to do what you are saying in terms of using the same functionality, for many different clients, how do you handle the versioning and how do you handle upgrades of the engines and rolling those into your live applications that use them?
Do you handle responsibilities for fixes and upgrades to the engines with one developer owning an engine or is it shared team ownership of the engines?
How did you go about determining the parts of these applications that you were going to need to abstract out into their own reusable engines?
Let's say you encounter a situation where something that you are using an engine for to provide a narrow size functionality in an application. It turns out that you actually need to do this in a more client specific way, or a more specialized way, do you have to stop using the engine at that point and roll it into the application functionality? Or do you extend the engine in some way?
How do you go about determining where the boundary is?
Let's take an example: you said graphing of some sort is a reusable component.
This sounds like a pretty serious enterprise development that you are doing, even though it's a small team. Can you share a little bit of insight as to how your team decided to go with Rails as their technical solution?
And you have actually put Rails system into production?
What kind of reactions do you encounter from other members of your community? Local London Java people, other folks that you interact with that find out that you are doing real enterprise development in Rails?
You mentioned that you were a Java developer for some years.
And you stayed away from the web?
You actually have some very advanced computer science knowledge. Have you been able to bring it to bear in any way?
It sounds like you appreciate how little factors lead to the macro success levels?
Did Rail strike you as a sort of example of that?
It's been great talking to you!
show all  show all

No comments

Reply

Exclusive Content

Rationalizing the Presentation Tier

Thin client paradigm characterized by web applications is a kludge that needs to be repudiated. Old compromises are no longer needed and it's time to move the presentation tier to where it belongs.

Agile Project Management: Lessons Learned at Google

In this presentation filmed during QCon 2007, Jeff Sutherland, the creator of Scrum, talks about his visit at Google to do an analysis of Google's first implementation of Scrum.

AtomServer – The Power of Publishing for Data Distribution

In this article, Bryon Jacob and Chris Berry introduce AtomServer, their implementation of a full-fledged Atom Store based on Apache Abdera, which is now available as open source.

An Introduction to Virtualization

It is easy to think that virtualization applies only to servers. In reality the recent resurgence of the concept is also being applied to networking, storage, and application infrastructure.

REST Anti-Patterns

In this article, Stefan Tilkov explains some of the most common anti-patterns found in applications that claim to follow a "RESTful" design and suggests ways to avoid them.

Choosing between Routing and Orchestration in an ESB

In this article, Adrien Louis and Marc Dutoo discuss the differences and relative merits of using orchestration vs. routing in a typical ESB setup, and discuss various implementation options.

Enterprise Batch Processing with Spring

Wayne Lund discusses batch processing, Spring Batch objectives and features, scenarios for usage, Spring Batch architecture, scaling, example code, failures and retrying, and the future roadmap.

User Story Estimation Techniques

Developer Jay Fields draws on his experiences as a ThoughtWorks consultant to describe effective user story estimation techniques.