This Month in Ruby: PeepCode Acquired, Rails 3.2.14, And More

Welcome to a roundup of Ruby news, articles, videos, and more, for July 2013 cobbled together from my e-mail newsletter, Ruby Weekly.

Highlights include: PeepCode acquired by Pluralsight, Practicing Ruby archives made public, Rails 3.2.14, and an interesting interview with Matz.

Featured

The First Four Volumes of Practicing Ruby, Now Available Online
Practicing Ruby is a high quality, paid Ruby journal run by Gregory Brown, but he’s made archives of over 60 articles available to the public. There’s a ton of stuff to enjoy here.

PeepCode Acquired by Pluralsight
Ruby and Rails screencasting pioneer Geoffrey Grosenbach has announced he has sold Peepcode to Pluralsight, a large online training provider.

The Plan for RSpec 3
RSpec 2.0 was released in October 2010 and RSpec 2.14 will be the last RSpec 2 feature release. Work on RSpec 3 has begun and Myron Marston shares what’s going to be involved.

Rails 3.2.14 RC1 and RC2 Released
A variety of bug fixes for Rails 3.2 arrived in 3.2.14 RC1 with one minor regression fixed in RC2. Final due soon.

The Future of Computing – An Interview with Matz
Last year, Ruby’s creator Yukihiro ‘Matz’ Matsumoto released a book called The Future of Computing (only in Japanese, I believe) and did an interview with a Chinese publisher. Fred Wu has translated it into English.

RSpec 2.14 Released
Myron Marston unveils the last 2.x feature release of the popular spec framework and announces work is well underway for the future RSpec 3. 2.14 includes a new feature called ‘spies’ which is shown off here.

Functional Programming and Ruby
At GoRuCo 2013, Pat Shaughnessy gave a 40 minute talk comparing Haskell (a functional language) to Ruby and looked at how to implement common functional patterns in Ruby. Well explained and backed by good slides.

Reading

Streaming with Rails 4
Saurabh Bhatia looks at Rails 4’s support for live streaming (the ability to send partial requests out to the client on the fly).

Reading the Ruby Source to Understand Rails Idiosyncrasies
I’m not sure you always need to dig quite so deep but Eno Compton takes an interesting journey through MRI’s source code to see the difference between Range#cover? and Range#include?

Speed Up Heroku Deploys
Alex MacCaw was suffering from slow deploys to Heroku but he found a workaround.

Shoes 4 – A Progress Report
Shoes was a graphical toolkit put together by Why the Lucky Stiff that made it simple to create GUI apps in Ruby. Since Why disappeared, others have picked up work on it, and Shoes 4 is set to be a complete rewrite.

Put Yourself on Rails with A Push of A Button
A technique for quickly bringing up a workspace for doing Rails work (including terminals, a Rails console, a Rails server, etc.)

Multitenancy with Rails: An E-book by Ryan Bigg
Ryan Bigg, of Rails in Action fame, is writing an e-book about building a multi-tenanted Rails app.

Incremental Redesign with Rails
Lars Klevan shows how to use prepend_view_path to make in-progress redesigns on a production codebase simpler.

How to Declutter Your ‘lib’ Directory
If you have an established Rails project, its ‘lib’ folder might be getting a little full. Kuba Suder looks at ways to clean it up and put things elsewhere.

Design Patterns: The Template Method Pattern
An introductory Ruby-oriented look at arguably the simplest design pattern.

Object Oriented Rails: Writing Better Controllers
Damien Le Berrigaud of Pivotal Labs tries to avoid stubs and mocks and leans on dependency injection to test his controllers’ code.

Vimscript And You
HashRocket’s Jonathan Jackson demonstrates how you can use RSpec against Vim to aid in the development of a Vim plugin with Vimscript.

MotionPhrase: Next Level Localization for RubyMotion Applications
PhraseApp is a translation management tool for producing multilingual Web sites, Rails apps, etc, but it also works for localizing RubyMotion apps too, as demonstrated here.

Ruby’s Eigenclasses Demystified
Andrea Singh looks at Ruby’s quirky ‘eigenclasses’ (a.k.a. metaclasses) and explains things in both code and diagrams. Dates from 2011 but worth revisiting.

The Self-Pipe Trick Explained
Jesse Storimer shows off a cute Unix trick/technique in Ruby.

Practical RSpec Wrapping
Why would you want to use around hooks in RSpec? Dru Riley explains.

Using PostgreSQL’s ‘hstore’ in A Rails Application on Engine Yard Cloud
If you want to take advantage of schemaless features without abandoning your relational database, using ‘hstore’ within Postgres is a great option. Here’s an introduction on using the hstore PostgreSQL extension in a Rails app.

Implementing Subdomain and Custom Domain Support in Rails
A look at how one development team implement subdomain and custom domain features in their Rails app.

Events

dotRB: The Largest Ruby Conference in France (October 18, Paris)
Following on from a successful ‘dotJS’ JavaScript event comes dotRB. Announced speakers so far include Steve Klabnik, Konstantin Haase, and Brian Ford.

Watching

11 Talks from La Conf Paris
Some big names to enjoy here including Yehuda Katz, Amy Hoy, Sandi Metz, and Steve Klabnik.

Deathmatch: Bundler vs Rubygems.org
At GoRuCo 2013, Andre Arko told the story of the quest to make ‘bundle install’ faster.

How to Set Up RSpec
A well produced 6 minute screencast.

To Know A Garbage Collector
Mike Bernstein discusses his experiments with MRI Ruby’s garbage collector, his investigations into other languages and the influence of their GC implementations, the history of the subject, and more.

Kata and Analysis with Jim Weirich
From RubyConf India 2013 comes a live coding session by the inimitable Jim Weirich where he walks through the popular ‘roman numeral’ conversion kata using TDD along the way.

Aaron ‘tenderlove’ Patterson’s RubyConf India 2013 Keynote
An hour with Ruby and Rails core contributor Aaron ‘tenderlove’ Patterson covering esoteric Ruby stuff and Postgres to career advice and cats. Warning: The audio is rather poor here and cuts out entirely for the second half so don’t waste your time if this will drive you crazy.

5 Minutes of EuRuKo 2013
European Ruby conference (EuRuKo) took place in Athens last month and Clemens Helm has put together a 5 minute collection of clips and insights from the event. Includes Matz, Xavier Noria, Benjamin Smith, Pat Shaughnessy and Steve Klabnik.

Nokogiri: History and Future
Nokogiri is the most popular way to parse and process XML in Ruby and at GoRuCo 2013, Mike Dalessio gave a short 11 minute talk on the origins of the project, how to determine if it suits you, and looks at some of the tooling around it.

Libraries, Code and Tools

Upton: A Web Scraping Framework
A Ruby-based web-scraping framework that abstracts away the common parts of web scraping so developers can concentrate on the unique parts of their project.

LanguageFilter: Detect and Optionally Filter Multiple Categories of Language
Wave goodbye to sex, hatred, profanity, violence, etc, in your app.

Lita: A Ruby Chat Bot with Redis-based Storage
Can be twisted to work with any chat service and extended with plugins.

Pkgr: Make A Debian Package Out of A Rails App in 5 Minutes
A high-level tool that turns Rails applications into native Debian packages.

Flynn – Open Source Platform As A Service, Powered by Docker
Flynn is an as-yet-unreleased Heroku-inspired system to simplify deploying and maintaining apps. Instead of using complex config management systems, Flynn allows self-serve management of containerized deployments. The creator is currently trying to raise money to work on the project.

Jobs

Software Craftsperson at Bendyworks
If you’re the type of person who learns new languages as a matter of course, contributes to open source for fun, and ships code with a calm and collected professionalism: you seem like our kind of developer. Join our world-class team in Madison, Wisconsin.

Senior backend- / API-developer at Rabble (Stockholm, Sweden)
Tired of bullshit ads? Help us develop Sweden’s leading app for mobile offers, where customers and businesses meet on equal terms! Join us in the heart of Stockholm to play with geospatial data and Ruby API’s all day long!

Ruby on Rails developer at SupaDupa (London, UK)
We’re looking for an experienced Ruby on Rails developer to join the small team behind SupaDupa.me, an e-commerce platform aimed at creatives. Excited about the challenge of working on the full stack, from front-end dev to system administration? Get in touch!

Ruby Programmer: IT and System Automation
Want to change the future of education? We are trying to build an awesome team that enjoys challenges and results. Interested? Come work with us in beautiful Switzerland.

Ruby Developers at HouseTrip (London, UK)
Want to work with a 18-person team of passionate Ruby developers who love good code and care for their product in central London? We are currently hiring. Ranked by Wired Magazine the number two start-up in London (2012), HouseTrip is Europe’s largest holiday rental booking website!

Last but not least..

ruby -run -e httpd . -p5000
Run a local HTTP server with a single line of Ruby. Just one character longer than the classic python -m SimpleHTTPServer but more obviously flexible (plus, it’s Ruby ;-)).

Does the GIL Make Your Ruby Code Thread-Safe?

This is a guest post by Jesse Storimer. He teaches the Unix fu workshop, an online class for Ruby developers looking to do some awesome systems hacking in Ruby and boost their confidence when it comes to their server stack. Spots are limited, so check it out the class while there’s still room. He’s also the esteemed author of Working with Unix Processes, Working with TCP Sockets and Working with Ruby Threads.

There are some misconceptions in the Ruby community about this question surrounding MRI’s GIL. If you only take one thing away from this article today, let it be this: The GIL does not make your Ruby code thread-safe.

But you shouldn’t take my word for it.

This series started off just trying to understand what the GIL is at a technical level. Part 1 explained how race conditions could occur in the C code that’s used to implement MRI. Yet, the GIL seemed to eliminate that risk, at least for the Array#<< method we looked at.

Part 2 confirmed that the GIL did, in fact, make MRI’s native C method implementations atomic. In other words, these native implementations were free from race conditions. These guarantees only applied to MRI’s native C functions, not to the Ruby that your write. So we were left with a lingering question:

Does the GIL provide any guarantee that your Ruby code will be thread-safe?

I’ve already answered that question. Now I want to make sure that the misconception doesn’t go any further.

Race conditions redux

Race conditions exist when some piece of data is shared between multiple threads, and those threads attempt to act on that data at the same time. When this happens without some kind of synchronization, like locking, your program can start to do unexpected things and data can be lost.

Let’s step back and recap how such a race condition can occur. We’ll use the following Ruby code example for this section:

class Sheep
  def initialize
    @shorn = false
  end

  def shorn?
    @shorn
  end

  def shear!
    puts "shearing..."
    @shorn = true
  end
end

This class definition should be nothing new. A Sheep is not shorn when initialized. The shear! method performs the shearing and marks the sheep as shorn.

sheep = Sheep.new

5.times.map do
  Thread.new do
    unless sheep.shorn?
      sheep.shear!
    end
  end
end.each(&:join)

The bit of code creates a new sheep and spawns 5 threads. Each thread races to check if the sheep has been shorn? If not, it invokes the shear! method.

Here’s the result I see from running this on MRI 2.0 several times.

$ ruby check_then_set.rb
shearing...
$ ruby check_then_set.rb
shearing...
shearing...
$ ruby check_then_set.rb
shearing...
shearing...

Sometimes the same sheep is being shorn twice!

If you were under the impression that the GIL made your code ‘just work’ in the presence of multiple threads, this should dispel that. The GIL can make no such guarantee. Notice that the first time running the file, the expected result was produced. In subsequent runs, unexpected output was produced. If you continued running the example, you’ll see still different variations.

These unexpected results are due to a race condition in your Ruby code. It’s actually a common enough race condition that there’s a name to describe this pattern: a check-then-set race condition. In a check-then-set race condition, two or more threads check a value, then set some state based on that value. With nothing to provide atomicity, it’s possible that two threads race past the ‘check’ phase, then both perform the ‘set’ phase.

Recognizing race conditions

Before we look at how to fix this, first I want you to understand how to recognize this. I owe @brixen for introducing to me the terminology of interleavings in the context of concurrency. It’s really helpful.

Remember that a context switch can occur on any line of your code. When switching from one thread to another, imagine your program being chopped up into a set of discrete blocks. This sequential set of blocks is a set of interleavings.

At one end of the spectrum, it’s possible that there’s a context switch after every line of code! This set of interleavings would have each line of code interleaved. At the other end of the spectrum, it’s possible that there are no context switches during the body of the thread. This set of interleavings would have all the code in its original order for each thread. In between these two ends, there are lots of ways that your program can be chopped up and interleaved.

Some of these interleavings are OK. Not every line of code introduces a race condition. But imagining your programs as a set of possible interleavings can help you recognize when race conditions do occur. I’ll use a series of diagrams to show this code may be interleaved by two Ruby threads.

Just to make the diagrams simpler, I replaced the shear! method call with the code from the body of the method.

Consider this diagram the legend for the ones to follow; the code highlighted in red is the set of interleavings from Thread A, the code highlighted in blue is the set of interleavings from Thread B.

Now let’s see how this code could be interleaved by simulating context switches. The simplest case is if neither thread is interrupted during the course of executing this code. This would result in no race conditions and would produce the expected output for us. That might look like this:

Now I’ve organized the diagram so you can see the sequential ordering of events. Remember that the GIL locks around the execution of Ruby code, so two threads can’t truly run in parallel. The ordering of events here is sequential, starting at the top and working down.

In this interleaving, Thread A did all of its work, then the thread scheduler triggered a context switch to Thread B. Since Thread A had already done the shearing and updated the shorn variable, Thread B didn’t have anything to do.

But it isn’t always this simple. Remember that the thread scheduler could trigger a context switch at any point in this block of code. This time we just got lucky.

Let’s look at a more nefarious example, one that would produce unexpected output for us.

In this possible interleaving, the context switch occurs right at a point that can cause trouble. Thread A checks the condition and starts shearing. Then the thread scheduler schedules a context switch and Thread B takes over. Even though Thread A already performed the shearing, it didn’t get a chance to update the shorn attribute yet, so Thread B doesn’t know about it.

Thread B checks the condition for itself, finds it to be false, and shears the sheep again. Once it finishes, Thread A is scheduled again and finishes execution. Even though Thread B set shorn = true when it ran through the code, Thread A does it again because it picks up exactly where it left off.

A sheep getting shorn twice may not seem like much to care about, but replace sheep with invoice, and shearing with collecting payment; we would have some unhappy customers!

I’ll share one more example to illustrate the non-deterministic nature of things here.

This just adds more context switches, so each thread progresses a little bit at a time, but keeps switching back and forth. Let your mind take this to its logical conclusion, it’s possible for a context switch to happen on any line of the program. The interleaving that occurs can also be different each time the code is executed, so it may produce the expected result on one iteration, and an unexpected result the next time around.

