Overt humor isn’t usually Ruby Inside’s thing, but it’s the holiday season, so there’s nothing wrong with kicking up your heels and having a little fun. Don’t worry – this won’t become a habit. Promise! After the fold, check out a chart showing how programming language fanboys (Ruby’s included) see each other’s respective languages.
Friendly is a new Ruby ORM (a la ActiveRecord) that lets you easily use NoSQL ideas on regular database engines, such as MySQL. Developer James Golick has written a blog post introducing Friendly that goes into detail on how it works – with code examples. Effectively you get schema-less, document-like storage (with indexes!) but based around MySQL.
If you’re not familiar with “NoSQL“, it’s a blanket/branding term (somewhat like AJAX or Web 2.0) that covers non-relational forms of databases that, typically, have no need for SQL. A common subset of NoSQL technologies is the “document-based database,” as provided by systems like CouchDB or MongoDB (for which RailsTips author John Nunemaker has evangelized strongly). Read More
Phusion Passenger and Ruby Enterprise Edition developers Ninh “Hernandez” Bui and Hongli Lai travelled to San Francisco last week and gave a 35 minute Google Tech Talk called Building A More Efficient Ruby Interpreter.
The talk focused on how the guys (with some help from other sources, including Joe Damato and Aman Gupta) have dug into MRI Ruby 1.8′s internals to get some significant memory usage and thread performance improvements for their Ruby Enterprise Edition branch (they’re not calling it a fork) of Ruby 1.8.
The video is presented in HD so the slides are easy to see and the audio is solid. Read More
I love checking out new Ruby libraries, and recently many new ones have passed my eyes. The most prominent releases get their own post on Ruby Inside, but often there are less significant libraries that I’d struggle to write 100 words about yet still contribute to Ruby’s lifeblood. This post aims to round up a selection of my recent discoveries.
RConfig – Powerful Ruby configuration management
RConfig, by Rahmal Conda, bills itself as a “complete solution for Ruby configuration management” and it certainly has a compelling feature-set. It supports YAML, XML, and properties files (a bit like INI files) and provides a short hand global access to application configurations in both enumeration-based and dot-notation/method forms. Read More
It’s long been a bone of contention in the Ruby world that Ruby, as a programming language, doesn’t have an official spec (though RubySpec has been a noble, community effort to build an executable specification for Ruby). Now, though, there’s a draft, official Ruby specification available for you to check out- based on Ruby 1.8.7 (which some aren’t happy about).
From the announcement:
For wider and more application of Ruby language, “Ruby Standardization Working Group” has been established under Information-technology Promotion Agency, Japan (IPA) to define the specification of Ruby language on Oct. 2008. Since then the WG has been drafting the specification of Ruby language. Read More
Uh oh, it’s upgrade time again. Today, the official Ruby 1.9 maintainer (Yuki Sonoda, a.k.a. Yugui) announced a heap overflow vulnerability in Ruby 1.9.1 and, subsequently, the release of Ruby 1.9.1-p376 (patch level 376). As the current production level release of Ruby, this is a crucial upgrade – unless you’re still using Ruby 1.8.x, which isn’t affected at all.
As well as fixing the vulnerability, Ruby 1.9.1-p376 also includes over 100 bug fixes on the previous release, none of which are particularly interesting. You can check this release’s change log to see if anything affects you.
If you want to download Ruby 1.9.1-p376 now, the following URLs will work direct:
Much of Merb’s momentum has been merged into Rails 3, but one-time Engine Yard developer Daniel Neighman has found himself moving in a new direction, inspired by what they had once achieved with Merb Slices. Since then, he’s taken fully-mountable Rack applications to the extreme in creating Pancake, a tool & framework to let you stack and loosely couple Rack-based webapps.
Daniel states that web “applications should be self contained rack applications, able to function as gems, able to pick up an entire application and mount it inside another, able to inherit the whole application and take care of the low level plumbing,” and also “let you create your own type of application when required.” Pancake achieves this by building upon some excellent existing projects, including Tilt for templating, Usher for routing, and Hashie to extend the features of Ruby’s hashes and give them additional object-like functionality. Read More
Rango is a Rack-based lightweight Web framework by Jakub Šťastný that has seemingly borrowed a little bit less from past Ruby frameworks and a bit more from Django. Based on the 1.9 version of Ruby, Rango works with rvm, Rip, Usher, Warden, and both the new Gem bundler and the venerable DataMapper by default.
Philosophically, “Rango is attempting to be as agnostic as possible, valuing simple, readable code. It intends to encourage explicit code rather than implicit magic.” Modularity is a top priority. In many ways it feels like Ramaze, but with a newer “era of Rack” foundation. Read More
Amp is a new Ruby based project that aims to “change the way we approach VCS” (version control systems). Currently it’s basically a port of the Mercurial version control system – a common alternative to the Git system that’s more popular in Rubyland – but it aims to abstract things to the point where it could be used in place of Git, Bazaar, SVN, CVS, Darcs, and so forth.
The creators of Amp believe that while there are lots of great repository formats out there, none of the official clients are “truly good software” and so they’re aiming to build something that abstracts away all of the pain into a heavily customizable Ruby library and client. Read More
Racksh is a console for Rack based ruby web applications. It allows you run a console in the context of an application environment for Rails, Merb, Sinatra, Camping, Ramaze (or even your own framework) provided there is a rackup file in the root directory.
When you run the racksh command, it loads the whole application environment just like a Rack web server, but instead of running the app it starts an irb session where you can invoke commands. Read More
MagLev is a new(ish) Ruby implementation built by Gemstone Systems that focuses on providing an integrated object persistence layer and a distributed shared cache – a truly scalable Ruby implementation. Maglev has, however, had an air of vaporware about it, having been hyped up in early 2008 and only available to a small group of alpha testers till now. That changes today with the first public, alpha release!
Back in early 2008, MagLev program manager Bob Walker did an interview with InfoQ about the project where he said that 8 people were working on MagLev, so this is a pretty big deal for them. Read More
Looking for a Ruby or Rails job in this economy? They’re still there! They seem to be getting posted daily on jobs.rubynow.com but we’ve got 5 of our own that have come in via the Ruby Inside jobs board.
If you want to post a job to our job board check out our new Post A Job page. It explains it all. It’s $249 for 60 days of exposure with a link on all Ruby Inside and Rails Inside pages, exposure through Simply Hired, and inclusion on a post like this that goes out to all 22,000 subscribers. Most ads get 1-2,000 direct views during their run (and linked from about 240,000 pageviews on our sites in all). Read More
MacRuby, a port of Ruby 1.9 to the Mac OS X Objective C common runtime, is today one step closer to a production-ready Ruby implementation with the release of beta 2 of MacRuby 0.5. MacRuby 0.5 has been highly anticipated since it was first mentioned back in March because it promises significant performance improvements, a new LLVM based virtual machine (replacing YARV), and significant compatibility improvements and bug fixes. Even still at this beta stage, 0.5 delivers on these promises.
New in MacRuby 0.5 so far:
- rdoc and ri now work – thanks to compatibility bug fixes
- Rack and Sinatra support
- Experimental support for BigDecimal, OpenSSL, and JSON extensions
- Compiler with support for building fat binaries (i.e.
In the past two years we’ve seen a number of changes in the world of Ruby webapp deployment, but have you heard of Torquebox? Built upon the Red Hat Inc. JBoss middleware, Torquebox is an enterprise-grade application server that provides scale-oriented services to your Ruby webapps, including turn-key clustering. With its latest release, Torquebox supports all Rack-based Ruby frameworks.
Torquebox comes with job scheduling and asynchronous task scheduling out of the box (no extra installs necessary), and while I’ve grown fond of RabbitMQ, the ease of using the built-in JMS (Java Message Service) messaging is appealing, particularly if you’re likely to deploy within a Java dominant environment. Read More
To date, the main ways to send e-mails from Ruby have been Net::SMTP, TMail, and Rails’ ActionMailer (which uses TMail). Now, however, there’s a fourth option, the simply named “mail” by Mikel Lindsaar.
Mail is a new pure Ruby library designed to handle the generation, parsing, and sending of e-mail in a “Rubyesque” manner. Both the sending and receiving e-mails can be handled through the library and, where necessary, Mail proxies methods from libraries like Net::SMTP and Net::POP3. Ruby 1.9 support has been built in from day one so dealing with different text encodings in your e-mails is easier than ever (Mikel claims this is less than straightforward with TMail). Read More