Ruby off the rails

Viewed 9387

Sometimes it feels that my company is the only company in the world using Ruby but not Ruby on Rails, to the point that Rails has almost become synonymous with Ruby.

I'm sure this isn't really true, but it'd be fun to hear some stories about non-Rails Ruby usage out there.

38 Answers

One of the huge benefits of Ruby is the ability to create DSLs very easily. Ruby allows you to create "business rules" in a natural language way that is usually easy enough for a business analyst to use. Many Ruby apps outside of web development exist for this purpose.

I highly recommend Googling "ruby dsl" for some excellent reading, but I would like to leave you with one post in particular. Russ Olsen wrote a two part blog post on DSLs. I saw him give a presentation on DSLs and it was very good. I highly recommend reading these posts.

I also found this excellent presentation on Ruby DSLs by Obie Fernandez. Highly recommended reading!

I use Ruby extensively in my work, and none of it is Rails (or even web) based.

My domain is usually client-side Windows applications (wxRuby GUI) and scripts, automating Excel, Internet Explorer, SQL Server queries and report generation (win32ole COM automation). I also use the sqlite, pdf-writer, and gruff libraries for various data munging and graph generation tasks.

Rails' success has been great for Ruby, but I agree that Rails has received so much attention that Ruby's value beyond the web is often overlooked.

We are mainly a C++ shop, but we've found several areas where Ruby has proven quite useful. Here are a few:

  • Code Generation - Built several DSLs to generate C++/Java/C# code from single input files
  • Build Support
    • scripts to generate Makefiles for unix from Visual Studio Project Files
    • scripts for building projects and formatting the output for Cruise Control
    • scripts for running our unit tests and formatting the output for Cruise Control
    • scripts for manipulating Visual Studio projects and solutions from the command line
  • Integration Tests - We can crank out tests much quicker and cleaner using Ruby than C++
  • QA's entire testing suite is written in Ruby

Ruby is basically my go to tool for where it makes sense. And it makes sense in a lot of places.

Google Sketchup uses Ruby as an embedded scripting language. You can use it to perform all sorts of 3d modeling and import/export tasks. The scripting works with the free version and there's even decent documentation.

Ruby with a homebrew extension written in C++ does all the heavy pixel pushing for my photography processing. I was using Python+numpy but when doing artsy stuff, Ruby is just more fun. Also the relative lack of, or lesser maturity of, good image processing libraries makes me feel less like i'm reinventing wheels. I am clueless about Rails, other than i've heard of it, have a fuzzy idea what it is, and actually have a book on it (unopened)

We use Watir (Ruby library) to test our .net web application.

Check out Shoes, a simple API for building GUIs in Ruby aimed at novice programmers.

RubyCocoa and MacRuby. Possible to make full Cocoa-based GUI apps without Rails. And then you get to use Interface Builder, too.