This is really a great way to think about race conditions. When you’re writing multi-threaded code, you want to be thinking about how the program might be chopped up and interleaved, and the effects of various interleavings. If it seems that some interleavings will lead to incorrect results, you should re-think your approach to the problem or introduce synchronization with Mutex.

This is terrible!

At this point it seems fitting to tell you that you can make this code example thread-safe by introducing synchronization with Mutex. It’s true, you can do that. But I intentionally cooked up this example to prove a point;  it’s terrible code. You shouldn’t write code like this in a multi-threaded environment.

Whenever you have multiple threads sharing a reference to an object, and making modifications to it, you’re going to run into trouble unless you have some kind of locking in place to prevent a context switch from happening in the middle of the modification.

However, this particular race condition is easily solvable without explicitly using locks in your code. Here’s one solution using Queue:

require 'thread'

class Sheep
  # ...
end

sheep = Sheep.new
sheep_queue = Queue.new
sheep_queue << sheep

5.times.map do
  Thread.new do
    begin
      sheep = sheep_queue.pop(true)

      sheep.shear!
    rescue ThreadError
      # raised by Queue#pop in the threads
      # that don't pop the sheep
    end
  end
end.each(&:join)

I left out the Sheep implementation because it’s the same. Now, instead of each thread sharing the sheep object and racing to shear it, the Queue provides the synchronization.

If you run this against MRI, or any of the other truly parallel Ruby implementations, it will produce the expected result every time. We’ve eliminated the race condition in this code. Even though all the threads may call the Queue#pop method at more-or-less the same time, it uses a Mutex internally to ensure that only one thread can receive the sheep.

Once this single thread receives the sheep, the race condition disappears. With just one thread, there’s no one else to race with!

The reason I suggest using Queue instead of a lock is that its simpler to use a Queue correctly. Locks are notoriously easy to get wrong. They bring new concerns like deadlocking and performance degradations when used incorrectly. Using a data structure is like depending on an abstraction. It wraps up the tricky stuff in a more restrictive, but simpler API.

Lazy initialization

I’ll just quickly point out that lazy initialization is another form of the the check-then-set race condition. The ||= operator effectively expands to

@logger ||= Logger.new

# expands to 

if @logger == nil
  @logger = Logger.new
end

@logger

Look at the expanded version and imagine where the interleavings could occur. With multiple threads and no synchronization, it’s definitely possible for that @logger to be initialized twice. Again, initializing a Logger twice may not be a problem in this case, but I have seen bugs like this in the wild that do cause issues.

Reflections

I want to leave you with some lessons at the end of all this.

4 out of 5 dentists agree that multi-threaded programming is hard to get right.

At the end of the day, all that the GIL guarantees is that MRI’s native C implementations of Ruby methods will be executed atomically (but even this has caveats). This behaviour can sometimes help us as Ruby developers, but the GIL is really there for the protection of MRI internals, not as a dependable API for Ruby developers.

So the GIL doesn’t ‘solve’ thread-safety issues. As I said, getting multi-threaded programming right is hard, but we solve hard problems every day. One way that we work with hard problems is with good abstractions.

For example, when I need to do an HTTP request in my code, I need to use a socket. But I don’t usually use a socket directly, that would be cumbersome and error-prone. Instead, I use an abstraction. An HTTP client provides a more restrictive, simpler API that hides the socket interactions and associated edge cases from me.

If multi-threaded programming is hard to get right, maybe you shouldn’t be doing it directly.

“If you add a thread to your application, you’ve probably added five new bugs in doing so.”

Mike Perham

We’re seeing more and more abstractions around threads. An approach that’s catching on in the Ruby community is the Actor model of concurrency, with the most popular implementation being Celluloid. Celluloid provides a great abstraction that marries concurrency primitives to Ruby’s object model. Celluloid can’t guarantee that your code will be thread-safe or free from race conditions, but it wraps up best practices. I encourage you give Celluloid a try.

These problems that we’re talking about aren’t specific to Ruby or MRI. This is the reality of programming in a multi-core world. The number of cores on our devices is only going up, and MRI is still figuring out its answer to this situation. Despite its guarantees, the GIL’s restriction on parallel execution seems like the wrong direction. This is part of MRI’s growing pains. Other implementations, like JRuby and Rubinius, are running truly parallel with no GIL.

We’re seeing lots of new languages that have concurrency abstractions built-in at the core of the language. The Ruby language doesn’t have any of this, at least not yet. Another benefit of relying on abstraction is that the abstractions can improve their implementation, while your code remains unchanged. For example, if the implementation of Queue switched from relying on locks to using lock-free synchronization, your code would reap the benefits without any modification.

For the time being, Ruby developers should educate themselves about these issues! Learn about concurrency. Be aware of race conditions. Thinking about code as interleavings can help you reason about race conditions.

I’ll leave off with a quote that’s influencing much of the work being done in the larger field of concurrency today:

Don’t communicate by sharing state; share state by communicating.

Using data structures for synchronization supports this; the Actor model supports this. This idea is at the core of the concurrency model of languages like Go, Erlang, and others.

Ruby needs to look to what’s working in other languages and embrace it. As a Ruby developer, you can do this today by trying out and supporting some of these alternative approaches. With more people on board, these approaches could become the new standard for Ruby.

Thanks to Brian Shirai for reviewing a draft of this.

This Week in Ruby: Matz on Ruby 2.0, Numerous Conference CFPs, Tenderlove on define_method

Welcome to this week’s roundup of Ruby news, articles, videos, and more, cobbled together from my e-mail newsletter, Ruby Weekly. Sorry these roundups have been missing for a couple of months, I’ve been focusing very heavily on the e-mail newsletters which are continuing to grow like crazy! 🙂 I hope to get back into blogging more soon.

Matz on Ruby 2.0
Matz spoke about Ruby 2.0 (‘the happiest release ever’) for 30 minutes at the Heroku Waza event a week ago and the video is already available to watch. He stresses that “Ruby 1.8 will die soon” and encourages everyone to upgrade.

Dynamic Method Definitions
Aaron ‘tenderlove’ Patterson says that “depending on your app, using define_method is faster on boot, consumes less memory, and probably doesn’t signigicantly impact performance” compared to eval-based techniques. (And he has the numbers to prove it.)

Steel City Ruby Conference 2013 CFP Now Open
Steel City Ruby takes places in Pittsburgh, PA on August 16-17 and the CFP is now open if you want to submit a talk. The Burlington Ruby Conference has a CFP open too, as does RubyConf India.

Reading

Inspecting Rails 4 using Ruby 2.0 and TracePoint
Matt Aimonetti shows off a practical use for Ruby 2.0’s TracePoint execution tracing functionality.

Visualizing Memory Leaks in Ruby 1.9
Conrad Irwin on some clever work to extend ObjectSpace with a new find_references method to perform better analysis on object and memory usage on Ruby 1.9.

Parsing TOML in Ruby with Parslet
Recently, GitHub founder Tom Preston-Werner created an interesting INI-influenced ‘TOML’ format. In this series of posts, Nathan Witmer looks at what’s involved in building a parser for TOML using the Parslet PEG parser construction library.

Introducing Ress: A System for Building Mobile Optimized Rails Apps
Matthew Robertson introduces his new system for building mobile-optimized Rails applications using semantic, media query-based device detection and server side component optimization.

Ruby 2.0 Walkthrough: The Best Bits
Some slides from my yet-to-be-released ‘Ruby 2.0 Walkthrough’ that quickly skim through what I consider to be the ‘best bits’ (and not just the headline features).

Rails + Ember.js
An introduction to the open source Ember.js JavaScript app framework for Rails developers.

Watching and Listening

Sinatra in SIX Lines: How to Do Crazy Stuff with Ruby
A talk by Konstantin Haase at Ruby Australia.

Libraries and Code

Phusion Passenger 4.0 Release Candidate 4
Leading Rack-based app deployment tool Passenger gets yet another step closer to the 4.0 release.

time-lord: A Human DSL for Time Expressions
A gem that gives you more human like expressions for time and space math. Get fun like 1.hour.ago.to_range and 200.minutes.ago.to_words

identity_cache: Opt-in Read-through ActiveRecord Caching, From Shopify
IdentityCache lets you specify how you want to cache your model objects, at the model level, and adds a number of convenience methods for accessing those objects through the cache. Uses Memcached as the backend cache store.

neg 1.1.0: A Small PEG Parser Library
“One could say it’s a small brother of Parslet.”

Jobs

Web Application Developer for Big Nerd Ranch
Seeking smart, kind folks who want to make the world a little better through developing, training and writing about cutting-edge code.

JS / Ruby Developer at ReplayPoker (Full-Time, Remote)
Looking for a challenge? Our company is looking for a top-notch junior to mid level developer to join our small team and make a big difference!

Last but not least..

RTanque: A Robot Programming Game for Rubyists
Players program the ‘brain’ of a tank and then send their tank into battle with other bots. Based upon the Java project ‘Robocode.’

A Simple Tour of the Ruby MRI Source Code with Pat Shaughnessy

I’m not in Ruby core or, well, even a confident C coder anymore, but I’ve long enjoyed digging in the Ruby MRI source code to understand weird behavior and to pick up stuff for my Ruby course.

Pat Shaughnessy is also a fan of digging around in Ruby’s internals and has written some great posts like How Ruby Executes Your Code, Objects, Classes and Modules, and Exploring Ruby’s Regular Expression Algorithm.

When Pat released his Ruby Under a Microscope book, I knew it would be right up my street! He digs into how objects are represented internally, why MRI, Rubinius and JRuby act in certain ways and, of course, “lots more.”

I invited Pat to take a very high level cruise through the MRI codebase with me so we could share that knowledge with Ruby programmers who haven’t dared take a look ‘under the hood’ and to

Continue reading “A Simple Tour of the Ruby MRI Source Code with Pat Shaughnessy”

A Simple Tour of the Ruby MRI Source Code with Pat Shaughnessy

I’m not in Ruby core or, well, even a confident C coder anymore, but I’ve long enjoyed digging in the Ruby MRI source code to understand weird behavior and to pick up stuff for my Ruby course.

Pat Shaughnessy is also a fan of digging around in Ruby’s internals and has written some great posts like How Ruby Executes Your Code, Objects, Classes and Modules, and Exploring Ruby’s Regular Expression Algorithm.

When Pat released his Ruby Under a Microscope book, I knew it would be right up my street! He digs into how objects are represented internally, why MRI, Rubinius and JRuby act in certain ways and, of course, “lots more.”

I invited Pat to take a very high level cruise through the MRI codebase with me so we could share that knowledge with Ruby programmers who haven’t dared take a look ‘under the hood’ and to show it’s not as scary or pointless as it may seem.

It’s 100% free so enjoy it above or on YouTube in 720p HD.

P.S. Pat is happy to do another video digging deeper into how Ruby actually takes your code and executes it and he’s able to walk through the actual virtual machine for us. If the reaction to this video is good, we’ll sit down again and see if we can do it! 🙂

The Last Week in Ruby: A Great Ruby Shirt, RSpec Team Changes and a Sneaky Segfault Trick

Welcome to this week’s roundup of Ruby news cobbled together from my e-mail newsletter, Ruby Weekly.

Highlights include: A time-limited Ruby shirt you can order, a major change in the RSpec project, how to make Ruby 1.9.3 a lot faster with a patch and compiler flags, a sneaky segmentation fault trick, several videos, and a few great jobs.

Featured

The ‘Ruby Guy’ T-Shirt
Grab a t-shirt with a cute ‘Ruby Guy’ mascot on the front in time for Christmas. Comes in both male and female styles in varying sizes. Only available till Thursday December 6 though as it’s part of a temporary Teespring campaign (Note: I have no connection to this, it just looks cool.)

David Chelimsky Hands Over RSpec to New Project Leads
After several years at the helm, David Chelimsky is handing over the reins to Myron Marston and Andy Lindeman for RSpec and rspec-rails respectively. Thanks for all your hard work, David.

Upgrading to Rails 4: A Forthcoming Book (in Beta)
Andy Lindeman of the RSpec core team is working on a new book designed to bring you up to speed with Rails 4. It’s in beta so you can support him now, if you like.

Reading

Making Your Ruby Fly
Andrei Lisnic demonstrates a few compile time ‘tricks’ you can use to make your MRI Ruby 1.9.3 faster. The benchmark results are compelling.

Avoiding the Tar Pits of Localization
Jeff Casimir gave a talk on the ‘Ruby Hangout’ about the trickiness of handling internationalization and localization and some tools and libraries you can use to help. Lots of notes here or you can watch the video.

Recovering From Segfaults in Ruby, The Sneaky Way
We’ve probably all seen the dreaded ‘segmentation fault’ from Ruby before. Charlie Somerville demonstrates a rather clever but sneaky way you can ‘recover’ from them in plain Ruby. As he says, you probably don’t want to use this trick seriously.

Use Rails Until It Hurts
Evan Light pushes back a little against the recent wave of OO purity and, as DHH calls it, ‘pattern vision.’

Speeding Things Up With jRuby
MRI’s global interpreter lock prevents running code in parallel without forking the Ruby process. That’s where JRuby can help.

Try RubyGems 2.0
Michal Papis demonstrates how you can give the forthcoming RubyGems 2.0 a spin using RVM.

Watching and Listening

Rapid Programming Language Prototypes with Ruby and Racc
At RubyConf 2012, Tom Lee demonstrated how you can use Racc, a LALR(1) parser generator that emits Ruby code from a grammar file, in the process of creating a simple programming language of your own.

A Tour Into An Oddity With Ruby’s Struct Class
In which I look into why Struct.new(:foo?).new(true).foo? doesn’t work, even though the Struct-produced class and its instances are valid. I dive into the MRI source code a bit to get to the bottom of things. 12 minutes in all.

RubyTapas 027: Macros and Modules
Avdi Grimm’s latest Ruby screencast for non-subscribers to his Ruby video site.

A Rails 4.0 Roundup in 3 Videos
A summary and links to three Rails 4 related videos (all linked in RW before) by Marco Campana. A handy catch up if you didn’t already.

Libraries and Code

Introducing the Rails API Project: Rails for API-only Applications
A set of tools to use Rails for building APIs for both heavy Javascript applications as well as non-Web API clients. This isn’t entirely new but the project has now become more formally established.

Zuck: A Little Helper to Access Facebook’s Advertising API
An early, prototype-stage gem but you may still find it useful.

Jobs

Blazing Cloud is looking for software artisans
to join us in handcrafting beautiful mobile experiences. We are looking for people who believe in a whole product-approach and agile development practices, and have a strong sense of quality.

Last but not least..

