InfoQ

Interview

Jim Weirich Discusses Rake, the Ruby Make Tool

Interview with Jim Weirich by Werner Schuster on Apr 17, 2008 03:12 AM

Community
Ruby
Topics
Build systems ,
Domain Specific Languages
Tags
Rake ,
Mocks
Summary
Jim Weirich, is the Chief Scientist for EdgeCase LLC and thecreator of rake, the popular make-like build tool written in Ruby. In this interview with InfoQ, Jim disccusses the birth of rake, Domain Specific Languages, and flexmock, his mocking library.

Bio
Jim Weirich is the Chief Scientist for EdgeCase LLC, and is the creator of rake, the popular make-like build tool written in Ruby. Jim is very active in the Ruby community, presenting at many conferences and contributing to open source projects such as RubyGems. Jim blogs at http://onestepback.
We are here at RubyConf 2007, we are here with Jim Weirich. Jim why don't we start out with maybe can you introduce yourself, of course you are very popular but still for some watchers who don't know you.
That's good. And you have added a lot to the Ruby community with your Rake tool. Could you thoroughly explain what Rake does?
Rake has become pretty standard in the Ruby community now.
Was it the first big use?
So it has become quite important, so important that it is actually considered for inclusion in Ruby 1.9. Can you describe what kind of process you are going through with that, if you have to do any changes for it?
Which version is Rake now at?
So is Rake 1.0 going to coincide with the inclusion in Ruby 1.9?
What can we look forward in Rake 1.0, what new features?
Any other big features in 1.0?
Rake is one of the big examples for one of the strengths for Ruby, building Domain Specific Languages. It has been quoted and used by Martin Fowler as a big example for embedded Domain Specific Languages. Domain Specific Languages hype has been going on for some years. What's your point, what's your view on that?
So basically you are thinking that the domain is something that a user or business user should see?
It's just a specific language.
This is the first occurrence of this term? PSL?
So what would be a cut of point where, you said you had to have a range?
You also provided the Builder library, first of all would you consider the Builder library to be a DSL or?
Would it be better to call it meta-programming, use the term meta-programming for that? Or is that specific in another way?
Talking about Builder, for Builder you faced some problems with using method, method missing. What was the solution to that?
So which objects, which methods still remain in the blank slate objects?
Talking about your projects, you mentioned Flexmock. What's Flexmock?
What would be a quick explanation of the mocking concept? What does Flexmock provide?
So mocking is one of the concepts that is used in Test Driven Development or maybe Behavior Driven Development, is that it?
Can you say anything about BDD, Behavior Driven Development, another acronym? What's the crucial difference?
Did you use TDD and BDD simultaneously? Do you use Test Unit and RSpec or you just use Rspec?
You used both of them at the same project?
So BDD removes the word test so people don't confuse it with functional testing?
So to wrap this up, you also published a library for the X10 system?
What is X10 just to explain?
And your library did what exactly?
And I understand that, as a good TDD person, you used that for automation?
It's very useful to annoy developers to fix their code.
Really?
show all  show all

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.