Ruby on Rails 2.3.5 Released

Rails 2.3.5 was released over the weekend which provides several bug-fixes and one security fix. It should be fully compatible with all prior 2.3.x releases and can be easily upgraded to with “gem update rails”. The most interesting bits can be summarized in three points.

Improved compatibility with Ruby 1.9

There were a few small bugs preventing full compatibility with Ruby 1.9. However, we wouldn’t be surprised you were already running Rails 2.3.X successfully before these bugs were fixed (they were small).

RailsXss plugin availability

As you may have heard, in Rails 3 we are now automatically escaping all string content in erb (where as before you needed to use “h()” to escape). If you want to have this functionality today you can install Koz’s RailsXss plugin in Rails 2.3.5.

Fixes for the Nokogiri backend for XmlMini

With Rails 2.3 we were given the ability to switch out the default XML parser from REXML to other faster parsers like Nokogiri. There were a few issues with using Nokogiri which are now resolved, so if your application is parsing lots of xml you may want to switch to this faster XML parser.

And that’s the gist of it

Feel free to browse through the commit history if you’d like to see what else has been fixed (but it’s mostly small stuff).

#190 Screen Scraping with Nokogiri

Screen scraping is easy with Nokogiri and SelectorGadget.

#190 Screen Scraping with Nokogiri

Screen scraping is easy with Nokogiri and SelectorGadget.

Amp: A Revolution in Source Version Control (in Ruby!)

amp.png 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. Even now you can add your own commands to Amp or adjust those that already exist, meaning you can totally customize a powerful source control tool to your own taste.

One of the points that’s constantly stressed on Amp’s rather well designed official site is that the project is actively looking for new contributors and help. They have a repo on GitHub if you want to fork and issue pull requests, as well as an IRC channel on Freenode, #amp.

caliper-logo.png[ad] Find duplication, code smells, complex code and more in your Ruby code with Caliper! The metrics are free and setup takes just one click. Get started!

Holiday Projects

For some reason I find myself starting new projects on holidays. Perhaps it’s mental decompression, or just an excuse to have some fun. Either way, today’s holiday project was a little smaller than usual—I’m already done!

It’s a tiny Sinatra app for allowing people to anonymously submit tickets to your Unfuddle account. You could use this for letting clients submit work requests, beta testers to submit bugs, or whatever.