Come Speak at O’Reilly Fluent 2013
OK, it’s slightly offtopic but I’m the co-chair for O’Reilly’s JavaScript, HTML5 and browser technology event and I know many Rubyists are also involved in these areas. Our CFP is open until December 10 and we have lots of awesome stuff lined up.

This Week in Ruby: Ruby 2.0 Refinements, Cost of GC::Profiler, and BritRuby Cancelled

Welcome to this week’s roundup of Ruby news, articles, videos, and more, cobbled together from my e-mail newsletter, Ruby Weekly. If you’ve been celebrating Thanksgiving this week, I hope you’re having a good break.

Highlights include: Charles Nutter on Ruby 2.0 refinements, the cancellation of the British Ruby Conference, and DHH’s latest object instantiation (thanks Doug Renn).

Featured

Refining Ruby (or The Best Study of Ruby 2.0 Refinements Yet)
I’ve editorialized the title somewhat but this article by Charles Nutter is a great look into the world of ‘refinements’ in Ruby 2.0, what they’re intended for, and all of the challenges they throw up, both for developers and language implementers.

The British Ruby Conference.. Cancelled
It’s a pretty long story but the British Ruby Conference, which I was getting rather excited about.. is no more. There’s a statement as to why but if you want to join

Continue reading “This Week in Ruby: Ruby 2.0 Refinements, Cost of GC::Profiler, and BritRuby Cancelled”

This Week in Ruby: Ruby 2.0 Refinements, Cost of GC::Profiler, and BritRuby Cancelled

Welcome to this week’s roundup of Ruby news, articles, videos, and more, cobbled together from my e-mail newsletter, Ruby Weekly. If you’ve been celebrating Thanksgiving this week, I hope you’re having a good break.

Highlights include: Charles Nutter on Ruby 2.0 refinements, the cancellation of the British Ruby Conference, and DHH’s latest object instantiation (thanks Doug Renn).

Featured

Refining Ruby (or The Best Study of Ruby 2.0 Refinements Yet)
I’ve editorialized the title somewhat but this article by Charles Nutter is a great look into the world of ‘refinements’ in Ruby 2.0, what they’re intended for, and all of the challenges they throw up, both for developers and language implementers.

The British Ruby Conference.. Cancelled
It’s a pretty long story but the British Ruby Conference, which I was getting rather excited about.. is no more. There’s a statement as to why but if you want to join the melee of conversation, try here or here. Luckily other attempts are now afoot – news coming soon.

DHH’s Latest Project: Colt Heinemeier Hansson
It’s DHH’s latest release 🙂 Congratulations to him and his growing family. And before anyone complains about having a human interest story here, cheer up a bit – it’s Thanksgiving 😉

Edge Rails Now Tested on Ruby 2.0 with Travis CI
Little to read but Ruby 2.0 is now most clearly on the edge Rails developers’ radar.

Reading

Deploying Ruby Applications to AWS Elastic Beanstalk with Git
Just last week, Amazon announced Ruby support for its AWS Elastic Beanstalk semi-automated deployment and scaling system. This tutorial by Loren Segal fills in all the blanks by walking us through using it from start to finish with a Rails app.

Zen and The Art of Speaking at RubyConf 2012 – The dRuby Way
An excellent story and walkthrough about both preparing a talk for RubyConf 2012 and what happened while the speaker was there. More articles like this please.

The Cost of Ruby 1.9.3’s GC::Profiler
James Golick presents an examination of the flaws in Ruby 1.9.3’s included garbage collector instrumentation in his typically punchy style. Luckily he presents a potential solution too: GC::BasicProfiler.

Is Your Application Running with Ruby – Slow?
Two developers moved a large Ruby webapp between two machines and experienced a 50% drop in performance. Why? Clue: It was something to do with RVM.

A 2012 Mac Setup for Ruby development
We see articles like this quite often but there are a lot of handy links here despite not being particularly Ruby focused.

A Lightweight ‘CMS’ Using Ruby and Google Drive
An interesting approach to content management. Let users enter text in a Google Drive spreadsheet, grab it with Ruby, and use the data to create your content or templates locally.

A ‘yield’ Gotcha Every Ruby Developer Should Be Aware of
It’s not a true yield gotcha but is something you might trip over nonetheless regarding earlier than expected returns. Luckily, ‘ensure’ blocks help save the day.

Profiling Ruby (or How I Made Rails Start Up Faster)
Four steps: measure, find the problem, fix, and repeat.

Watching and Listening

Guest User Records – RailsCasts
Ryan Bates is back with another Rails Cast, this time demonstrating how to create a ‘temporary guest record’ in a Rails app so users can try out apps without filling in their information up front.

Matz Speaking at LinkedIn about Ruby
Back in October, Matz spoke at LinkedIn about his background, Ruby’s history, and his current work. I enjoyed this.

Libraries and Code

Convert Syck to Psych YAML Format
Change has been afoot with Ruby’s attitude to YAML parsing for a while now but the shift from Syck to Psych can still cause issues. If you still have legacy Syck-produced YAML files around that are causing problems, this code might help.

Daybreak: A Simple Key/Value Store for Ruby
Very lightweight and very Ruby (in the best possible way).

chruby: Changes The Current Ruby
An ‘ultra-minimal’ (around 80 lines) alternative to RVM and rbenv. chruby allows one to install rubies into /usr/local/$ruby, /opt/$ruby or ~/.rubies/$ruby but install gems into ~/.gem/$ruby/$version. chruby only modifies $PATH, $GEM_HOME and $GEM_PATH, and does not hook cd or rely on shims.

Jobs

Last but not least..

Giles Bowkett: ‘I Wrote An eBook In A Week’
Being silly enough to not send me a copy for review or give me a title, all I can do is say Giles has written an interesting sounding book about how ‘DHH gets OOP wrong’ but why that’s OK. It costs money but hopefully we’ll see some reviews soon. He does have a no-quibble refund policy, however, and his writing is always an eye opener.

This Week in Ruby: MRI 1.9.3-p327, Rails 3.2.9, Capybara 2.0, and the Fukuoka Ruby Award

Welcome to this week’s roundup of Ruby news, articles, videos, and more, cobbled together from my e-mail newsletter, Ruby Weekly.

Highlights include: MRI 1.9.3-p327, Rails 3.2.9, Capybara 2.0, and the Fukuoka Ruby Award.

Featured

Ruby 1.9.3-p327 Released: Fixes a Hash-Flooding DoS Vulnerability
Carefully crafted strings can be used in a denial of service attack on apps that parse strings to create Hash objects by using the strings as keys. This new patch level release of 1.9.3 counters the issue.

2013 Fukuoka Ruby Award Competition
Each year Matz and the Government of Fukuoka in Japan run an award for Ruby programs. Submit by November 30th to enter – it doesn’t have to be an all new app either. The grand prize is 1 million yen (about $12,000).

Capybara 2.0.0 Released: The Acceptance Test Framework for Webapps
Not backwards compatible with Capybara 1.x so be careful and read the notes. It also drops support for Ruby 1.8.

Reading

Printing ‘Hello, World’ in Style (Concurrently)
Daniel Szmulewicz looks at what’s involved in using Celluloid and two actors to print out ‘Hello, World’.

Matz Is Not A Threading Guy
Jesse Storimer talks about the status of concurrency in Ruby and Matz’s opinions in a Q+A session at RubyConf. Reinforcing the status quo, Matz said: ‘Using multiple processes is the best way to do concurrency in MRI for the near future.’

rspec-rails and Capybara 2.0: What You Need to Know
Andy Lindeman of the RSpec core team talks about the new Capybara 2.0 release and what you need to be aware of when using it with RSpec and Rails.

Why Ruby Class Methods Resist Refactoring
Bryan Helmkamp demonstrates why he thinks class methods are much trickier to refactor than instance methods.

Reference Graphs as Tools for Refactoring
A quick look at using graphs of references in order to refactor Ruby code.

Watching and Listening

How I Set out to Benchmark an Algorithm and Ended Up Fixing Ruby
Joshua Ballanco wanted to build a delegation library but got lured into the worlds of benchmarks and garbage collectors.

Ten Things You Didn’t Know You Could Do in Ruby
A month ago, we linked to the slidedeck of James Edward Gray II’s Aloha on Rails talk with 101 various Ruby tricks and code snippets. Now the video is available too! Enjoy.

The Ruby Rogues on Documenting Code
The Ruby Rogues tackle a sore subject: documentation.

Libraries and Code

ruby-lint: Static Code Analysis and Linter for Ruby
Currently a prototype and work in progress so your mileage may vary. It makes it possible for developers to detect errors such as undefined or unused variables and the use of non existing methods.

Spinel: A New, ‘Ruby-Infused’ Open Source Game Engine
Spinel is a new open source game engine still under development that uses ‘mruby’ (the embeddable Ruby interpreter Matz is currently working on) as its scripting layer while leaning on speedy C/C++ under the hood.

Version Cake: An Unobtrusive Way to Version APIs in Your Rails App
Easily version views with their API version in the filename (e.g. index.v3.xml.builder). The cool part is if a request comes in for a different version, the closest version will be used.

Jobs

Test Driven JavaScript and Ruby Developer [San Francisco and Santa Monica, CA]
Carbon Five builds web and mobile products for startups, institutional companies and non-profit organizations using a finely tuned agile process with cutting edge tools and technology. Join a team of seasoned pros in a highly-collaborative environment and work on a new project every couple of months.

Last but not least..

Write Faster Rails Tests: Insights via E-mail
Get an infrequent e-mail from Thoughbot’s Ben Orenstein packed with battle tested advice for speeding up your Rails apps’ tests.

This Week in Ruby: Rubinius 2.0-rc1, Rake 10, Refactoring video, Passenger 4.0 supports JRuby, and more

Welcome to this week’s roundup of Ruby news, articles, videos, and more, cobbled together from my e-mail newsletter, Ruby Weekly.

Highlights include: Passenger 4.0 gets support for JRuby and Rubinius, Ben Orenstein’s awesome refactoring video, Pat Shaughnessy’s new ‘Ruby Under a Microscope’ book, AWS adds Ruby support to Elastic Beanstalk, and more.

Featured

Rubinius 2.0.0 Release Candidate 1
Sadly the Rubinius blog seems to be on hiatus but plenty of people noticed Rubinius 2.0.0rc1 has been tagged. Rubinius is an alternative Ruby implementation largely written in a subset of Ruby itself and the 2.0 release brings 1.9 syntax to the fore.

Pat Shaughnessy’s ‘Ruby Under a Microscope’ Now Available
It’s a great time for indie books in the Ruby world lately and this is no exception. Pat’s book is a truly deep dive into Ruby’s internals with lots of diagrams and lucid explanations to help you along the way.

Phusion Passenger 4.0 Now Supports JRuby and Rubinius
Phusion’s popular Ruby app deployment module for Nginx and Apache takes another leap forward by extending support from just MRI to JRuby and Rubinius. This could be big.

Refactoring from Good to Great
Thoughtbot’s Ben Orenstein takes a brave approach of ditching slides and going with live coding to boldly refactor where no presenter has refactored before.

Amazon Adds Ruby Support to AWS Elastic Beanstalk
Amazon’s Elastic Beanstalk service provides a way to quickly deploy and manage apps within AWS’s cloud of services (EC2, S3, etc.) It now supports Ruby apps by using Phusion’s Passenger (I hope Amazon are paying Phusion handsomely for this :-))

Reading

Yet Another Ruby Shootout: MRI 1.9.3 vs MRI 2.0 vs Rubinius 2.0
Igor Alexandrov picks up where Antonio Cangiano left off by benchmarking MRI 1.9.3-p286, MRI 2.0.0-preview1 and Rubinius 2.0.0-rc1. As always with benchmarks, don’t read too deeply but it seems Ruby 2.0.0 holds its own so far.

‘require is slow in its bookkeeping; can make Rails startup 2.2x faster’
An issue on the official MRI issue tracker that shares a patch which can improve the performance of ‘require’. Follows on to the work seen optimizing code loading in Ruby 1.9.3 in June 2011.

Ruby 2.0 Preview Available on Heroku
It’s still only a preview so don’t pull out your production apps yet, but Heroku’s polyglot stack supports Ruby 2.0 preview 1 without much work at all.

Reinventing Wheels of Future: Matz’s RubyConf Keynote Slides
No technical content as such but Matz celebrates the reinventing of wheels and confesses his love for PHP. Worth a quick swipe through for the sentiments.

Game Development and Ruby
Another slide-deck from RubyConf, this time sharing some options and opinions on game development in Ruby.

RubyConf Roundup: Day One
If you missed RubyConf, here are some handy notes for the talks that Mike Leone attended.

Dead Simple Login System for Rails Apps with OmniAuth and Facebook
In just six special steps with Gal Steinitz.

Let’s Not: Refactoring RSpec Specs with Plain Ruby Methods
A look at using plain Ruby methods rather than DSL constructs with RSpec.

Thinking in Objects
Josh Susser drops some object orientation principles on us in his RubyConf 2012 slides.

Building a Peer-to-Peer Chat System using Multicasting in Ruby
IP multicasting allows you to send a datagram to multiple recipients on a network. In this post John Pignata looks at multicasting and creates a simple chat system using Ruby’s socket library.

Ruby’s EventMachine Part 3: Thin
Phil Whelan continues his blog series looking at EventMachine, this time with a quick explanation of how the Thin Web server library uses it.

Making Queries More Composable with ActiveRecord and Arel
Mike Swieton says it isn’t always clear how to get ActiveRecord and Arel to tackle certain difficult database queries so he shares some pointers he figured out here.

A High Level Overview of Acceptance Testing
A straightforward slidedeck from Andy Lindeman of the RSpec core team.

Upgrading to Rails 4 – A Parameters Security Tour
A look at what’s going to change for parameters in controllers from Rails 3 to Rails 4.

Profiling JRuby with NetBeans
The NetBeans IDE includes a profiler for Java which you can twist to profiling JRuby apps instead. Patrick Polycrystal shows us how.

Collecting Metrics from Ruby Processes with Zabbix Trappers
‘Zabbix Trappers’ will be my new name if I ever get abducted by aliens and taken to their home planet. (Back in the real world, Zabbix is an ‘enterprise-class open source distributed monitoring solution.’)

Watching and Listening

RailsCasts Digs Into Rails 4.0’s Turbolinks
A 7 minute tour of ‘turbolinks’ (as will feature prominently in Rails 4.0) with Ryan Bates.

Wrangling Large Rails Codebases
Stephan Hagemann looks at ways to wrestle with large Rails apps to get faster test suites, cleaner structures, and generally more flexible apps.