I worked on a museum project last year that used a lot of Ruby. (http://http://ourspace.tepapa.com/home)

The part that I spent most of my time on was an interactive floor map. The Map on the floor has sensors so when people walk on it lights are triggered and displays in the wall show images or videos and audio tracks are played.

All the control code for this part of the exhibit is ruby. I wrote C interfaces with ruby wrappers to communicate with the floor sensors and the lighting controllers. The system queries a MYSQL database for the media files to be displayed and then tells computers in the walls to play the media via UDP.

It's the most reliable part of the entire exhibit.

Ruby was used for the other major part of the exhibit, the Wall though I didn't have much to do with that. Most of the graphics were prototyped in ruby using interfaces to OpenGL, a bit of Cocoa and a physics library before being ported to pure Obj-C.

The only site I've done with Ruby at work is using Rails, but I'd like to try Merb.

Other than that I do a lot of little utility programs in Ruby - for instance an app that reads RSS feeds and imports new posts into a dabase.

It's fun, so I also write some dumb stuff just because it's so quick. Yesterday I wrote an app to play the Monty Hall problem 100,000 times to help a friend convince her professor that switching is the correct strategy.

I created a presentation -- coincidentally named Off The Rails -- to discuss Rack-based web applications:

https://github.com/alexch/Off-The-Rails

The git repo includes slides in Markdown format and sample code (in the form of running applications and middleware). Here's the abstract:

Ruby on Rails is the most popular web application framework for Ruby. But it's not the only one! If you think Rails is too big, or too opinionated, or too anything, you might be happy to learn about the new generation of so-called microframeworks built on Rack. And since Rails 3 is itself a Rack app, you don't have to give up Rails to get the benefit of Sinatra routes or Grape APIs.

And here are some references:

Hope you find it useful!

We mainly use rails, but we have plenty of other non-rails ruby things - for example a standalone authentication daemon thing for centralized authentication of users, and an 'image processing server' which runs arbitrary numbers of ruby processes to process images in parallel.

Oh, and don't forget good old Rake :-)

Ruby is also used for Desktop application. Especially the use of JRuby to develop Swing desktop application.

I've used Ruby at work for

  • A data extractor, generating csv files from binary output.
  • A .ini file generator, turning a simple syntax into a repetitive .ini format.
  • A simple TCP/IP server, acting as stand-in for the customer's system during testing.

We use Ruby to implement our test automation software. This includes test framework and driver code for Selenium RC, WATIR and AutoIT.

Ruby is powerful enough to create comprehensive applications that can interface with Test tools like Selenium or WATIR, while at the same time reading from data files, interacting with a remote Windows UI and performing near transparent network communication. All while running on Windows or Linux.

The uncluttered syntax makes it ideal for new and inexperienced programmers to read. While its totally OO nature makes it easy for these same programmers to apply good (recently learned) OO techniques, from the start.

The flexible nature of Ruby's syntax also makes the use and creation of DSLs much easier. This allows less-technical people to get invovled, read and possibly create there own tests.

I have used Ruby for code generation of C# and T-SQL stored procedures in a project with unstable requirements. The data model was encoded in a YAML file and .erb templates were used for the classes and stored procedures. It also allowed for a much more DRY solution than would have been possible with straight C# as repetitve code could be factored out into a single method in the code generator.

Where I work, we use Ruby to do a number of different one-off type batch jobs. One example of that is a job that interacts with Amazon's S3 service. At the time, the Ruby S3 library was probably the easiest one out there for us to get up and running in a short amount of time.

I wrote an order processing expert system (see DSL answer as well), converted 100k lines of customer specific perl into about 10k lines of ruby handling dozens of customers. No web components at all, no Rails.

We use some Ruby for file manipulation but have not been able to incorporate rails yet.

I've used Ruby a lot professionally for quick scripts for things like shuffling files around. I'm the same way in that I was using Ruby first before touching Rails at all.

In Boulder there was an excellent group of Ruby users who met monthly. This point was made - that Ruby does have an existence beside its use in Rails. Plain Ruby users do exist, are begging for attention, have neat things to show, and can find each other at user group meetings.

They also had better pizza than the Python group, who met also the same day of the month. Can only pick one...

While we do have several Rails apps at work, we also use Ruby for some fairly intensive non-web stuff.

We've got an SMS delivery daemon, which pulls messages from a queue and then delivers them, and credit card processing daemon which other apps can call out to, which makes sure there's a central audit trail.

I myself use both ruby on its own and combined with the framework rails. I made a ruby application which daily pulls all the highscores from a website and puts it in a mysql database. It is sofar the first and only application i made in ruby on it's own i made

I use Rails a lot at work, but for smaller applications or simple REST-based services I tend to use Sinatra. I'm also writing text-adventure game in Ruby for fun.

At work I do all my scripting for Windows with Ruby. Thanks to that I can say bye bye to Dos script

Other than Rails I've been using ruby extensively in the following small/medium projects:

  1. In large hierarchical text file parsing (to some extent similar to YAML structure)
  2. Specialized small range web-spiders.
  3. Three Sinatra apps.

I haven't done any non-Rails Ruby web dev, but all of my Project Euler solutions are in Ruby, as well as some other small projects, like my IRC bot.

Does part of Rails count? We've used Ruby for an ETL application and plugged in ActiveRecord just for its model validations.

Related