A Mega Ruby News and Release Roundup for July 2012 in 97 Links
Welcome to the bumper pick'n'mix of Ruby and Rails news and releases for July 2012, fresh from the pages of Ruby Weekly (now at 15,400 subscribers - give it a look).
Highlights include: Rails 3.2.7, Phusion Passenger Enterprise, RubyMine 4.5, O'Reilly's "Learning Rails 3", GitHub's funding, and Rails 4.0's live streaming support.
Phusion Passenger Enterprise Released
The chaps at Phusion have unveiled their latest release: Passenger Enterprise. Passenger is a popular Apache and Nginx module for deploying Ruby webapps and the 'Enterprise' variant includes rolling restarts, a live IRB console, and more.
Rails 3.2.7 Released
Contains an important security fix for apps using digest authentication from Action Pack. But 3.2.8 is just around the corner..
Phusion Shares A Sneak Peek of the Phusion Passenger 4.0 Roadmap
After a period of radio silence, the Phusion guys are back on the air! With their Passenger system being the most popular way to serve up Ruby apps, all eyes are on the forthcoming Passenger 4.0 and here they explain some of what's coming up.
Edge Ruby/Ruby 2.0 Adds %i and %I To Notate An Array of Symbols
As %w and %W notates a string into an array of words, %i and %I does the same but into an array of symbols. Coming to an MRI near you.. eventually. Why not %s and %S? They're already taken. In this case, the 'i' stands for intern/interned.
Now In Print: 'Deploying Rails' by Tom Copeland and Tony Burns
Make sure your next production deployment goes smoothly with this hands-on book, which guides you through the entire production process. Dives into Puppet, Capistrano, Vagrant, Nagios, Ganglia, and all that sort of devops-y stuff.
RubyMine 4.5 Released: JetBrains' Commercial Ruby IDE
RubyMine 4.5 introduces suport for formatting and code insight for Slim and Sass, MacRuby syntax highlighting, Capistrano deployment support, extra Sinatra integration, and more. It's a commercial IDE but the one I've heard the most good things about.
GitHub Takes $100m of Funding
The Ruby world celebrates its latest home grown business success, GitHub, who this week announced they've received $100m in funding from Andreessen Horowitz. Will every Rubyist eventually work there? Watch this space.
Code Climate (Metrics Service) Is Now Free for Open Source Projects
Code Climate is a hosted software metrics tool for Ruby apps and it's now available to use for free on public open source projects.
RSpec 2.11 Released
The popular BDD framework takes another step up the version ladder with 2.11. It supports the new 'named subject' syntax, you can stub constants for the duration of an example, and on Rails specs now run in a random order by default. And more, naturally.
O'Reilly's 'Learning Rails 3' Now in Print
Learning Rails 3 by Simon St. Laurent, Edd Dumbill, and Eric J Gruber takes an interesting 'outside in' approach to teaching Rails, well suited for front end developers looking to make the leap. There's a free sampler PDF you can check out.
Is It Live? Rails 4.0 To Get 'Live Streaming' Support
Rails 4.0 will be getting real-time data streaming support as it's just been baked into rails-edge. Aaron Patterson shows it off in this post (yep, you can play with it now!)
Florian Hanke Benchmarks Unicorn, Thin and Ricer
In trying to make his Picky semantic search engine tool faster, Florian Hanke has tried to find the fastest Ruby Web daemon for his uses.
Getting Your Heart Rate Using R and Ruby
A fun post looking at marrying up R and Ruby to tell your heart rate from a small bit of video.
Ruby Constructs: Classes, Modules and Mixins
LivingSocial's Matt Aimonetti clears up some concepts and misconceptions around classes, modules and mixins and how you should or shouldn't use them.
Your First Ruby Native Extension: C
A quick how-to from someone who admittedly 'knows barely any C or Java' that explains how to wire up some simple C code into a native Ruby extension ready for building a gem.
Objects, Classes and Modules
The latest excerpt from Pat Shaughnessy's forthcoming 'Ruby Under A Microscope' book. This time he looks at how MRI Ruby implements and stores objects and classes internally.
The Hitchhiker's Guide to Riding a Mountain Lion
Apple's latest operating system dropped yesterday and Prem Sichanugrist of Thoughtbot shares some insights into the upgrade process for Rubyists.
Building An API for Fun With Grape
Grape is an API-oriented Rack-based microframework for building HTTP accessible APIs. It's been around a while but this post gives a quick introduction.
Tell, Don't Ask (with Ruby Objects)
Bad for your relationships but good object oriented programming advice. Ben Orenstein shows off some quick before and after examples of telling your objects what to do rather than querying them to make decisions.
Rails, Objects, Tests, and Other Useful Things
Noel Rappin reflects on the various 'Object-Oriented Rails' and 'fast tests' discussions going around the Ruby world as of late.
Why I Don't Like factory_girl
This post won't be without controversy but Steve Klabnik outlines why he thinks the convenience of factories has 'set Rails testing strategies and software design back two years.' Worth a read even if you disagree.
Advanced Caching in Rails: Revised (for 2012)
Adam Hawkins has recently updated his series of Rails caching posts. It aims to teach you everything you need to know to work with any different caching level inside your Rails app.
Zendesk's Road to Ruby 1.9
Zendesk is a popular help desk app and their dev team explains how their Ruby 1.9 upgrade project went. The end result? A 2-3x improvement in response time for their app.
Processing Images with CarrierWave
An entry level tutorial to managing uploaded files in a Rails app using CarrierWave.
Four Guidelines That I Feel Have Improved My Code
GitHub's John Nunemaker riffs on some interesting ideas he's brought into his Ruby development practices including the single responsibility principle, sensible interface design and high/low testing.
Streaming Zlib Processing for Ruby (in Ruby Core/2.0)
Eric Hodel has checked in a patch that adds streaming zlib processing to Ruby core. Why's this a big deal? For starters, significant memory savings when compressing large files.
Arel's 'merge' Method: A Hidden Gem
Arel is the beautiful relational algebra library that works alongside ActiveRecord in Rails 3 to let you do complex queries easily. Ben Hoskings shows off an interesting method Arel makes available to merge query conditions together.
Case Study: Using Ruby Tools for Non-Ruby Projects
A look at using Ruby tools (like Bundler and Guard) to automate common Web development workflows.
Don't Make Your Code 'More Testable'
Gregory Moeck reflects on the mocking and OO design trends in the Ruby world and proposes a way forward to think about the 'testability' of our code (or not, as the case may be).
RubyMotion Tutorials: A Resource Site
A simple resources site aiming to collect together links relevant to learning or working with RubyMotion.
How Can I Contribute to Ruby On Rails?
Steve Klabnik, now a memeber of the Rails Issue Team, shares some quite insights and FAQs into the process of contributing ideas, source, or documentation to Rails.
Functional View and Controller Testing with RubyMotion
RubyMotion (the Ruby toolkit for building iOS apps) now features a new testing layer that lets you write functional specifications for the views and controllers of your apps.
My Favorite Bundler Feature
Jerod Santo loves being able to crack open his gems.
The History of Ruby in Version Numbers
A simple GitHub gist showing what versions of MRI Ruby were released when.
Watching and Listening
Active Record Deep Dive (in 11 Short Videos)
Richard Schneeman explains ActiveRecord's query interface in several short screencasts. You're bound to pick something up.
Using MiniProfiler with Rails (RailsCasts)
MiniProfiler allows you to see the speed of a request conveniently on the page. Ryan Bates shows off its usage with Rails.
Making a Rails App Fast and Scalable
Slide deck for a talk given by Richard Schneeman on making a Rails App fast and scalable.
PeepCode's Rails 3 Play by Play with Yehuda Katz
PeepCode has released the latest in their 'look over a developer's shoulder' screencast series, this time focusing on Yehuda Katz (of Rails 3 fame). In an 80 minute session, he builds the backend for a scoring system using Rails 3.
Five Things You Didn't Know Your Documentation Tool Could Do
Loren Segal, the creator of Ruby documentation tool YARD, looks at some of YARD's lesser known features and shows off ways to visualize your code, get basic code metrics, and ensure overall quality in your documentation.
The Well Grounded Nuby
At Boston Ruby Group recently, David A Black (of Well Grounded Rubyist fame) gave a talk about getting the fundamentals of Ruby right.
Sidekiq allows you to move jobs into the background for asynchronous processing. It uses threads instead of forks so it's more memory efficient than, say, Resque.
Your Face in 10 Minutes... with MacRuby!
At GoRuCo 2012, Haris Amin gave a 10 minute lightning talk about creating a desktop Mac face detection/recognition app with MacRuby. Links to code, slides, and the Vimeo video within.
An ActiveRecord-Based Reputation System (RailsCasts)
If you need to calculate an average user's rating or sum up a number of votes, consider using the 'activerecord-reputation-system' gem. Here Ryan Bates covers the basics and presents a from-scratch solution.
Libraries and Code
Synack: Send Messages to OS X Mountain Lion's Notification Center
A client/server wrapper for terminal-notifier that allows arbitrary messages to be sent to OS X 10.8's Notification Center.
Ricer: Fast Rack-Compliant Ruby Web Server Written in C
Unfortunately named but claims to be faster than Thin and Unicorn.
TwitterCLDR: Improving Internationalization Support in Ruby
Twitter's engineering team has released a library that uses Unicode's Common Locale Data Repository (CLDR) to format certain types of text into their localized equivalents. Currently supported types of text include dates, times, currencies, decimals, percentages, and symbols.
Clean Tests: Sugar for Making Test::Unit Tests Clearer
Dave Copeland's Clean Tests aims to bring clarity to Test::Unit tests and provides a Given/When/Then structure for clarifying intent.
Brakeman 1.7.0 Released: The Rails Security Scanner
Adds support for a recent HTTP digest auth vulnerability and includes numerous improvements.
RLTK: Ruby Language Toolkit
A collection of classes and methods designed to help programmers work with languages in an easy to use and straightforward manner. Includes generators for lexers and parsers, LLVM bindings, and more.
Graphene: Stats and Graphs From Collections Of Ruby Objects
A new Ruby gem for transforming collections of Ruby objects into subtotals, percentages, tables and graphs.
Stamp: Format Dates and Times Using Human-Readable Examples
Sick of arcane strftime formatting? Give Stamp an 'example' of a date format you want and it'll dish up a similar date or time for you. Not new but somehow I missed it till now!
csv_shaper: DSL for Creating CSV Output
CSV Shaper claims to make the painful world of CSV rendering and formatting easier. Supports both pure Ruby and Rails.
Sex Machine: Get Gender from First Name
This unfortunately named gem leans on a open source name-to-gender tool to give similar functionality to Rubyists.
classy_enum: Class Based Enumerator Gem for Rails
Adds class-based enumerator functionality to ActiveRecord attributes.
Rubyception: A Realtime Rails Log in Your Browser
Add Rubyception to your Rails project, navigate to /rubyception and get WebSocket-powered live log updates.
Axlsx: Office Open XML Spreadsheet Generation Library
Complete xlsx generation with support for charts, images, automated column width, customizable styles and full schema validation.
Announcing minitest-rails: Extra MiniTest Support for Rails
minitest-rails is a library that enables you to test your Rails 3 apps using minitest, the testing framework that comes in the Ruby 1.9 standard library. Documentation and a short introductory screencast included.
webmachine-ruby 1.0 Released
webmachine-ruby is a Ruby port of Erlang's Webmachine which lets Rubyists expose interesting parts of the HTTP protocol to their applications in a declarative way. Don't understand? Check the examples.
Jim Weirich's Approach to 'Programming with Nothing'
1800 lines of a cold and lonely place. Intense.
Senior Software Engineer (Ruby) at FreeAgent [Edinburgh, Scotland]
FreeAgent are looking for a talented and passionate software engineer to join their engineering team in a senior capacity to work on their popular online accounting software.
Software Engineer at Webdoc SA [Switzerland]
Happy (Ruby) Web Developer (London, UK)
We sell expensive stuff to investment bankers. We run on Ruby. We enjoy using the best tools and technologies available. If you want to be a happy programmer (and join us on our summer trip to Ibiza), get started by solving our quiz.
Senior Ruby on Rails Developer (Cologne, Germany)
"Ich will nicht nach Berlin!"- simfy cologne is looking for talented Ruby on Rails backend developers. You feel at home with large Rails enterprise applications? Join simfy - one of the world's leading music streaming services - and put our visions to life.
Senior Ruby Developer (Cambridge, MA)
Litmus, the e-mail testing and analytics company, offers a great salary, full health care benefits, 28 days paid vacation, beer fridge and Sonos sound system. They'll also buy you lunch every day.
Last but not least..
AdhearsionConf Returns for 2012: CFP Now Open
Billing itself as the 'conference at the Intersection Of Ruby and Voice', the AdhearsionConf organizers have announced the conference will be back on October 20-21 in Palo Alto. No registration yet but the call for presentations is now open.
MiniProfiler: A New Profiler for Ruby
MiniProfiler is a production and development profiler that you can use to quickly isolate performance bottlenecks, both on the server and client. This post demonstrates how it works.
Writing FizzBuzz Without Modulus Division
Upon a request by JEG2, some Rubyists had a go at solving the old FizzBuzz problem without doing modulus division. This entry by Magnus Holm is a real mindbender and leans heavily on flip flops.