Modular & Reusable Front-End Code With HTML5, Sass and CoffeeScript
Keeping your Rails app’s front-end code clean can be tricky. Find out how to keep things tidy and reusable using the HTML5 document outline and modular Sass and CoffeeScript.

To Mock or Not to Mock
Mock objects for testing purposes have their supporters and detractors. At Rocky Mountain Ruby 2012, Justin Searls gave a ‘broad-stroke survey’ of the different ways developers use mocks/test doubles and guidelines to bring everyone to a happy medium.

Yay! Mocks!
45 minutes with Corey Haines.

Git and GitHub Secrets
Zach Holman, GitHub’s chief of spreading the love, gives us a peek behind the Git and GitHub curtains and shares some tricks and tips applicable to both.

Life Beyond HTTP
There’s a whole world of interesting network protocols beyond HTTP says Anthony Eden. In this 30 minute talk, he provides examples of interacting with them using Ruby.

Let’s Talk Concurrency
José Valim of the Rails core team shares a digest of what he’s recently learned about concurrent programming and techniques.

The Farmhouse Podcast: Rubyist Talk from Los Angeles
Hard to describe but I’ve been enjoying this podcast from The Farmhouse. The latest episode features Shane Becker and Evan Phoenix discussing the Puma Ruby Web server. Steve Klabnik features on two earlier episodes.

Libraries and Code

Rake 10.0 Released: Yes, Version 10
Ruby’s make-like build utility takes a small step for Jim Weirich but a giant leap for version-kind by going from 0.9 to 10.0. Why? Jim explains.

A Rails Membership Subscription or SaaS Site with Stripe
A Rails 3.2 application with recurring billing using Stripe. Open source and ready to roll.

Rails 3.2.9 Release Candidate 1 Released
Don’t get overexcited. Bug fixes and tweaks.

IProcess 3.1.0: Ruby Tools for Subprocesses and IPC
Provides a number of abstractions on top of spawning subprocesses and interprocess communication. It has an easy-to-use API that supports synchronous and asynchronous method calls and custom serialization.

Espresso: A New Scalable Web Framework Aimed at Speed and Simplicity
I don’t think we’ve had a new Ruby framework for a while so.. enter Espresso 🙂 Has a few interesting ideas but without being too alien to existing Rails, Ramaze, or Sinatra fans.

Ruboto 0.9: The JRuby on Android Platform
Now supports Ruby classes directly subclassing Java classes.

A Simplified Version of Ruby’s Object System, Implemented in Ruby
A clever experiment by James Coglan. It’s intended to model inheritance and method lookup in as little code as possible, for ease of understanding by Rubyists.

Jobs

Sr. Rails Engineer at VMware Socialcast (San Francisco)
Socialcast is looking for a passionate, experienced Ruby and Rails Engineer to join our growing Engineering team! Continue your career in a start-up atmosphere focusing on fast experimentation with the latest technologies and frameworks (Rails 3 and Ruby 1.9).

Ruby on Rails Developer at Litmus (Remote, anywhere!)
Litmus, the e-mail testing and analytics company, offering a great salary, full health care benefits and 28 days paid vacation. We’re looking for great developers wherever you live in the world. Come and see what our team have to say about working here.

Rails Software Engineer at Sleepy Giant (Newport Beach, LA, Chicago)
Sleepy Giant is a game company based in Newport Beach. We are looking for Rails developers to join our talented team. You will work on high-profile, high-scale game services and franchise development projects, including green-field systems engineering.

Last but not least..

The British Ruby Conference: Giving 15% of Sales for Movember
The British Ruby Conference is in Manchester, England in March 2013 with lots of lovely speakers (and I’ll be there!) and for this month only will be giving 15% of ticket sales to the Movember cause. Come join in the fun.

Official (Private) RubyMotion Training Available
The folks behind RubyMotion, the Ruby development toolkit for iOS devices, are now offering official RubyMotion training to groups of 15 or more.

This Week in Ruby: JRuby 1.7.0, Passenger 4.0b1, Ruby 2.0 Feature Freeze

Welcome to this week’s Web-based syndication of Ruby Weekly, the Ruby e-mail newsletter.

Highlights include: a massive release for JRuby, a promising beta for Phusion Passenger 4.0, the announcement of a ‘feature freeze’ for Ruby 2.0, the Rails Rumble 2012 results, and just what did the Rails Rumble winners use to power their apps?

Featured

Ruby 2.0.0 ‘Feature Freeze’ Announced
Right on schedule, the core Ruby team have announced a ‘feature freeze’ for the forthcoming Ruby 2.0. All this means for now is that no features not already approved by matz will make it into 2.0.0.

Working with TCP Sockets: Jesse Storimer’s New Ruby E-Book
Jesse Storimer (‘Working with Unix Processes’) has released his latest book, Working with TCP Sockets. If you want to learn more about socket programming from a Ruby POV, check it out.

The 2012 Rails Rumble Results
A superb Rumble with 500 teams taking part and findthin.gs, a TV series and movie search tool, took the lead with the judges, with ‘Deploy Button’ being the public’s favorite.

Reading

Yehuda Katz: My Problem With Turbolinks
Rails 4.0’s ‘Turbolinks’ feature has been.. a little controversial. Yehuda explains what they are, as well as why he’s not entirely happy with them. And as a Rubyist who’s also very deep into JavaScript, his opinion counts for a lot.

Rails Rumble Winners, A Gem and Technology Teardown
The folks at Dwellable looked at the Gemfiles of the ten Rails Rumble winners and put together some interesting stats of what gems and technologies they used. Winning technologies included jQuery, CoffeeScript, Bootstrap, Sass, RSpec, Sidekiq and Haml.

Eating The (Ruby) 1.9 Elephant
The New Relic engineering team on the trials, tribulations, and eventual success in switching their app over to Ruby 1.9.

Version Your Ruby Objects with Aversion
Include the Aversion module into your objects and whenever the state of that object changes, Aversion remembers the change and keeps track of the history. Clever idea though beware of memory use if you go over the top with it.

Try mruby Today
mruby is a smaller, embeddable Ruby implementation that Matz is currently working on. This post by Richard Schneeman digs into what it’s about and how to give it a go for yourself. Aimed at an introductory level.

Create a Custom Slider With RubyMotion
A complete walkthrough of customizing a UISlider to get your own custom look and feel for a control within an iOS app built on RubyMotion.

Hybrid Concurrency Patterns: Threads and Events in Harmony with Celluloid
Describing a slide deck with ‘Ruby developers need to stop using EventMachine. It’s the wrong direction’ is a sure-fire way to get attention 🙂

Growing a Rails Application: How We Made Deploy Fast Again
The developers at PagerDuty brought their deploy time down from 10 minutes to 50 seconds. How? You gotta read for that.

Watching and Listening

Aaron Patterson on ‘Rails 4 and the Future of Web’
Earlier this month at Aloha Ruby Conference 2012, Aaron ‘tenderlove’ Patterson gave a keynote on a myriad topic of topics including threading, Rack, locking, and cats and how they relate to Rails 4.

Cache Digests (RailsCasts)
Episode 387 of RailsCasts is here(!) and Ryan Bates looks at the cache_digests gem which automatically adds a digest to fragment cache keys based on the template (so if a template changes the cache auto-expires).

The Ruby Rogues Discuss Service-Oriented Design with Paul Dix
Service-oriented design is the idea of taking a complex application with many parts and splitting them out into more modular parts that communicate with each other. Paul Dix chats to the Rogues about the concept.

Libraries and Code

GitLab 3 Released: An Open Source GitHub-Clone-In-A-Box, Sorta
GitLab is an open source Rails app that provides an interface for git repository hosting and management. Version 3 includes an in-page file editor. It takes a lot of inspiration from GitHub, though that’s not a bad thing.

RubyInstaller 1.9.3-p286 Released
In the last issue, we mentioned the new MRI 1.9.3-p286, released to patch up a couple of security vulnerabilities. Now, the Windows-based RubyInstaller distribution is also up to date (there’s also a build of 1.8.7-p371 if you’re still on 1.8.)

Gamebox: A Game Template for Building and Distributing Gosu Games
Generate a game and get it up and running quickly. Could be very handy for contests like Ludum Dare! It’s not new but somehow I hadn’t seen this before.

FIFO: Queueing Library Using Amazon’s Simple Queue Service
FIFO is a Ruby queueing library built on top of Amazon SQS. Like DelayedJob it encapsulates the pattern of executing tasks in the background but doesn’t rely on a database.

LiterateRandomizer: A Random Sentence and Paragraph Generation Library
Rubber tree and watched him. Vulgarized the larger than the faithful presence! Go slowly protruded round the beginning of shoulders.

Jobs

Rails Software Engineer at Sleepy Giant (Newport Beach, LA, Chicago)
Sleepy Giant is a game company based in Newport Beach. We are looking for Rails developers to join our talented team. You will work on high-profile, high-scale game services and franchise development projects, including green-field systems engineering.

Last but not least..

gSchool: An Intensive 6 Month Web Development Training Program
An intensive 6 month program to learn Ruby, Rails, JavaScript, CSS and HTML5 from scratch so you can build your own webapps. Run by esteemed Rubyist, Jeff Casimir.

The Past 2 Weeks in Ruby: 1.9.3-p286, JRuby 1.7RC2, Sidekiq Pro and Much More

Welcome to this week’s Web-based syndication of Ruby Weekly, the Ruby e-mail newsletter (just passed 17,000 subscribers – c’mon, sign up! :-)). While I have you, be sure to follow @RubyInside on Twitter as I’m going to be posting news more frequently there than on the Web site from now on.


The latest highlights include:

Featured

Ruby 1.9.3-p286 Released
The latest, official production patch-level release of MRI 1.9 is out. The primary motivation was for fixing a couple of security vulnerabilities and a handful of bugs.

A Whirlwind Tour of Rails 4
Andy Lindeman presents a 40 minute tour of some of the forthcoming Rails 4’s new features, including strong_parameters, Russian Doll caching, PATCH verb support, removal of Rails 2 finder syntax, and more. Recording and audio quality is very good.

The British Ruby Conference: Standard Tickets Now on Sale
Rubyists like Avdi Grimm, Russ Olsen, Dr Nic Williams, Aaron Patterson (and many more!) will be in Manchester, England in March 2013. Join us by grabbing a ticket now.

101 Things You Didn’t Know Ruby Could Do
James Edward Gray II just gave a talk at the Aloha Ruby Conference covering a bundle of random tricks you can do with Ruby. Here’s the slidedeck.

Sidekiq Pro: A Commercial, Supported Version of Sidekiq
Sidekiq is a efficient background job processor (think Resque on steroids) that’s free and open source, but creator Mike Perham is now offering a commercial variant with extra features and support.

RubyConf Australia 2013 Call for Proposals Open till October 31st
The conference itself is in Melbourne between February 20-22, 2013. Fancy a trip to the homeland of Dr Nic?

Reading

7 Ways to Decompose Fat ActiveRecord Models
Some handy tips and examples on breaking apart ‘fat models’ into separate objects that each encapsulate a concept.

So You Want To Optimize Ruby
Charles Nutter of the JRuby core team explains some of the ‘hard problems’ Ruby implementations need to solve before getting all gung-ho with benchmarks.

Explain: A Ruby Source to Natural Language Compiler
An interesting experiment in automatically converting Ruby code to English prose.

Would You Like A Mobile App With That?
Want to build your first Rails API-backed iPhone app? Follow along with Richard Schneeman here.

Lazy User Registration for Rails Apps
Goes into the concept of having your auth system providing an omnipresent anonymous user which can then be ‘upgraded’ to a regular user when the visitor chooses.

An Interview with Xavier Noria, The Code Gardener
Xavier Noria (a Ruby Hero and Rails core contributor) faces Pat Shaughnessy for an interview about how he got started with Ruby and Rails, what’s coming in Rails 4.0, and more.

Booleans are Baaaaaaaaaad
John Nunemaker is back and flying the flag for state machines saying that ‘using true/false for state is bad.’ Several interesting comments on this one; go join the fray.

Ruby Microframeworks: Camping and Cuba
Dhaivat Pandya looks at two unconventional webapp ‘microframeworks’.

How to Win a Hackathon
The Rails Rumble is just around the corner, so Brian Burridge has put together a series of seven short posts looking at how to do well in a hackathon situation.

Moving Forward With The Rails Asset Pipeline
A look at what’s happening with the Rails asset pipeline in Rails 4.0 and beyond.

Automating Web Performance with mod_pagespeed
mod_pagespeed is a just in time (JIT) performance compiler for the web. This free and open-source Apache module automates all of the most popular web-performance best practices by dynamically rewriting and optimizing your website assets. Google’s Ilya Grigorik shows it off.

Capistrano + Rails + Bundler + RVM + Unicorn + EC2 == Deployed
Practical instructions for deploying a Rails app on Amazon EC2 using Capistrano, RVM, Bundler and Unicorn.

Watching and Listening

Exploring RubyGems (RailsCasts)
In a mere 7 minutes, Ryan Bates offers some tips on researching gems to decide which ones to choose, or when to build something from scratch.

Ruby’s Symbols Explained
Never quite got your head around how Ruby’s symbols work and what they represent? Here’s a video from my Ruby Reloaded course now available to watch on YouTube.

Go Ahead, Make a Mess!
Sandi Metz, OO guru and author of ‘Practical Object-Oriented Design in Ruby’, talks about using the principles of object oriented design to make ‘messes’ in code manageable. Sandi always gives great talks; check it out.

How to Find Valuable Gems
At RailsConf 2012, Nathan Bibler talked about ways to find the right gems for your project (along similar lines to Ryan’s video above). My answer, of course, is to read Ruby Weekly and check out RubyFlow 😉

The Ruby Rogues on (Physical) Developer Environments
A discussion about ergonomics, chairs, standing desks, working in coffee shops, colors, multiple monitors, background noise, and more with the five always charming and chatty Ruby Rogues.

Live Reloading with Rails 4
Aaron ‘tenderlove’ Patterson shows off something he’s working on that brings live reloading functionality to edge Rails.

PeepCode Releases ‘Meet Chef’ Screencast
Chef is a handy sysadmin and server configuration tool and former 37signals sysadmin Joshua Sierles goes through the basics of building Chef recipes including for deploying Rails apps.

RubyTapas Episode 7: Constructors
Avdi Grimm continues with his RubyTapas project with this free episode digging into how Ruby constructs new objects and how to customize constructors for your own ends.

Libraries and Code

Opal: Ruby to JavaScript Compiler
A source-to-source compiler (so no special VM required) and the compiled code aims to be fast and efficient by mapping directly to underlying JavaScript features and objects where possible. Not the first such experiment but well presented.