RPCFN: Ruby**Fun (#4)

Ruby Programming Challenge For Newbies

RPCFN: Ruby**Fun (#4)

By Michael Kohl

About Michael Kohl

Michael KohlMichael Kohl (Twitter / blog) in his day job, works as an IT systems engineer in Vienna, Austria. He fell in love with Ruby in 2003 or so, maintained various Ruby-related packages for Gentoo Linux from 2004-2006 and started being an assistant teacher for RubyLearning.org in early 2009. Besides all things Ruby his interests include mathematics, literature, travelling, foreign languages, (functional) programming languages (e.g. Clojure, Haskell), chess and so much more that he really wishes he wouldn’t need to sleep.

Michael has this to say about the challenge:

The best way to learn programming is to write code! Ruby is fun because it’s easy to achieve results and I really believe that the RPCFN shows new Rubyists how much they can accomplish with relatively little Ruby. Thinking about a problem and then being able to compare your own solution to dozens of others is a lot of fun and a great opportunity for learning, so make sure to take part in these challenges! The reason that I picked this particular challenge is that it’s easy to solve, but requires a bit of thinking to get a somewhat attractive solution.

Sponsors

Chargify

This monthly programming challenge is sponsored by Chargify and O’Reilly Media.

Chargify simplifies recurring billing for Web 2.0 and SaaS companies. Build innovative web applications without worrying about how to bill your customers. Whether you’re a start up or an established business billing thousands of customers a month, Chargify works for you.

Access customer insight, revenue, signups, and cancellation trends right from your real-time dashboard, helping you focus on what’s important – your company’s growth. Get started for FREE to Chargify your business today.

O'Reilly Media

O’Reilly Media spreads the knowledge of innovators through its books, online services, magazine, and conferences. Since 1978, O’Reilly has been a chronicler and catalyst of leading-edge development, homing in on the technology trends that really matter and spurring their adoption by amplifying “faint signals” from the alpha geeks who are creating the future. An active participant in the technology community, the company has a long history of advocacy, meme-making, and evangelism.

Prizes

  • The person with the best Ruby solution (if there is a tie between answers, then the one who posted first will be the winner) will be awarded any one of O’Reilly Media’s Ebook bundle.
  • The person with the second best Ruby solution (if there is a tie between answers, then the one who posted first will be the winner) will be awarded any one of PeepCode’s Ruby on Rails screencasts.
  • The other two prizes, selected randomly amongst the remaining working Ruby solutions, would be any one of:

The four persons who win, can’t win again in the next immediate challenge but can still participate.

The Ruby Challenge

RPCFN

You just started working for CoolNewCompany which is developing mathematics related software. Since you are new to the team, your boss gives you an easy task to test your abilities. Write a class that pretty-prints polynomials, following some simple rules:

  • if a coefficient is 1, it doesn’t get printed
  • if a coefficient is negative, you have to display something like “- 2x^3″, not “+ -2x^3″
  • if a coefficient is 0, nothing gets added to the output
  • for x^1 the ^1 part gets omitted
  • x^0 == 1, so we don’t need to display it

Here’s a couple of usage examples:

puts Polynomial.new([-3,-4,1,0,6]) # => -3x^4-4x^3+x^2+6
puts Polynomial.new([1,0,2]) # => x^2+2

Don’t concern yourself too much with error handling, but if somebody tries to create a polynomial with less than 2 elements, your program has to raise an ArgumentError with the message “Need at least 2 coefficients.”

Please check the provided unit tests for more examples and make sure to use them for verifying your solution!

Requirements: This has to be a pure Ruby script, using only the Ruby Standard Libraries (meaning, no external Gems). You do not need to build a gem for this. Pure Ruby code is all that is needed.

How to Enter the Challenge

Read the Challenge Rules. By participating in this challenge, you agree to be bound by these Challenge Rules. It’s free and registration is optional. You can enter the challenge just by posting the following as a comment to this blog post:

  1. Your name:
  2. Country of Residence:
  3. GIST URL of your Solution (i.e. Ruby code) with explanation and / or test cases:
  4. Code works with Ruby 1.8 / 1.9 / Both:
  5. Email address (will not be published):
  6. Brief description of what you do (will not be published):

Note:

  • As soon as we receive your GIST URL, we will fork your submission. This means that your solution is frozen and accepted. Please be sure that is the solution you want, as it is now recorded in time and is the version that will be evaluated.
  • All solutions posted would be hidden to allow participants to come up with their own solutions.
  • You should post your entries before midnight of 20th Dec. 2009 (Indian Standard Time). No new solutions will be accepted from 21st Dec. onwards.
  • On 21st Dec. 2009 all the solutions will be thrown open for everyone to see and comment upon.
  • The winning entries will be announced on this blog before end of Dec. 2009. The winners will be sent their prizes by email.

More details on the RPCFN?

Please refer to the RPCFN FAQ for answers to the following questions:

Donations

RPCFN is entirely financed by RubyLearning and sometimes sponsors, so if you enjoy solving Ruby problems and would like to give something back by helping with the running costs then any donations are gratefully received.

Click here to lend your support to: Support RubyLearning With Some Love and make a donation at www.pledgie.com !

Acknowledgements

Special thanks to:

Questions?

Contact Satish Talim at satish [dot] talim [at] gmail.com OR if you have any doubts / questions about the challenge (the current problem statement), please post them as comments to this post and the author will reply asap.

The Participants

There are two categories of participants. Some are vying for the prizes and some are participating for the fun of it.

In the competition

  1. Gimi Liang, China
  2. William Yanez, Venezuela
  3. Christiaan Van den Poel, Belgium
  4. Tom Stuart, U.K.
  5. José Sazo, Chile
  6. James Daniels, USA
  7. Pedro Diogo, Portugal
  8. Felipe Elias Philipp, Brazil
  9. Fabio Kreusch, Brazil
  10. Milan Dobrota, Serbia
  11. Jefferson Mariano de Souza, Brazil
  12. Aldric Giacomoni, USA
  13. Michael Lang, USA
  14. Rohit Arondekar, India
  15. Bill Sullivan, USA
  16. Jorge Dias, Spain
  17. Alexander Klink, Germany
  18. Chris Jones, USA
  19. Aurélien Bottazzini, France
  20. Ali Al-Sahaf, Saudi Arabia
  21. John McDonald, USA
  22. Aleksey Gureiev, Ukraine
  23. Fred Fordham, Australia
  24. Tony Chen, USA
  25. Rohit Sasikumar, India
  26. Paul Harrington, USA
  27. Aashish Kiran Chittimilla, India
  28. Benoit Daloze, Belgium
  29. Steve Wilhelm, USA
  30. Marc Minneman, USA
  31. Othmane Benkirane, Morocco
  32. Oleksandr Manzyuk, Ukraine
  33. Pankaj Sisodiya, India
  34. Oliver, UK
  35. Sérgio Silva, Portugal
  36. Isley Aardvark, USA
  37. Rémy Coutable, France
  38. Brad O’Connor, Australia
  39. Suraj Dhakankar, India
  40. Sunny Dackie, India
  41. Philippe Antras, France
  42. Amr Tamimi, Palestine
  43. Sriram Varahan, India

Just for Fun

  1. James Daniels, USA
  2. Phil, Germany

Previous Challenge

RPCFN: Short Circuit (#3) by Gautam Rege.

Update

  • This challenge is now closed. Michael Kohl has a working solution to this problem. This is not a “perfect” or the sole “correct” solution, but just one way of doing it.
  • The (#5) challenge by Peter Cooper, UK is scheduled for 1st Jan. 2010.
  • The (#6) challenge by John Trupiano, USA is scheduled for 1st Feb. 2010.

Technorati Tags: , , , , ,

Racksh: A Rails-Console-A-Like for Rack-Based Ruby Apps

Have you ever yearned for something like Rails’s script/console or Merb’s merb -i in your other Rack based apps? If so, then Marcin Kulik‘s racksh, inspired by Heroku’s console, might be for you.

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.

$ racksh
Rack::Shell v0.9.4 started in development environment.
> Article.all
=> # returns all articles...

As of version 0.9.4 (released this week), racksh uses Bryan Helmkamp’s rack-test to simulate HTTP requests to your Rack application via the $rack variable.

$ racksh
Rack::Shell v0.9.4 started in development environment.
> $rack.get "/"
=> # returns a Rack::MockResponse

Racksh also allows you to apply configuration through a .rackshrc file. This can be used to set headers which will be used for requests, or to make additional setup requests (e.g. to make sure a user is logged in).

Install as a gem from Gemcutter, or get the source from Github.

gem install racksh -s http://gemcutter.org

For more details, check out the project’s README, and these recent posts on Marcin’s blog.

Todd Huss Winner RPCFN #3

In this brief interview, Satish Talim of RubyLearning talks to Todd Huss of USA, winner of the third Ruby Programming Challenge For Newbies.

Todd Huss

Satish>> Welcome Todd and thanks for taking out time to share your thoughts. For the benefit of the readers, could you tell us something about your self?

Todd>> Thanks Satish for the opportunity. I am 36 years old and for the past couple of years have been spending half the year living on our sailboat in Mexico (with my wife and daughter). During hurricane season in Mexico we haul the boat out and come back home to San Francisco, where we work as independent contractors. I keep a work related blog and my current contract is working as the interim CTO of Common Sense Media.

Satish>> How did you get involved with Ruby programming?

Todd>> My interest in Ruby started when I was the VP of Technology at Greatschools.net and we were looking to move from our homegrown Perl environment to an MVC platform with OR Mapping and a testing framework. This was in 2004 the early days for Rails, and while we ended up going with Java/Spring MVC/Hibernate, I was really impressed with both Ruby and Rails. As Rails matured and new projects came up I started using both Ruby and Rails whenever I could because I found that I really enjoyed coding in Ruby and was really productive in Rails.

Satish>> Could you name three features of Ruby that you like the most, as compared to other languages? Why?

Todd>> As a CTO-type my favorite feature of Ruby is less about the language and more about the community. It’s the way in which test (and more recently behavior) driven development are considered essential in the Ruby community. Having seen first hand how testing reduces bugs, forces us to write cleaner code, and in the end helps us ship features more quickly, is really exciting. No other language community (that I’m aware of) has embraced testing to the degree the Ruby community has. Second, I love how Ruby lets you write highly expressive DSL’s which helps express the intention of our code, making it far more maintainable when another developer needs to work with it. Lastly, Ruby really taught me the value of blocks and closures and it drives me crazy when I have to work in a language without that now.

While Ruby is hands-down my first choice of language, I do want to be balanced and say that when working with dynamic languages like Ruby, I find doing big refactorings more labor intensive. My opinion is totally subjective and unscientific but generally when working with statically typed languages I shoot for 70-80% test coverage whereas with dynamic languages I find you really need to be close to 100% test coverage to do a big refactoring with confidence. That said, IDE’s like Rubymine and Netbeans have come a long way in helping ease the pain of big refactorings and the productivity of Ruby far outweighs the additional effort of refactoring.

Satish>> How was experience of taking part in the Ruby Programming Challenge For Newbies (RPCFN)?

Todd>> Thanks so much for hosting the Ruby Challenge! I’ve participated in all 3 so far and really enjoyed focusing not only on solving a problem, but figuring out how to solve it elegantly. With each challenge I’ve learned something new and exciting about the language. This time around I learned about Ruby’s support for infinity which was great because it allowed me to compare paths without having to use nil (and therefore extra nil? checks) for dead-end paths.

Satish>> What are your future plans?

Todd>> We’re planning to go back to our boat in Mexico and then sailing her to Hawaii, Alaska, and then back home to San Francisco in 2010. Our daughter is getting close to high-school age so we’ll be settling back down and I’ll be looking for a full-time job again. I’m also thinking of coming up with a new language and web framework, because my daughter already has a name for it- “Emeralds on Tightropes”.

Thank you Todd. In case you have any queries and/or questions, kindly post your questions here (as comments to this blog post) and Todd would be glad to answer.

Technorati Tags: , , , , ,

#189 Embedded Association

Learn how to set up a one-to-many or many-to-many association which is entirely embedded into a single column through a string or bitmask.

#189 Embedded Association

Learn how to set up a one-to-many or many-to-many association which is entirely embedded into a single column through a string or bitmask.

Quick Tip: MongoMapper::DocumentNotFound

If you’d like to get a 404 response when you encounter a MongoMapper::DocumentNotFound error, which is the default response for ActiveRecord::RecordNotFound, simply toss this in your initializer where you set up your Mongo connection (I use config/initializers/mongo.rb):

ActionController::Base.rescue_responses[‘MongoMapper::DocumentNotFound’] = :not_found

MagLev Alpha Released: A New, Scalable Ruby Implementation

maglev.pngMagLev 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. Developer Avi Bryant then did a short presentation at RailsConf 2008 where he gave a comprehensive overview of what MagLev is along with some live demonstrations.

Why Should You Care?

In short, MagLev is cool for a few reasons. Two key ones being that 1) MagLev runs on the SmallTalk virtual machine which, it is claimed, should yield significant performance increases for a language like Ruby, and 2) a MagLev environment allows multiple Ruby processes over multiple machines (if you wish) to use the same objects simultaneously for easy scalability. Avi’s video is great if you want to get a grasp on it:

MagLev presentation at RailsConf 2008 from Monty Williams on Vimeo.

Developer Monty Williams is keen to stress that this is an alpha, not a beta, so you can’t expect it to run Rails or any gems that require C extensions. That said, it does run Sinatra, Rack, and RubyGems, plus a significant effort has been put into passing the RubySpec, so it’s not as if it’s a crippled implementation as such.

If you want to learn more, consider following the MagLev team on Twitter @MagLev and checking out the official mailing list “maglev-discussion.”

Installation

The suggested installer didn’t work out for me, but MagLev is available from GitHub to clone and install. Bear in mind that MagLev will only work on 64 bit versions of OS X, Linux, and Solaris, so if you’re in the 32 bit club, there’s no point in going any further (yet).

Another limitation is that it seems it demands an already installed Ruby 1.8.6 p287 (and specifically that version!) for you to do anything fun. Luckily, if you have Ruby Version Manager (a.k.a. RVM) installed, in theory you can have that up and running within a couple of minutes with rvm install ruby-1.8.6-p287 (unless you’re on Snow Leopard it seems, lol.. it’s a total error-a-thon here on mine for now – may update if I get a solution).

To install MagLev from GitHub:

git clone git://github.com/MagLev/maglev.git
cd maglev
./install.sh

.. then follow the note about adding the path to your .bashrc or .bash_profile and running Rake in a new prompt (though still under the maglev project directory).

If you get any further with doing something interesting like, say, getting an IRB prompt up successfully on this, do post a comment 😉

caliper-logo.png[ad] Find duplication, code smells, complex code and more in your Ruby code with Caliper! The metrics are free and setup takes just one click. Get started!

Exporting MySQL database

Exporting mySQL dumps can sometimes be tricky. Some sites suggest exporting dump like so:

mysqldump database_name > dump.sql

However, the problem with this method, is that the stream redirect might not be able to handle UTF-8 encoding correctly on certain OSes. I recently had a project that uses exotic characters and some characters would appear garbled up in the database because it was exported this way.

The way to export it, with the original characters intact, is to let mysqldump write to disk using the -r flag:

mysqldump database_name -r dump.sql

Ok, I lied. Exporting MySQL dump is easy.

RAILS_ENV set to “test” in development

I came across this rather annoying detail early on in one of our projects.

Loading development environment (Rails 2.3.4)
>> RAILS_ENV
=> "development"
>> ENV['RAILS_ENV']
=> "development"
>> require 'spec/rails'
=> []
>> RAILS_ENV
=> "test"
>> ENV['RAILS_ENV']
=> "development"
>> exit

Turns out that just by requiring ‘spec/rails’ it was blindly setting the RAILS_ENV constant to ‘test’ without warning. It sorta makes sense, as you would only really need the rspec gem when running tests, but I like to use the standard:

config.gem 'rspec',         :lib => 'spec',         :version => '1.2.9'
config.gem 'rspec-rails', :lib => 'spec/rails', :version => '1.2.9'


so that when new devs come into the project, they know exactly what gems and what versions are required.

This is fine, but saying config.gem actually goes out and requires the rspec gem right then. Obviously this isn’t needed on production, so we can go ahead and do something like

# list gems here that only need to be around for development
if RAILS_ENV == 'development'
  config.gem 'rspec',                   :lib => 'spec',           :version => '1.2.9'
  config.gem 'rspec-rails',             :lib => 'spec/rails',     :version => '1.2.9'
end

But that still doesn’t solve my issue. So the hunt is on… I started looking in ‘spec/rails’

Then narrowed it down within that file to:
require ‘spec/rails/extensions’

Then from that file to:
require ‘spec/rails/extensions/spec/runner/configuration’

Then from that file to:
require ‘test_help’

Which lives in Rails, (railties/lib/test_help.rb) and performs this brilliant idea:

# Make double-sure the RAILS_ENV is set to test,
# so fixtures are loaded to the right database
silence_warnings { RAILS_ENV = "test" }

As long as you make sure you have

ENV["RAILS_ENV"] ||= 'test'


in your spec_helper.rb, you shouldn’t have any issue with the environment. So I decided to fight fire with fire, and ended up just sticking this into my config/initializers/

# NOTE: this is here because using 
#
# config.gem 'rspec',              :lib => 'spec',        :version => '1.2.9'
# config.gem 'rspec-rails',        :lib => 'spec/rails',  :version => '1.2.9'
#
# automatically sets the RAILS_ENV to 'test' no matter what ENV['RAILS_ENV'] is
#
# see vendor/rails/railties/lib/test_help.rb:3
#
# so we fire back our own silent hack. pew pew pew. -danny (2009.10.29)

silence_warnings { RAILS_ENV = ENV['RAILS_ENV'] || 'development' }

And just like magic, my development environment is back to RAILS_ENV == ‘development’

RubyConf 2009 Lightning Talks

Last night it was my great pleasure to host the Lightning Talks session at RubyConf 2009. We had an amazing series of 20 talks that took just over 2 hours. The tech gremlins seemed to be off drinking somewhere and none of the presentations failed.

Here’s a list of all the speakers and links to their stuff.

#101: Let’s put another shrimp on the barbie!

Episode #101 Let’s put another shrimp on the barbie!

Sponsored by New Relic
The Rails Envy podcast is brought to you this week by NewRelic. NewRelic provides RPM which is a plugin for rails that allows you to monitor and quickly diagnose problems with your Rails application in real time. Check them out at NewRelic.com.

Show Notes

  • Torquebox

    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.

  • Metaprogramming in Ruby: It’s All About the Self

    Yehuda Katz has an in-depth blog post explaining self’s scope in Ruby.

  • Skills Matter Rails Exchange

    Skills Matter will be organising the 3rd annual RoR eXchange on 3rd December 2009.

  • Racksh

    Racksh is a Rails-like console for any Rack based ruby web app.

  • 11 Things to Consider Before Deploying Your Rails Application

    Vinsol goes over their checklist for deploying Rails apps.

  • Jammit

    Jammit is an industrial strength asset packaging library for Rails, providing both the CSS and JavaScript concatenation and compression that you’d expect, as well as ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI / MHTML image embedding.

  • Deep in Action Mailer#deliver, part 1

    Part 1 in a series that will delve deep into several commonly used methods of Rails.

  • Shard The Love

    ShardTheLove is a horizontal scaling solution written in Ruby. It has support for migrations, testing/RSpec, a flexibility of partitioning patterns, a simple syntax, support for Rails & Merb

  • Using the Rubygems Bundler for Your App

    Sam Merritt posts on the Engine Yard blog about getting the new Rubygems bundler working in your app.

  • Environmental Seeder

    Francisco Tufró has released environmental seeder — a simple addition to db:seed to allow loading environment specific data through seeds.rb without
    any programming.

  • Rubinius 0.13 Released

    Rubinius 0.13 has been released with several rewrites, additions, and fixes.

  • Formtastic 0.9.2

    Justin French has released formtastic 0.9.2. From the blog post:

    I’ve just pushed the new Formtastic 0.9.2 gem up to Gemcutter this morning on the train. There’s a few API changes as we edge closer and closer 1.0, so I thought I’d do a quick post to document it all.

  • MacRuby 0.5 beta 2

    MacRuby 0.5 beta 2 has been released.

  • Request Log Analyzer

    Request Log Analayzer version 1.5.1 has been released with new features and bug fixes. This is the first time we have ever mentioned it on the show.

Rails Envy Podcast – Episode #101

Episode #101 Let’s put another shrimp on the barbie!

Sponsored by New Relic
The Rails Envy podcast is brought to you this week by NewRelic. NewRelic provides RPM which is a plugin for rails that allows you to monitor and quickly diagnose problems with your Rails application in real time. Check them out at NewRelic.com.

Show Notes

  • Torquebox

    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.

  • Metaprogramming in Ruby: It’s All About the Self

    Yehuda Katz has an in-depth blog post explaining self’s scope in Ruby.

  • Skills Matter Rails Exchange

    Skills Matter will be organising the 3rd annual RoR eXchange on 3rd December 2009.

  • Racksh

    Racksh is a Rails-like console for any Rack based ruby web app.

  • 11 Things to Consider Before Deploying Your Rails Application

    Vinsol goes over their checklist for deploying Rails apps.

  • Jammit

    Jammit is an industrial strength asset packaging library for Rails, providing both the CSS and JavaScript concatenation and compression that you’d expect, as well as ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI / MHTML image embedding.

  • Deep in Action Mailer#deliver, part 1

    Part 1 in a series that will delve deep into several commonly used methods of Rails.

  • Shard The Love

    ShardTheLove is a horizontal scaling solution written in Ruby. It has support for migrations, testing/RSpec, a flexibility of partitioning patterns, a simple syntax, support for Rails & Merb

  • Using the Rubygems Bundler for Your App

    Sam Merritt posts on the Engine Yard blog about getting the new Rubygems bundler working in your app.

  • Environmental Seeder

    Francisco Tufró has released environmental seeder — a simple addition to db:seed to allow loading environment specific data through seeds.rb without
    any programming.

  • Rubinius 0.13 Released

    Rubinius 0.13 has been released with several rewrites, additions, and fixes.

  • Formtastic 0.9.2

    Justin French has released formtastic 0.9.2. From the blog post:

    I’ve just pushed the new Formtastic 0.9.2 gem up to Gemcutter this morning on the train. There’s a few API changes as we edge closer and closer 1.0, so I thought I’d do a quick post to document it all.

  • MacRuby 0.5 beta 2

    MacRuby 0.5 beta 2 has been released.

  • Request Log Analyzer

    Request Log Analayzer version 1.5.1 has been released with new features and bug fixes. This is the first time we have ever mentioned it on the show.

5 Top Ruby and Rails Jobs for November 2009

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). And if you post before the end of 2009.. we have a discount code 2009deal that gives you $50 off!

On to the jobs:

backchannelmedia.pngRuby Developer @ Backchannelmedia (Boston, MA): Backchannelmedia’s mission is to “turn couch potatoes into consumer powerhouses.” It develops technology that goes into set-top boxes. As a Ruby developer for them, you’d be working on backend code and applications. You’ll need experience with Apache, Git, Rails and MySQL, and need a minimum of 3 years’ experience as a software engineer. Click here to learn more about the job. (Note: This listing expires on November 25, so hurry..)

shopittome.pngStellar Ruby on Rails Engineer @ Shop It To Me, Inc. (San Francisco, CA): Shop It To Me, Inc is a small, super-profitable startup in the online shopping space located near South Park in San Francisco. They’re looking for a proactive Rails developer who’s ready to get involved in “everything” from brainstorming and requirement setting through to design, coding, scaling, deployment, etc. Uniquely, they’ve put together a Ruby version of their job posting too, which is well worth looking at! Click here to learn more about the job.  

citrusbyte.pngSenior Software Engineer @ Citrusbyte (Los Angeles, CA): Citrusbyte is a Los Angeles based Web app development shop that primarily uses Ruby to get the job done. They’re looking for software engineers to join their team – Ruby experience is not mandatory as long as you’re a hotshot in another relevant Web technology (such as Django, Catalyst, Ocsigen, etc). I’ve visited the Citrusbyte guys in LA before and they have a great work environment and ethos. Uniquely for a job on our board so far, Citrusbyte has given a little code test to pass while applying for the job 🙂 Click here to learn more about the job.  

patientslikeme.pngRuby on Rails Developer @ PatientsLikeMe (Cambridge, MA): PatientsLikeMe is an exciting company in the social health space that is building a data-oriented patient community. They’re looking for an experienced Ruby on Rails Developer who wants to work on a product that makes a difference in patients’ lives. You’ll need at least a year’s experience with Rails, 2 years of experience with JavaScript, good test writing skills, and proficiency with CSS, HTML and version control. Click here to learn more about the job.  

angrylapdog.pngRuby and Ruby On Rails Developer @ Angry Lapdog Productions (Seattle, WA): Angry Lapdog Productions is an early-stage startup developing innovative ways of finding and interacting with features on many of today’s most popular Web sites. They’re looking for an experienced Rails developer who also has experience developing standalone Ruby applications with unit and integration testing. Click here to learn more about the job.

P.S. Just as a test to see if anyone gets as far as down here, we have another discount code.. “greatdeal” (without the quotes) that gives 50% off when you post a job.. it also expires at the end of the year 🙂

In the Good Old Days

I wanted to generate an Rails app running on 1.2.3 … so I don’t forget here is the command.

rails _1.2.3_ app_on_1_2_3

Just make sure the rails 1.2.3 gem is also installed.

40% off Thanksgiving PragSale now through 11/25