Selfstarter: Roll Your Own Crowdfunding
A project called Lockitron raised $1.9m recently in a crowdfunding campaign. They had to build their own Kickstarter-esque software as Kickstarter rejected them and.. it’s in Rails and they’ve shared the source.

Fun with Unicode Math in Ruby
Want to use Unicode’s square root, sine, fraction, infinity, pi, or other mathematical symbols in your Ruby code? The unicode_math gem gets you there.

node-mruby: Embedding Ruby into Node.js
mruby is an embeddable Ruby interpreter and node-mruby makes it possible to embed mruby into Node.js. Very much a prototype/work in progress for the curious.

digest-sha3-ruby: An SHA-3 Library for Ruby
Based on the reference C implementation and attempting to maintain the typical ‘Digest’ API style, Phusion has released a library that implements the SHA-3 (Keccak) cryptographic hashing algorithm.

Poltergeist 1.0: Hooking Up Capybara to PhantomJS
Allows you to run your Capybara tests on a popular and powerful headless WebKit browser: PhantomJS.

ClientSideValidations 3.2 Released: A Key Release
ClientSideValidations extracts the validations from your Rails models and applies them to your forms directly on the client. 3.2 brings quite a few changes and extras, such as support for Rails 4.0’s Turbolinks feature.

Jobs

Ruby Engineer
Zendesk is looking for a Ruby engineer to join a team in San Francisco that’s focused on improving the application from the inside out. We care about elegant code and we are passionate about shipping great software – just like you.

Last but not least..

rubytune: Rails Shop Specializing in Performance and Troubleshooting
Joshua Sierles (ex-37signals) and Sudara Williams (ex-Engine Yard) have launched a consultancy focused on providing scaling, performance and server advice for Rails developers.

Next Ruby Reloaded Course to be Announced Soon
From time to time I run an online Ruby course aimed at intermediate Rubyists looking for a refresher or Rails developers who want more of a deep dive into Ruby itself. The 5th run finished a few weeks ago and I’ll be opening registration for Ruby Reloaded 6 very soon. Sign up to the list at the far bottom of the page to get a discount code and notified first (since it fills quickly.) Thanks!

This Week in Ruby: What to Expect in Rails 4.0 talk, EventMachine tutorial, and StrongParameters hit Edge Rails

Welcome to this week’s Web-based syndication of Ruby Weekly.

Featured

Yehuda Katz Needs Your Input on the Tokaido (a.k.a. rails.app) UI
5 months ago, Yehuda Katz raised $51k to work on Tokaido, an app designed to make setting up a Rails environment on OS X easy. He now has some mockups of the app’s user interface and needs your input.

Tddium Looking for Beta Testers of its New JRuby CI Service
Tddium is a cloud-based continuous integration service for Ruby apps and they’re expanding into CI for JRuby. Got a JRuby app and want to get into the beta program? Check it out.

Reading

How Ruby Borrowed a Decades Old Idea From Lisp
Pat Shaughnessy shares another excerpt from his Ruby Under a Microscope book that digs deep into the world of blocks, lambdas, procs, and bindings and how they relate to closures.

raise ‘hell’: Better Programming Through Error Messages
Exceptions suck, but they don’t have to. Learn how to program better with error messages, and see how improved messages will lead to a better experience in Rails 4.0.

Ruby’s EventMachine: Event-based Programming (Part 1)
Not up to speed with EventMachine yet? No worries, Phil Whelan kicks off a series of blog posts introducing us to the popular event-processing library (which, incidentally, hit version 1.0 just this month.)

An Experiment in Static Compilation of Ruby: FastRuby
Charles Nutter (of JRuby fame) shows off an experiment in doing static compilation of Ruby to Java. Short and sweet and leans on JRuby’s parser and AST walker.

8 (New) Steps for Fixing Other People’s Code
Many moons ago, Dr Nic wrote a popular article about contributing to open source projects. Alex Grant builds on Dr Nic’s work with a more up to date set of guidelines.

Learning Chef
Some things Mathias Lafeldt has picked up while learning to use the Ruby-based infrastructure automation framework.

Watching and Listening

Simulating the World with Ruby
Brian Liles (remember TATFT?) digs into creating simulations in Ruby, covering concurrency issues, domain modelling, testing, and more.

Ruby’s Symbol#to_proc: A Walkthrough
A 15 minute extract from my Ruby Reloaded course that digs into what Symbol#to_proc is, where it came from, how it works, and how to make your own version from scratch.

What to Expect in Rails 4.0
Prem Sichanugrist shows off some of the new features and changes in the forthcoming new version of Rails.

Libraries and Code

minitest-reporters: Reporters for MiniTest
A new way to create customizable MiniTest output formats. I’ve tried it. It works. It’s awesome.

oEmbed Ruby Library
oEmbed is a format for allowing an embedded representation of a URL on third party sites. The ‘oembed’ gem helps you lean on oEmbed’s functionality in Ruby.

Ongoing ActiveRecord Optimizations: Freeze Columns Before Using Them As Hash Keys
An interesting (and ongoing) pull request on the Rails GitHub repository where freezing column names before using them as hash keys seems to result in memory and performance improvements.

Sinatra-Like Routes in Rails Controllers
Jose Valim demonstrates how simple it is to tinker with Rails controllers to support Sinatra-style routes.

Jobs

Back-end Software Engineer at Geckoboard (London, UK)
We’re looking for a Rails engineer to help architect, build, test and improve a young, fast moving and market defining web application with all the challenges that come with that. 2+ years’ experience with a dynamically-typed, object-oriented language.

Last but not least..

Dumper: Cloud Database Backup Service for Rails
A (paid) service that hooks into your Rails app and provides cloud-based backup. Has a free trial though.

This Week in Ruby: Rails Rumble Dates, Active Admin 0.5, Protected Methods in Ruby 2.0

Welcome to this week’s Web-based syndication of Ruby Weekly, the Ruby e-mail newsletter (Now at 16,300 subscribers! C’mon.. check it out ;-)).

Highlights include: an announcement over the dates for this year’s Rails Rumble, releases of Active Admin 0.5 and Bundler 1.2, as well as Aaron Patterson looking at a difference in Object#respond_to? in the forthcoming Ruby 2.0.

Featured

The Rails Rumble is Back! Dates and Details Announced
The popular 48 hour Ruby development contest is back and will run this October 13th and 14th. Registration opens on October 1st. Learn all about it here.

Active Admin 0.5.0 Released
Active Admin is a popular administrative interface generation system for Rails and a new version has been a long time coming. 0.5 introduces batch actions (i.e. select multiple rows and delete them all), a customizable root route, and more view components and factories.

Bundler 1.2 Released
The vital dependency management tool gets an update and now supports specifying Ruby versions in Gemfiles, local git repos, and using ‘bundle package’ to package git and local path dependencies.

‘Why The Lucky Stiff’ Documentary to Screen at RubyConf 2012
Fabio Akita talks about Why The Lucky Stiff, a creative and enigmatic Rubyist who disappeared from the Web back in 2009, and reveals that a documentary about his work is under production and due to be shown at RubyConf 2012.

ConFoo 2013 Call for Papers is Open
The Call For Papers is only open for 10 more days and the conference itself is in February 2013.

Reading

Protected Methods and Ruby 2.0
Aaron Patterson looks at how the behavior of Object#respond_to? will change with regards to protected methods in Ruby 2.0.

Backbone.js and Rails
Wondering exactly what you need to do to create a Backbone.js app that leans on
Rails? This blog post (first in a series of two) covers it with an example app and an in-depth look at rendering with Mustache.

How to Easily Create Single Page Apps with Sprockets
A short and sweet example of using Sinatra and Sprockets for the back-end of a single page webapp.

A Ruby exit, exit!, SystemExit and at_exit Blunder
Phil Whelan discovers that the ‘exit’ method doesn’t always do what its name seems to suggest..

Pragmatic Concurrency With Ruby
A delightfully in-depth look at some Ruby concurrency topics by Dotan J. Nahum.

Performing Linear Regression with Ruby
A walkthrough of the basics of linear regression (useful in statistical analysis) and using Ruby to perform simple linear regression.

Random Ruby Tricks: Class.new
Steve Klabnik shares some pointers to using Class.new to summon up new classes.

Ruby Tidbit: __LINE__ and Heredocs
An interesting quirk in how __LINE__ works in association with here documents. Makes sense but I’d never thought about this before.

Building a Geofencing System with Ruby and MongoDB
A short series of posts by John Murray that digs into using Ruby and MongoDB to build a ‘geofencing’ system.

PiecePipe Examples: Map, Aggregation and Group-By
Shawn Anderson shows off PiecePipe, a Ruby library for writing code where you focus on the flow of data through a pipeline of steps without worrying about the iteration and ‘glue code.’ An interesting approach.

Code Tuning, A Programming Pearl in Ruby
Daniel Lobato seems to share my love for the classic ‘Programming Pearls’ book and digs into optimizing a simple sequential search through an array.

What’s New in the Upcoming SimpleForm 2.1.0
SimpleForm is a popular Rails form plugin and this post shares some of what will be in the forthcoming 2.1.0 release.

Watching and Listening

A 2 Hour Introduction to Ruby On Rails
At a recent Boston Ruby Group Project Night, Dan Pickett gave a 2 hour long ‘introduction to Rails’ workshop, building a Rails app along the way.

JRuby Basics (RailsCasts)
Ryan Bates wanders off of the usual Rails-focused trail to give a 10 minute tour of JRuby, including how to set it up and use Java classes from within Ruby.

FnordMetric (RailsCasts)
FnordMetric is a Redis and Ruby based realtime event tracking app that’s great for keeping track of user activity in your Rails app. Ryan Bates demonstrates.

The Ruby Rogues Discuss ‘Growing Object Oriented Software Guided by Tests’
The inimitable Ruby Rogues spend an hour discussing the superb ‘Growing Object Oriented Software Guided by Tests’ by Steve Freeman and Nat Pryce. If you haven’t read this book yet, you should check it out.

Why The Lucky Stiff Documentary Trailer
A short 2 minute preview of a documentary about Why The Lucky Stiff that’s planned to be screened at this year’s RubyConf.

Libraries and Code

Labrador: A Web-based Client for Your Rails Development Databases
Aims to be database agnostic and includes Pow integration and automatic database integrations. Looks really nice.

Rubysh: Ruby Subprocesses Made Easy
Makes shelling out easy with a sh-like syntax layer for Ruby.

pg_power: ActiveRecord Extension for PostgreSQL
An ActiveRecord extension which lets you take advantage of several special PostgreSQL features with Rails, including PostgreSQL schemas, partial indexes, foreign keys, and comments.

Zeus: Boot Any Rails App in Under A Second
A new Rails app preloader, but one that takes a radically different approach to Spork and has very delicate Ruby and OS version requirements.

Ruby Decorators: Python-esque Method Decorators for Ruby
It’s not a new idea but I like Fred Wu’s simple implementation of Python-like method decorators using the unary + operator and method_added.

Jobs

Software Engineer – Experienced / Senior [New York City]
Are you an innovative software engineer with skills equivalent to 5–7 years of Java or Ruby experience? Do you want to be a key member of an incredibly driven team that knows how to have fun? We’re building our team from 14 to 21 this year. Join us!

Ruby Developer, Nature Publishing Group (London, United Kingdom)
Passionate about technology and science? Come join our team of Ruby developers at the Nature Publishing Group, responsible for the most influential scientific journals in the world for over 140 years.

Last but not least..

5500 Flashcards on Web Development With Rails
Jack Kinsella has released a free set of 5500 questions and answers on various aspects of Ruby, Rails, JS and CoffeeScript development. They’re designed to be used with Anki, a free open source flashcard viewer.

What is ARGF.class in Ruby 1.9?
A question on Stack Overflow shows off an interesting quirk in Ruby 1.9. Why does “ARGF.class” give such a curious response? Two respondents try to come up with an answer.

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.

Headlines

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.

Reading

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 (RailsCasts)
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.

Jobs

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]
You’ll join the team that develops Webdoc (a rich media sharing site) and work across the stack – Rails, MongoDB, mySQL and JavaScript.

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.

This Week’s Ruby News: Ruby 1.8.7-p370, Rubyist Text Editor Poll Results, MagicRuby and More

Welcome to this week’s Web-based syndication of Ruby Weekly, the Ruby e-mail newsletter (which just turned 100 weeks old this week – issue 100! :-))

Highlights include: Ruby 1.8.7’s last ever bug fix release, the Ruby OpenSource Challenge, a new open source code review system, and the results of a Rubyist text editor poll.

Headlines

Ruby 1.8.7-p370 Released: The Last Bug Fix Release for 1.8.7
Still using 1.8.7? Right on schedule, this is your last bug fix release, with only security fixes available for the next year before 1.8.7 is abandoned entirely.

The Ruby OpenSource Challenge
Backed by a large variety of prize givers and sponsors, the Ruby OpenSource Challenge encourages you to help improve the Active Admin project.

RubyShift 2012: Ukrainian Ruby Conference, September 29-30
Call for proposals and registration are now both open.

The Ruby Greener Test Challenge (A Windows Challenge)
Luis Lavena is well known for his efforts to make Ruby better on the Windows platform, and he’s put out a call to action to clean up the 9 failures and 2 errors in MRI’s test suite.

MagicRuby – A Ruby conference *inside* Walt Disney World!
Join us October 5 and 6, 20120 for MagicRuby 2012. This year we’re dropping some knowledge inside of Disney’s Hollywood Studios Theme Park! Our CFP and registration (only $199 – $49 for Disney passholders) are OPEN, so head over to our site for more info.

Reading

Constant Stubbing in RSpec 2.11
It’s not out yet but Myron Marston gives us a look at a new feature coming to the forthcoming RSpec 2.11: the ability to stub constants.

Vim for Ruby on Rails (and A Sexy Theme!)
Last week’s link to using Sublime Text 2 was popular but this week’s turn is Vim! Aston J aims to show off why Vim is a good choice for Rails development along with a bevy of commands.

Watching

Libraries and Code

Barkeep: An Open Source Code Review System
Billing itself as a “friendly code review system”, Barkeep is a self hosted tool to do code reviews on your projects. It can watch commits made to any Git repository, see diffs, write comments, and have comments e-mailed to your collaborators.

Flowdock Open Sources ‘Oulu’: An EventMachine-Driven IRC Gateway
Flowdock, a collaboration app with chat support, has open sourced their EventMachine-based IRC gateway. Could come in particularly handy if you want to integrate IRC with your own apps.

OmniContacts: Rack Middleware for Importing E-mail Contacts
A library that enables users of an application to import contacts from their email accounts (currently supports Gmail, Yahoo and Hotmail.) As a Rack middleware, you can use with any Rack-based framework, including Rails.

Seedbank: Organize Your Rails App’s ‘Seed Data’
Seedbank allows you to structure your Rails seed data instead of having it all dumped into one large file.

Rack-Policy: Middleware for Complying With the EU ePrivacy Directive
If you’re not based in the EU, you can ignore this idiotic piece of legislation but otherwise Rack-Policy helps your Ruby webapps comply with getting implied consent before any cookies can be stored on your visitors’ machines.

Image Sorcery: A Ruby ImageMagick Library ‘That Doesn’t Suck’
Image Sorcery leverages all three of ImageMagick’s command line tools, mogrify, convert, and identify, to give you image processing functionality, minus the memory leaks. (Looks a lot like MiniMagick on the surface.)

Periscope: Expose Your Scopes to the World
Periscope makes it easy to chain your scopes from the query parameters on your index actions. Includes support for ActiveRecord, MongoMapper, Mongoid and DataMapper.

Twitter Gem Hits Version 3.0
The popular ‘twitter’ gem has reached version 3.0 (now at 3.0.2). Only a changelog to go on but lots of changes you’ll need to be aware of if you use the library.

Ruby OpenSSL Cheat Sheet
August Lilleaas shares a collection of examples for using Ruby’s OpenSSL bindings (as found in the Ruby standard library).

Jobs

Rails Developer at OneLogin [San Francisco]
Join a team of Ruby engineers building the industry’s easiest-to-use Identity and Access Management solution for enterprises. 2-3 years of experience with Rails necessary and community involvement a big plus.

Last but not least..

What Is Your Primary Text Editor for Ruby Development?
Now at over 4,000 votes, this poll is an interesting look at what text editors Rubyists are using. It looks like the era of TextMate has truly passed.

This Week in Ruby: Rails 4 Sneak Peeks, A Gist Drama, and a CoffeeScript Book (by a Rubyist!)

Welcome to this week’s Web-based syndication of Ruby Weekly, the Ruby e-mail newsletter.

Highlights include: MagicRuby 2012, a code structure/patterns ‘drama’, Mark Bates’ new CoffeeScript book, minitest 3.2.0, and the Ruby Rogues chatting with Jim Weirich (who I met for the first time this week, ironically at a JavaScript conference!)

Headlines

‘Programming in CoffeeScript’ by Mark Bates, Now Available
Mark Bates, a Ruby developer, was won over by CoffeeScript and has written a book for Addison-Wesley which has now been published. Despite being a language that compiles down to JavaScript, CoffeeScript has become relevant to Rails developers in recent times given its inclusion in Rails 3.1+.

Reading

Am I Doing It Wrong?
A month ago, Rubyist Justin Ko asked fellow Rubyists if his code in a Rails project was poorly designed or not. The initial consensus was that he’d done a good job but then last week DHH weighed in and.. it got a bit ‘dramatic.’

My (new) Favourite RSpec Pattern
Jordan Maguire shares an interesting RSpec technique and there’s some interesting debate in the comments. It seems popular, though Geoffrey Grosenbach raises doubts about its readability.

Tutorial: Reddit in 10 Lines of Code
A curious walkthrough of taking an existing ‘Reddit in Sinatra’ and using some ‘seldom used features of Ruby’ to cram it down to 10 lines of dense Ruby code.

Generating Random URL-safe tokens with SecureRandom
Burke Libbey shows off a single liner that can generate a URL safe token using something from the Ruby standard library.

Rails 4.0 Sneak Peek: Queueing
A quick look at the new queueing API in edge Rails (to become Rails 4.0).

Watching and Listening

Facebook Authentication in Rails (RailsCasts)
Ryan Bates shows us how to create a new Facebook application, configure it, add authentication with the omniauth-facebook gem and top it off with client-side authentication using the JavaScript SDK.

Complex Made Simple: Sleep Better with TorqueBox
At RailsConf 2012, Lance Ball spoke about TorqueBox, a popular Ruby application server built on JRuby and JBoss AS7 that provides asynchronous messaging, scheduled jobs, long-running processes, caching, and more.

The Ruby Rogues Discuss SOLID with Jim Weirich
The Rogues sit down with Ruby old-hand and all round nice guy Jim Weirich to talk about the ‘SOLID’ principles of object oriented design.

The Changelog Interviews Laurent Sansonetti about Ruby Motion, MacRuby and More
The Changelog guys caught up with RubyMotion creator Laurent Sansonetti to talk about MacRuby, RubyMotion, MonoTouch, and more.

Libraries and Code

Rack Canonical Host: Middleware for Defining A Canonical Host Name
Rack middleware for defining a single hostname as the canonical host for your app. Requests for other hostnames will get redirected to the canonical host.

SoundCord: Perform Comparisons for Phonetically Similar Terms
A phonetic algorithm matches two different words with similar pronunciation to the same code, which allows phonetic similarity based word set comparison and indexing. SoundCord is initially aimed at Brazilian Portuguese but English and Spanish support is not far behind.

Jist: Publish GitHub ‘gists’ from Ruby
Jist is a gem that allows you to publish a gist from Ruby or the command line including file uploads and OAuth2 authentication.

ffi-http-parser: Ruby FFI Bindings to the ‘http-parser’ Library
http-parser is a high performance HTTP message parser written in C by Joyent. ffi-http-parser can hook your Ruby scripts up to it for parsing both HTTP requests and responses.

Jobs

Back End Developer, SoundCloud, Berlin, Germany
Soundcloud is looking for an über-talented back end web developer with knowledge of the latest web development tools and methodologies. As part of our A-team, you will be faced with the challenges of developing the world’s leading audio sharing platform.

Sr. Ruby on Rails Software Engineer
Do you live to work hard, play hard, live life big? Then consider working at G5. G5 has created a digital experience management platform designed to allow clients to optimize their online experience. Our mission is to help our customers and employees thrive.

Last but not least..

Sublime Text 2 for Ruby
A look at the Sublime Text 2 programmers’ text editor including why it’s a good fit for Rubyists and how to set it up in a productive manner.

The Last 2 Weeks in Ruby: Rails 3.2.6, Savon 1.0, RailsInstaller for OS X, Pow 0.4.0, Rails 2 Asset Pipeline

Welcome to this week’s Web-based syndication of Ruby Weekly, the Ruby e-mail newsletter. While I have you, be sure to follow @RubyInside on Twitter as I’m going to be posting news more frequently there than on the Web site in future.


The latest highlights include: Rails 3.2.6, RailsInstaller for OS X, Pow 0.4.0, Rails 2 Asset Pipeline, Sidekiq 2.0, and Savon 1.0.

Headlines

Rails 3.2.6 Released: Fixes More Vulnerabilities
Rails 3.2.4 was released a few weeks ago fixing two serious security vulnerabilities (explained in another post below). Rails 3.2.5 then followed a day later as 3.2.4 introduced a nasty scoping bug.. and.. now Rails 3.2.6 to continue to fix those bugs. They’re tricky blighters.

RailsInstaller for OS X: Ruby, Rails, Git, and More in One Download
Engine Yard’s RailsInstaller has long been a popular way to install Rails, Ruby, Git, Sqlite and other tools in one hit on Windows. Now it’s here for OS X too.

Announcing Pow 0.4.0 With xip.io Support
37signals’ Sam Stephenson has unveiled the latest version of the popular Mac OS X zero-configuration web server for Ruby webapp development. Port proxying is one of the new features.

Take My 30 Second Ruby Webcast Survey
I’m planning to run some Ruby oriented ‘webcasts’ (live, 30-60 minute presentations + live coding) and have a handful of ideas. I want to see which are the most popular and would appreciate your help (or even your own ideas).

Early Access to Avdi Grimm’s ‘Confident Ruby’ Available
Avdi Grimm, author of the popular Exceptional Ruby and Objects on Rails, is working on his new book, Confident Ruby. It’s still under development but you can get access now in return for some money or, intriguingly, a postcard.

JewelryBox 1.3 Released: The Official OS X RVM GUI
JewelryBox is a GUI app that brings OS X and RVM together in a loving embrace. 1.3 brings improved usability, gemset management, and Mountain Lion compatibility (it’s a signed app, so no GateKeeper complaints either).

From our sponsor

Michael Hartl’s Rails Tutorial 2nd Edition, Out Now
Michael Hartl has just announced the official release of the 2nd edition of his popular Rails Tutorial screencast series. It’s 15 hours of ‘over the shoulder’ training in Rails 3.2 using Twitter Bootstrap, Ruby 1.9, and full on test driven BDD.

Reading

RSpec’s New Expectation Syntax (Coming in 2.11)
Myron Marston shows off a new syntax for expectations in RSpec. It looks like “expect(foo).to eq(bar)” versus the more typical “foo.should eq(bar)”. What’s the motivation? Learn more here.

Removing config.threadsafe! from Rails
Core Rails developer Aaron ‘tenderlove’ Patterson looks at why the ‘config.threadsafe!’ directive can be removed from Rails and demonstrates the issues involved.

Rails Pull Request: Enable threadsafe! By Default
A 2 character pull request that triggered a big discussion about the role of ‘threadsafe!’ in future Rails apps, best summarized by the Aaron Patterson article linked above.

Setting Up an Ubuntu 12.04 Rails Development Environment
Includes Postgres, RVM, and some handy bash aliases.

Forgotten Rails Features: HTTP Streaming
One of a series of posts looking at interesting Rails features that are no longer in the spotlight. Here, Robert May looks at the HTTP streaming features introduced in Rails 3.1.

Using vim-slime with Pry for REPL Perfection
Alan MacDougall demonstrates how you can set up vim so that you can send Ruby code straight from the editor into an interactive Pry session.

A Write Up of the SQL Injection Vulnerability in Rails
Louis Nyffenegger gives a scrappy yet practical explanation of the latest vulnerability in Rails (which has been fixed by Rails 3.2.4/5).

PhoneGap vs RubyMotion
A somewhat chalk and cheese comparison framework wise but a reasonable discussion of the pros and cons of deploying a similar app using both technologies. An interesting sidenote is it compelled one of the creators of PhoneGap to write a post in response.

Future Versions of Pow Won’t Automatically Support RVM
It seems automatic support for .rvmrc files to set the Ruby environment is going away in Pow. There’s a simple workaround (using the .powrc file for each project) but it’s worth noting for the future.

Ruby Is Faster Than Python, PHP and Perl(?)
Uh-oh, controversy alert! Tony Arcieri attacks the myth that Ruby is the slowest language out there with a look at the Alioth Programming Languages Shootout. Sadly, the shootout is rather flawed but the real take away is that all four languages aren’t far apart.

Watching and Listening

RailsCasts on Brakeman: The Rails Vulnerability Scanner
Ryan Bates looks at the Brakeman gem, which will scan the Ruby code of a Rails application and alert you to common security vulnerabilities.

Ruby Rogues 59: Security with Rein Henrichs
The Rogues sit down with Rein Henrichs to talk about Ruby and Rails app security from password storage and network sniffing through to the GitHub hack and Rails vulnerabilities.

An Intro to Sinatra
At the Pittsburgh Ruby Brigade Language User Group, Carol Nichols gave a 45 minute introduction to Sinatra, the lightweight DSL for building webapps in Ruby.

Creating A Blog Application in Rails 3.2
An hour long screencast by John Ash walking through the development of a blogging webapp in Rails 3.2.

Evented Ruby vs Node.js
A 40 minute talk by Jerry Cheung from RailsConf 2012.

Dangers of Session Hijacking (RailsCasts)
Ryan Bates of RailsCasts takes a look at the dangers of ‘session hijacking’ and shows off a way to improve the situation on a Rails app.

Introducing the ‘Giant Robots Smashing into other Giant Robots’ Podcast
Courtesy of Ben Orenstein and Thoughtbot comes a new development oriented podcast based around Thoughtbot’s popular Ruby and Rails blog.

Matz’s Keynote at Euruko 2012
This year, the annual European Ruby Conference landed in Amsterdam and here’s Matz’s keynote to enjoy on Vimeo.

Geoffrey Grosenbach’s Euruko Keynote
Let the always mellifluous murmurs of PeepCode’s Geoffrey Grosenbach wash over you in this 40 minute keynote.

Using Ruby to Craft and Test Beautiful Command Line Applications
From RubyConf India comes a talk by Shishir Das and Nikhil Mungel about building elegant command line apps with Ruby (on Unix-like systems, naturally). Video good, audio not so good.

Libraries and Code

API Taster: Visually Test Your Rails Application’s API
A handy tool that works out endpoints from your routes file and then lets you perform requests direct from the Web browser. A clever idea.

Rails 2 Asset Pipeline: Familiar Asset Handling for Those On Rails 2
An interesting backport of some of Rails 3.1+’s most interesting functionality by Michael Grosser.

cod: IPC Made Simple
A small library striving to ‘change the way people do IPC in Ruby.’ It abstracts away the toll of using IO.pipe, Sockets and other primitives and allows message oriented communication via a simple interface.

Slacker: Test Framework for SQL Server 2005 and 2008 Programmable Objects
An RSpec-based transacted BDD framework/engine for the automated testing of SQL Server programmable objects (think stored procedures, table/scalar functions, etc.) Runs on both Windows and Linux.

Redis Store: Redis Stores for Ruby Frameworks
Redis Store provides a full set of stores (Cache, I18n, Session, HTTP Cache) for all the modern Ruby frameworks like: Ruby on Rails, Sinatra, Rack, Rack::Cache and I18n. It natively supports object marshalling, timeouts, single or multiple nodes and namespaces.

Talks: Let Your Ruby Programs Talk To You
A gem that hooks into the text to speech tools available on both Mac OS X and Linux.

Savon 1.0 Released: ‘Heavy Metal’ SOAP Client
Okay, SOAP might not be the big deal it once was, but many APIs and enterprise technologies still use it, and Savon, even pre-1.0, has been a popular choice for using SOAP from Ruby.

BubbleWrap: Cocoa Wrappers and Helpers for RubyMotion
BubbleWrap is a collection of (tested) helpers and wrappers used to wrap CocoaTouch code and provide more Ruby-like APIs.

Sinew: Collect Structured Data From Web Sites (by Scraping)
Sinew collects structured data from the Web (using scraping techniques) via a Ruby DSL built for crawling, a robust caching system, and integration with Nokogiri.

Announcing Virtus 0.5.0 (Part of DataMapper 2 Is Done)
Virtus is a key part of the forthcoming DataMapper 2 which provides attributes for plain Ruby objects. You can now use Virtus in modules, dynamically extend objects on the fly, and Structs can be used as an embedded value in other objects.

Doodle: Extended Attribute Accessors for Objects
A Ruby gem for creating extended attribute accessors with defaults, conversions and validations (along similar lines to last week’s ‘SmartProperties’ item).

nanoc 3.4 Released
The popular Web site generation / publishing tool (think a more flexible Jekyll) gets an update.

Markdown Engine Wrapper
An abstraction and wrapper library that gives access to several different Ruby Markdown libraries both in Ruby and via a command line app called ‘markdown’.

Mina: Fast Deployment and Server Automation Tool
Mina lets you build and run scripts to manage your app deployments on servers via SSH. Ruby based and framework/project agnostic.

Sidekiq 2.0 Released, Gets Scheduled Jobs
Sidekiq is a simple but efficient background job processor for Ruby (and Rails.) It’s designed to be Resque-compatible but is faster as many jobs can execute in parallel. Version 2 adds scheduled jobs so you can say ‘send this email 3 days from now.’

Parts of RubyMotion Open Sourced
RubyMotion is a Ruby compiler/framework for iOS that has recently taken the Ruby world by storm. Its creator, Laurent Sansonetti, has now open sourced parts (but not all) of the framework so that the community can contribute to and extend the platform.

IProcess: Transport Ruby Objects Between Processes
IProcess, short for Inter Process Communication(IPC) Process, is a collection of classes you can use to transport Ruby objects between processes running on UNIX-like operating systems.

SmartProperties: Ruby Accessors ‘on Steroids’
Bored of plain old attr_accessors? Include the SmartProperties module and use the property method along with a name and optional configuration parameters to define new properties along with input conversion, validation, and default values.

Jobs

Rails Software Engineer at Mulu.me (Los Angeles)
Join a killer engineering team to build out a social shopping application where users earn for a cause. You’ll be working with Ruby, Rails, JavaScript, PostgreSQL, and building a product you’re proud of with an awesome team.

Rails Developer at IBM [Emeryville, California]
As interested in technical verve as years of experience, IBM has positions for junior and senior engineers with a focus on those experienced with Rails, JavaScript, CSS and jQuery.

Head of Tech or Lead Developer – Purpose (New York, NY)
Manage a new technology initiative for an established agency. The project aims to build tools for the “ethical consumer” and the hands-on role includes all aspects of development, management and deployment. Competitive comp + stock options.

RoR Developers at Quri (San Francisco, CA)
Quri, a San Francisco-based mobile and web startup that’s transforming the $350 billion trade marketing industry, is seeking an experienced Ruby on Rails engineer to join our growing team.

Web Developer – Threespot (Washington DC)
Responsible for more than development, testing, & documentation of web-based software & technical solutions, our Developers are involved in all stages of client engagements, from application design through specifications documentation & production programming. (Ruby welcome!)

Want to post a job? Click here for more info.

Last but not least..

Why Our Code Smells
A well put together slide deck by Brandon Keepers of GitHub with some interesting points on code smells, primarily focusing on testing.

Ruby Fiddle: Ruby Snippets in the Browser
If you’ve done any JavaScript work, you might be familiar with ‘JSFiddle’ a popular site that previews HTML, JS, and CSS you supply in the browser. Ruby Fiddle aims to do similarly for Ruby, though the code runs remotely.

The Mega Ruby News and Release Roundup for May 2012

Welcome to the bumper pick’n’mix of Ruby and Rails news and releases for May 2012, fresh from the pages of Ruby Weekly (which, unsurprisingly, comes out once every week – on Thursdays).

Highlights include: RubyMotion’s release, the JRuby guys are moving to Red Hat, Spree 1.1, DHH’s RailsConf keynote, and JRuby 1.7.0 preview 1.

Headlines

RubyMotion Released: It’s Ruby, but for iOS
The biggest Ruby news of the month! RubyMotion is a Ruby implementation and toolchain for iOS by Laurent Sansonetti, the former MacRuby lead developer, that lets you build iPhone and iPad apps.

DHH’s RailsConf 2012 Keynote (YouTube)
DHH rails against conservatism, people who think about the newbies, and ex-hippies, while celebrating progress and getting the audience to chant “I will not fear change, I will not fight progress”. “Stay hippie,” he closes.

Spree 1.1 (Rails E-commerce Platform) Released
Spree is a popular Rails-based e-commerce system and the 1.1.0 release brings support for Rails 3.2, an API overhaul, and more.

Read A Chapter From ‘Ruby Under a Microscope’, A Forthcoming E-Book
Prolific Ruby blogger Pat Shaughnessy has been working on a new e-book about Ruby language and MRI internals. It’s not finished yet but he’s sharing a single preview chapter for free right now. Enjoy.

Everyday Rails Testing with RSpec by Aaron Sumner
A new e-book written by Aaron Sumner that digs into building confidence with testing Rails apps using RSpec. It comes in PDF, EPUB and Mobi formats. Always handy to have up to date efforts in this regard.

OpenShift (Red Hat’s Answer to Heroku?)
OpenShift is Red Hat’s new, free auto-scaling ‘platform as a service’ for webapps. It supports Java, Ruby, Node, Python, PHP and Perl and seems to be a reasonable entry into a world made popular by Ruby’s own Heroku.

Startups Court Dev Bootcamp’s Ruby Grads with $79K Average Salary
A rare human interest story for Ruby Weekly! Dev Bootcamp is a 10 week $12K bootcamp program for people to get up to speed with Rails development and of their latest batch, 14 of 17 developers ready to get a job got an offer at an average salary of $79K.

The Bastards Book of Ruby
Billing itself as ‘a programming primer for counting and other unconventional tasks,’ the online Bastards Book teaches Ruby programming via practical data processing tasks. It’s aimed at non-programmers and especially journalists, researchers, scientists, etc.

JRuby Core Team Members Moving to Red Hat
At JRubyConf this week, it was revealed that Thomas Enebo and Charles Nutter – key members of the JRuby core team – are moving from Engine Yard to Red Hat. Learn more about what they’ll be up to here.

First Alpha of ruby_parser 3.0 Released
ruby_parser (RP) is a long standing Ruby parser written in pure Ruby but till now it had the disadvantage of not supporting Ruby 1.9 parsing. Now it does! Still only an alpha but a good release to see.

MRI Accepts Google Patch for Google NativeClient (NaCl) Support
Still early days on this but Google has been working on a proof of concept port of Ruby to its NativeClient technology (which lets you compile software to run in Chrome).

Vermont’s First Ruby Conference, July 28 – 29, 2012
Burlington Ruby Conf 2012 will take place in Burlington, Vermont on July 28 – 29th. Join like-minded Ruby enthusiasts for Vermont’s first Ruby conference, hosted on beautiful Lake Champlain.

JRuby 1.7.0 Preview 1 Released
1.7 is proving to be a big release for JRuby and the first preview is out. A key change is that Ruby 1.9.3 is now the default runtime mode (but 1.8 is still available as an option) and support for Java 7’s invokedynamic brings some major performance boosts (when running on the right JVM.)

Heroku’s ‘Cedar’ Stack Now in General Availability
The popular ‘Cedar’ stack on Heroku that allows you to run multiple processes, multiple languages, and more is now out of beta and is ‘generally available’.

Reading

What Makes an Awesome Command-line Application?
David Copeland, the author of Build Awesome Command-Line Applications with Ruby, shares some pointers to building good command line apps in Ruby.

Ruby HTTP Client Performance Shootout Redux
Jonathan Rochkind puts several HTTP client libraries through their paces. Eric Hodel, author of net-http-persistent, gives the write up a thumbs up so that’s good enough for me.

Exhibit vs Presenter
Mike Pack explores the ‘exhibit’ and ‘presenter’ decorator patterns. And if all this sounds like buzzword bingo to you, this is a pretty accessible introduction!

A Vision for Cucumber 2.0
Cucumber is a popular natural language accepting testing toolkit for Ruby and in this post Matt Wynne has collected together ideas from various Cucumber maintainers to see what’s coming in Cucumber’s future.

Schemaless SQL
The slides from a talk from Railsconf 2012 by Heroku developer Will Leinweber who shows off some powerful new features in Postgresql for working with schemaless data as well as JSON datatypes and embedded JavaScript.

Meet 6 Misunderstood Ruby Features
Targeting C++ developers who are learning Ruby, Arpan Sen looks at six areas of Ruby that might trip them up: class hierarchy, singleton methods, self, method_missing, exception handling, and threading. If you already know your stuff though, steer clear.

Multiple Ruby Version Support on Heroku
With the release of Bundler 1.2.0 beta and the Ruby ‘build pack’ you can now select the version of Ruby you want to run on Heroku. Learn more here.

Mixins: A Refactoring Anti-Pattern
An interesting stroll through measuring complexity and refactoring with Steve Klabnik.

Five Common Rails Mistakes
Experienced Rails developer Mike Perham shares a handful of common mistakes he sees in most Rails apps.

How To Get 4x the Performance Out of Heroku with Unicorn
A look at using Unicorn and a Procfile to increase the number of processes that are handling Web requests when using Heroku.

Getting Started with Ember.js and Ruby on Rails
Fresh from the official Ember site comes a guide to building a simple, personal photoblog application using Ember.js and Rails 3.2.

Benchmark Your Bundle
See how long it takes to load each individual library referenced by your Gemfile.

Passing Open Files Between Processes with UNIX Sockets
Jesse Storimer shares a neat technique for using UNIX sockets as a conduit to passing file descriptors between processes.

Backbone.js, CoffeeScript, Jasmine, HAML and Rails Working Together
A holistic walkthrough by Jeremy Walker tying together a bunch of modern Web development technologies.

A Better Way to Set Up Rails on Windows
Don’t flame me about this, but what’s the best way to get a Rails environment running on Windows for development work? Use VirtualBox and a VM says Roshan Choxi of programming training company Bloc.

Three Quick Rails Console Tips from 37signals
Dig into your app with the ‘app’ method, play with helpers, and find out where certain methods are defined (more a general 1.9 trick though).

Anaphora in Ruby, 2012 Edition
Esteemed essayist Reg Braithwaite updates a popular 2009 article about ‘anaphora’ in Ruby, namely language elements that can refer back to earlier used objects or results. A lot of geekery to enjoy here.

Integrating Rails and jQuery Mobile
There are some rough edges when integrating Ruby on Rails and jQuery Mobile for your mobile application and jQuery Mobile core contributor John Bender shows you how to smooth these out.

Objectify: A Better Way to Build Rails Applications
Objectify is a framework that codifies good object oriented design practices for building maintainable Rails applications. In this post, James Golick explains the motivations.

You Don’t Have to Use Bundler to Create New RubyGems
Not a new or provocative opinion, but nonetheless an interesting introduction to the ‘Ore’ project generator which I didn’t know about before.

Injection Vulnerabilities in Ruby Apps Through Bad Regexes
A pretty simple issue but one that I suspect is commonplace.

Tossing Out IRB for Pry
Pry is a powerful and popular alternative to the IRB Ruby console. In this post, Phil Aquilina shows off a few reasons why to give it a go.

CoffeeScript Love: Testing CoffeeScript in Rails
MochaRails is a mountable Rails engine that serves a browser-based Mocha test suite, along with your development JavaScript files, via the Asset Pipeline.

The Development of Sequel
A slidedeck by Jeremy Evans about his work on the popular database interaction library.

Why Our Code Smells
A great slide deck by Brandon Keepers.

Watching and Listening

The Rails API Gem – RailsCasts
Ryan Bates looks at the ‘Rails API’ gem (recently linked in Ruby Weekly) and demonstrates how it can be used to build an API-only Rails app.

10 Minutes on Rails Engines
Ryan Bigg presents a well-recorded ten minute tour of Rails engines, what they are, how they work in different versions of Rails, how to build them, and examples of their usage in Forem and Spree.

Sandboxing Ruby Code: Lessons from the Battlefield
A talk by Tejas Dinkar and Jasim Basheer from RubyConf India 2012 looking at the process of running untrusted code on your server using various sandboxing techniques.

rbenv and Bundler
An hour long talk from the Pittsburgh Ruby Brigade presenting a history of rbenv and Bundler, debating the merits of rbenv and RVM, and showing off rbenv-bundler, a new plugin which ties rbenv and Bundler together.

Making Little Classes Out of Big Ones with Avdi Grimm
In a ‘Lunch n’ Learn’ session with Avdi Grimm, he takes a look at the pros and cons of four different techniques for breaking a too-big class into smaller pieces. 50 minutes long.

RubyMotion with Laurent Sansonetti
As Ruby Weekly may have shown, the RubyMotion Ruby + iOS developer tools have been a big hit lately and their creator Laurent Sansonetti dropped in to chat with the Ruby Rogues about what it all means.

RailsCasts on ‘Squeel’ – a SQL DSL
Squeel provides a comprehensive DSL for writing SQL queries in Ruby, all built upon Arel. Ryan Bates gives us a tour in just 9 minutes.

Libraries and Code

Focused Controller: Bringing Real OOP to Rails Controllers
Jon Leighton notes that classical Rails controllers violate the Single Responsibility Principle (part of the SOLID group of OO programming principles). Focused Controller aims to resolve that by splitting up responsibilities into an object each. The usage example shows it off best.

Initial Queue Implementation on Edge Rails
It seems Rails 4 is getting a built-in unified API for queueing! Enjoy this GitHub commit jam packed with comments and discussion on the development of this feature.

Sublime Text 2 Guard Plugin
This project provides integration of Guard (a tool that handles and responds to events on file system modifications) into the Sublime Text 2 editor. Handy if you want your tests to run automatically but then see the results directly in ST2.

Thor: Toolkit for Building Command Line Interfaces
Thor is not a new tool but it has a new Web site so check it out. It makes an interesting alternative to Rake for certain use cases (although ultimately Rake and Thor should serve different purposes).

Firehose: Build Real-Time Web Applications
Firehose is both a Rack application and JavaScript library that makes building scalable real-time web applications easy. You’ll need to dig in a bit though as it’s a little buzzwordy on the surface.

Kandan: A Slick, Rails-Powered Open Source Live Chat App
A fan of online chat apps like Talker or Campfire? Kandan is an open source Rails app that claims to be ‘the slickest chat app out there!’ I had it up and running on Heroku within a couple of minutes.

DataMiner: Download, Parse and Import Many Data Formats into AR Models
DataMiner by Seamus Abshere is a Ruby library that can download data archives, extract them, parse the data contained, and then import that data into ActiveRecord models.

Monologue: Mountable Rails Blogging Engine
Monologue is a basic mountable blogging engine in Rails built to be easily mounted in an already existing Rails app, but it can also be used alone.

Mechanize 2.5 Released
The popular Web request and Web site interaction library has been updated.

Ampex: A(nother) Practical Use Of Ruby’s & Operator
The ampex library takes the idea from ‘&:symbol’, and adds a little more flexibility. An interesting idea.

Introducing Live for RubyMotion
Live is a gem for RubyMotion implementing some of the ideas presented in Bret Victor’s awesome ‘Inventing on Principle’ talk. It interfaces with the REPL and allows you to control it from the comfort of your preferred text editor.

ActiveRecord Reputation System (from Twitter)
The Reputation System gem makes it easy to integrate ‘reputation systems’ into Rails applications and decouple the system from the main application.

rake-rails: Bringing Rails Commands to Rake
Ever get confused between which things you should use ‘rake’ for and which you should use the ‘rails’ command for? Andy Lindeman brings them both together with rake-rails.

CLAWS: Command Line AWS
A command line based AWS (Amazon Web Services) console with Capistrano integration.

Sextant: Bringing Your Rails Routes to a View
Sextant is a simple addon to give you a /rails/routes URL while in development on a Rails app, as a way to see the routes your app implements. Interestingly, this functionality is being merged into the forthcoming Rails 4.0 as standard.

Jobs

Senior Developer at AT&T [Palo Alto, California]
An opportunity to join a new and rapidly growing group within AT&T called ‘The Foundry’ that works at the cutting edge of new technologies and turns them into new opportunities for AT&T. A love of programming and proficiency with technologies like Ruby, JavaScript, and HTML5 is essential.

Senior Software Engineer at Zendesk [San Francisco]
Popular hosted helpdesk service Zendesk is looking for a senior engineer with 2+ years of Rails experience.

Senior Web Technologist at Holiday Extras UK
Do you spend your leisure time tinkering with the latest NoSQL du jour or playing with the latest AWS toy? Do you dream of big data? Is GitHub the first thing you think of when someone says the word fork? If so, Holiday Extras is looking for techies like you.

The Mega April 2012 Ruby and Rails News Roundup

Welcome to April 2012’s bumper pick’n’mix of Ruby and Rails news and releases, fresh from the pages of Ruby Weekly.

Highlights include: Matz’s new Ruby implementation, MobiRuby (Ruby for iOS), Passenger 3.0.12, Ruby 1.9.3-p194, TorqueBox 2.0, Adhearsion 2.0, and Dr Nic’s App Scrolls.

Headlines

Ruby 1.9.3-p194 Released
A small version bump for Ruby 1.9.3 which includes a security fix for RubyGems (and therefore an updated version) along with oodles of minor tweaks and fixes.

MRuby: A Lightweight Ruby Implementation by Matz
It’s been in the making for a while (remember RiteVM?) but this week Matz’s new ‘lightweight’ Ruby implementation, mruby, spread around the Rubysphere like wildfire. The key goal is to produce an embeddable Ruby implementation that has a smaller footprint than MRI.

Announcing ‘MacRuby In Action’
MacRuby In Action is a new book hat teaches Ruby developers how to code OS X applications using MacRuby, an OS X-focused Ruby implementation. Jerry Cheung, a senior engineer at Intridea authored the book alongside Brendan Lim and Jeremy McAnally.

Phusion Passenger 3.0.12 Released
The popular Apache and Nginx module for deploying Rack-based Ruby webapps gets an update. It now supports Apache 2.4 and the event MPM.

GitHub Rolls Out An Easier Way to Create Repositories
It’s not Ruby specific, but GitHub’s prevalence in the Ruby world should make their latest tweaks to the repository creation process interesting to anyone familiar with the service.

The Future of MacRuby?
Matt Aimonetti of the MacRuby project notes that MacRuby’s de-facto project leader, Laurent Sansonetti, has been M.I.A. on the project since October and no longer works at Apple. But what does that mean for MacRuby? Matt makes some suggestions.

Adhearsion 2.0 Released: Ruby Telephony Continues to Evolve
Adhearsion is an open-source telephony development framework built in Ruby. The version 2 release brings an all new Web site, updated documentation, support for multiple telephony engines, ‘call controllers’ and more.

Next Generation MRI Ruby Packages for Ubuntu Available
The Brightbox brainboxes have been hard at work on new MRI Ruby packages (of 1.8.7 and 1.9.3) for Ubuntu. They’re ready for you to test right now – instructions inside.

TorqueBox 2.0 Released
TorqueBox is a Ruby application server built on JBoss AS7 and JRuby. In addition to being one of the fastest Ruby servers around, it supports Rack-based web frameworks, and provides simple Ruby interfaces to standard JavaEE services, including scheduled jobs, caching, messaging, and services.

Reading

Extending Ruby with Ruby
Some beautiful, code-driven slides by Michael Fairley that dig into adding new features to Ruby by using Ruby itself. To do this, he takes a feature from each of Haskell, Python, and Scala and adds it to Ruby. The slides are complete with speaker notes so it’s easy to follow along.

Read Ruby 1.9: The Online Ruby Book
Not new at all but the site recently went down and I lamented the loss of one of my favorite online Ruby references. Finally it’s back online, so it’s time to let people who haven’t seen it before enjoy its greatness 🙂

On mruby and MobiRuby
Matt Aimonetti, a key contributor to MacRuby, riffs on the possibilities opened up by mruby and MobiRuby (both above) while suggesting that it’ll take a lot for Ruby to be considered a logical choice for iOS development, even by existing Rubyists.

10 Things You Didn’t Know Rails Could Do
The slide deck from a RailsConf presentation given by Ruby demigod James Edward Gray II. In a mere 234 (!) slides, he digs into a lot of interesting Rails crevices. Lots of short examples to enjoy.

The Asset Pipeline for Dummies
Eric Berry explains the Rails asset pipeline from the absolute basics up.

Getting Started With mruby
Matt Aimonetti is a real fan of mruby and shows it off by explaining its purpose, comparing it to Lua, and then by building a barebones C app that calls mruby to run a single line of Ruby code.

Make the Web Fast(er): One Rails App at a Time
A great slide deck by Ilya Grigorik about the role that page loading speed has to play in Web applications. It’s not particularly Rails focused at all but it covers key things to be aware of.

MySQL Query Comments in Rails with Marginalia
Noah Lorang of 37signals talks about marginalia, a new gem that adds extra comments to Rails’ logs which can help in the debugging and performance monitoring process.

Building an iOS Photo-sharing and Geolocation Mobile Client and API
A fine tutorial in the Heroku Development Center about building a photo sharing service with a native iOS client and Rails backend. All deployed on Heroku, naturally 🙂

Rails Tutorial for Devise with CanCan and Twitter Bootstrap
Daniel Kehoe is known for his detailed Rails tutorials and this time he demonstrates how to create a Rails 3.2 application using Devise with CanCan and Twitter Bootstrap, from start to finish.

Introducing DCell: Actor-based Distributed Objects for Ruby
DCell by Tony Arcieri (of Celluloid fame) is an actor-based distributed object oriented programming framework for Ruby. It’s hard to explain the concepts involved in a short summary but this post does a great job (think an easier, better structured DRb).

A Sneak Preview of Phusion Passenger 3.2
Phusion has been hard at work on the popular Apache and Nginx module (already mentioned above) and explains the internal overhauls that have taken place in the forthcoming Passenger 3.2.

Lessons Learned Upgrading Harvest to Ruby 1.9.3 (from REE)
Harvest is a popular time tracking webapp that uses Ruby behind the scenes. They’ve just done a big REE to Ruby 1.9.3 upgrade and in this post T J Schuck shares some notes about the process and the 1.8 to 1.9 issues they encountered.

Some Topics From ‘The dRuby Book’ Explained
A month ago, I shared the news of the Pragmatic Programmers releasing ‘The dRuby Book’ by Masatoshi Seki. Here, its translator Makoto Inoue goes through some of the topics covered in the book and shows off some uses of DRb.

User Authentication with Rails and Backbone.js
Backbone.js is a handy JavaScript framework for developing webapps and Rails is similarly handy on the backend. James R Bracy of 42Floors shares how they use Rails and Backbone together and perform user authentication.

Testing Like The TSA
37signals’ David Heinemeier Hansson says we need to shake any bad habits of ‘over testing’ our code, not aim for 100% test coverage, and avoid the ‘TSA-style of testing.’

Gregory Brown Releases 15 Practicing Ruby Articles.. At Once!
Gregory Brown promised to keep releasing content from his Practicing Ruby journal and has now released 15 articles at once! Tricky to write this one up but Gregory’s work is always a pleasure to read and you are bound to find some useful Ruby reading in here.

On Railcar: An Isolated Rails Environment
After seeing Yehuda Katz’s Kickstarter for Rails.app (covered last week) Jeremy McAnally set to work on a similar project called Railcar. Here’s the what, why, and how.

Driving Google Chrome via WebSocket API
Ilya Grigorik demonstrates how to control a Google Chrome browser from Ruby using its remote debugging API.

Rails Internals: Mass Assignment Security
A look at Rails’ defences against mass assignment issues by Oscar Del Ben.

Matt Wynne On Using Cucumber
Cucumber is the popular framework for executing feature documentation written in plain text in your BDD process. Pat Shaughnessy sits down with Matt Wynne, co-author of The Cucumber Book, to talk about the ideas behind Cucumber and its design.

Watching and Listening

Matz Talks About mruby and Its Possibilities
Back in November 2011, Matz gave a short (9 minutes!) but sweet talk about mruby, what it’s about, and where it’s headed.

The Ruby5 RailsConf 2012 Podcast
The Ruby5 podcast dedicated an entire episode to RailsConf 2012, summarizing DHH’s keynote and talking about some of the other things going on, all in a mere 9 minutes.

RailsCasts on Queue Classic
The PostgreSQL database system can act as a worker queue for Rails apps replacing the need for a separate process to manage background jobs. Ryan Bates shows us how with the ‘queue_classic’ gem.

Rails Sustainable Productivity with Xavier Shay
At the LA Ruby Conference, Xavier Shay gave a talk about testing, data modelling, code organisation, build systems, and more, while suggesting many Rails Best Practices go against the building of solid and robust applications. 30 minutes long and well recorded/produced.

Migrating to PostgreSQL by RailsCasts
Ryan Bates continues his long line of awesome RailsCasts with a look at how to use the open source PostgreSQL database system with Rails and how to migrate an existing SQLite-backed Rails app to using it.

Designing Hypermedia APIs by Steve Klabnik
Steve Klabnik recently gave a talk on REST and Hypermedia APIs, the topic of his forthcoming book, Designing Hypermedia APIs. Audio isn’t great but it’s good to see Steve speak.

DSLs in Ruby
Kathy Van Stone delivers a talk about domain specific languages in Ruby, and shows a brief example. The talk is 40 minutes long and the audio quality somewhat better than Steve’s talk above.

Ruby Rogues Talk to Jeff Casimir about Ruby Training
The Ruby Rogues sit down with renowned Ruby and Rails trainer Jeff Casimir to discuss his role with the Hungry Academy training program and to talk about the ideas behind training students in the art of programming generally.

Crafting Rails Applications with Jose Valim
The Ruby Rogues sit down with Jose Valim to discuss not only his popular book ‘Crafting Rails Applications’ but the actual art of crafting Rails apps itself. At 1h20m long, it’s a deep dive, but perfect for the car!

Are Interpreters (Python/Ruby/PHP) Immoral?
A developer makes an impassioned plea for developers to learn compiled languages because ‘interpreters for non trivial computation’ are immoral and ‘indefensible’ due to their carbon footprint. Hmm.. yeah.. enjoy 😉

Libraries and Code

rails-api: Rails for API Applications
Several popular Rubyists have built rails-api, a plugin that can trim down usually unnecessary Rails features for API-only apps. They are particularly keen for people to try it out and send in their performance results so that it might be added directly to Rails core in future.

Authority: An ORM Agnostic Authorization System for Rails
Authority helps you authorize actions in your Rails app. It’s ORM-neutral and has little fancy syntax. Just group your models under one or more Authorizer classes and write plain Ruby methods on them.

Pry 0.9.9 Released
Pry is a popular (and significantly more powerful) alternative to irb, the interactive Ruby console. Version 0.9.9 of Pry brings line-based code highlighting, method finding, and a torrent of general improvements.

Her: An ORM for REST APIs
Her is an ORM that map REST resources to Ruby objects. It maps HTTP responses to Ruby objects (through JSON) and adds methods to Ruby objects to trigger HTTP requests.

cache_method: An Easy Way to Cache Method Results
cache_method caches the results of calling methods given their arguments. It’s like memoization, but the results are stored in Memcached, Redis, etc. so the cached results can be shared between processes and hosts.

redis_failover: A Ruby-based Solution for Redis Master/Slave Failover
Redis Failover is a ZooKeeper-based automatic master/slave failover solution for Ruby by Ryan LeCompte. (Apache ZooKeeper is a tool for centralized server configuration, coordination, and synchronization.)

App Scrolls: Rails App Generation Magic from Dr Nic
The App Scrolls is a magical tool to generate new Rails and modify existing Rails applications (coming) to include your favourite, powerful magic. Authentication, testing, persistence, javascript, css, deployment, and templating – there’s a magical scroll for you.

First NMatrix Alpha Released
Get your matrix math and linear algebra on with this prototype Ruby library.

rdoc-spellcheck: Check Your Documentation for Spelling Errors
A library by Eric Hodel that uses libaspell to spell check your RDoc documentation.

Jobs

Developer Advocate/Spokesperson/Evangelist at New Relic [San Francisco]
New Relic is the emerging standard for application performance management and wildly popular in the Ruby world. They’re looking for a unique individual who can nimbly walk the line between development and marketing while wearing an Evangelist hat. Sounds fun!

Senior Web Engineer for Rapidly-Growing Education Business (Steve and Kate’s Camp)
Steve and Kate’s Camp is seeking a senior web software engineer ready to get their hands dirty now and interested in growing and leading a technical team down the road. Experience with TDD/BDD, Ruby, Rails, and devops all useful. Based in Sausalito, CA.

Last but not least..

Instant: A Live, Immediate Ruby Editing and Visualization Tool
An interesting browser based editing environment where the Ruby code you type is processed on the fly. Inspired by an awesome talk by Bret Victor who did something similar with JavaScript.

Rails One Click: Another Simple Rails Installer for OS X
I’ve mentioned both Rails.app and Railcar in recent issues, but Rails One Click is another entry to the ‘Rails installer for OS X’ melee. It’s a complete installer with a nice design and well suited to beginners. It focuses on installing only the minimum required to get started building a Rails app.

JavaScript Weekly: Like Ruby Weekly But.. for JavaScript!
I’ve spoken to some readers recently who were surprised to learn I also run a JavaScript weekly newsletter, so I thought I’d give it another mention here. There’s lots of exciting stuff happening in the JS world lately so if you want to keep up.. I’ve got the newsletter for you 🙂