Tagged: Ruby

RailsConf 2012 Wrap Up

IMG 0370

I was fortunate enough to be able to work out attending RailsConf 2012 in Austin, TX.   This was the first time on many years that the conference was not organized by O’Reilly but rather Ruby Central, Inc.

I have to go on record and say I usually avoid cities but the city of Austin is a great place and would not hesitate to return.  The people are friendly and there is so much diversity in the city that there is something new on each corner.  I noticed an abundance of restaurants with so many different types of food.  I can’t say I had a single bad meal during my journey.  Everyone I spoke with about the trip said I had to try the BBQ, and they were right…it was fantastic.

IMG 0379

Many of the sessions overfilled the room.  This on in particular exemplifies what I’m talking about.  I bet the fire marshal wasn’t aware of these.  Overall the floors were pretty comfortable.

It was often difficult to decide which sessions to attend, with 3 full-tracks there always seemed to be two talks during the same time slot I wanted to take.  I usually decide which sessions to attend by how applicable they are to current work.

One of my favorite sessions was by Obie Fernandez about using Redis with Rails.  Although the examples of the talk were from his recent startup, they were excellent and showed integrating Redis into a Rails application not to remove ActiveRecord but to compliment it.  Obie discussed a gem he released to help the integration called redis_props along with sample code used in the talk.  The code is clean and concise…great stuff.

Another talk I found personal value in was the Semi Automatic Code Review by Richard Huang.  Richard is the creator and maintainer of the Rails Best Practices gem.  In the talk he discusses another related open source project called Railsbp.com which allows for your code to be reviewed when committing to Github.  The results will be displayed on the Railsbp.com site where you can change the code right there and commit back to your repo.  Very informative details produced from the site, GitHub allows hooks into the service and thoughtfully open sourced.  I wasn’t aware of the site before but now I am using it regularly.

The other talk which I took a lot away from was Digging Deep with ActiveSupport::Notifications by Matt Sanders.  This talk when into great detail with many examples of using notifications in your applications.  It is similar to the event publishing and subscriber model from other platforms such as .NET.  Having spent many years writing .NET applications this talk brought back many memories of this pattern.  The techniques exemplified here I had never used in Rails but do need this functionality on a new project.  

UPDATE (05/03/2012): One talk that was intended to be included here, is from Lori Olson.  Her talk titled, Mobile Rage – What causes it & how to fix it (Confreaks), takes the view of web application use on a mobile device from the user’s perspective and how developers can implement very simple techniques to ease the pain.  I recommend this one highly, good stuff and some tips I was not aware of.  I admit I have some sites that can take advantage of this.  

IMG 0387

The final keynote of day one was from a non-Ruby developer, Rich Hickey, which seemed to be out of the ordinary.  Maybe he was there to pull some Ruby developer to the Clojure world.  It appears Rich is trying to convince these two Rubyist that LivingSocial would be better with Clojure.  I wish I could have overheard the conversation.

There were three very large, two-sided, white boards used for companies to post jobs, and they were pretty full of opportunities.  I noticed there were far too many companies attempting to make the next Facebook or Twitter and not enough companies creating really useful applications.  There were exceptions from what I could see, but too few.  I remember the same thing happening around 2000 and then the bubble burst.  Apparently we are not better from this event in history because we have not learned from it.

I finally met face-to-face many friends I only knew from various social networks with lively hallway track discussions.  I think this is the #1 reason to attend conferences.  The materials from the talks are available everywhere and with Confreaks recording all the sessions, you can watch the show later.  You can’t however, experience meeting new friends and seeing old ones without attending.

I recommend every Rails developer attend just one of these events, well worth the time and effort.  The next on is in Portland, OR from April 29 to May 2, 2013.

Goruco 2011

IMG 0070

I had never had the opportunity to attend Goruco in New York City before, not because I couldn’t make it but rather because I wasn’t fast enough to get a ticket before the conference sold out.  Now I can understand why it sells out so fast, it is a fantastic conference run by a great group and organized with precision.

I decided to make the trip from CT to NYC the same day as the conference and return the evening after it ended, making for a long day indeed.  Getting up at 3:30 AM seems almost unnatural to drive an hour to meet a friend to make the trip by train from New Haven and arriving at Grand Central Station just after 7:30 AM with my friend and fellow Rubyist, Mike Morris of RecDesk (great software for your recreation department, by the way).

A short trip by subway to lower Manhattan put us at Pace University with plenty of time to settle into the conference.

The Venue

Pace University is the host for Goruco and has been in the past.  Since it is a university and setup to handle students, it makes a perfect back drop to spending the day talking about Ruby.  The setting in downtown Manhattan is a great place in a wonderful city.

IMG 0083

Just a short walk from Pace visitors are treated with the new World Trade Center under construction.

The Lineup of Talks

Whenever I attend a conference there are always talks that stand out for me, either because the content is great or the topic is something I am working on or interested in at the moment or maybe both.

IMG 0079

As you can see here, Evan Phoenix waves to the crowd while demonstrating some sleight of hand.

There were 7 talks plus RejectConf and of the seven, Jeremy Ashkenas’s talk titled Coffeescript for the Well-Rounded Rubyist and Evan Phoenix’s talk, Build it and they will come (Rubinius Edition) were the two talks that stood out.  Jeremy is the creator of CoffeeScript and Evan the creator of Rubinius and this fact alone makes their deep knowledge shine through. When a speaker knows a subject as deep as these two, it’s obvious in the delivery and the their ability to answer any question in great detail.

The announcement at RailsConf that CoffeeScript would be included by default in Rails 3.1 and the fact that I have never enjoyed writing JavaScript meant I really was looking forward to this talk.  I had been playing around with CoffeeScript recently after listening to the screencasts from RailsCasts and PeepCode and really liked what I saw.  An opportunity to hear the creator of CoffeeScript, Jeremy Ashkenas, speak could not be passed up.  

Engine Yard has been 100% committed to Ruby and the development of Rubinius for a long time and this level of commitment has piked my interest over the past several months.  I have spend time with Rubinius, testing my applications and using it for new development.  It has been very stable and performant and I look forward to the day it supports 1.9.x.  I think once we see version 2.0 will be the time to start moving Rubinius to production.  So this talk was important to me and Evan did not disappoint.  He laid out a clear roadmap for the product with a call to action for developers to use it, report bugs and help fix them.

The other 5 talks were also really good, along with the end of day lightening talks made for a day of learning.

New Friends

I met up with a lot of folks who I only knew from Twitter, blogs or some other way.  I always find it interesting to walk around and try to catch a glimpse of people’s name badges to see if they are familiar.  It’s also interesting to try to match a Twitter avatar to a real face.

I am glad for the opportunity to meet these people finally face-to-face.

Missed Opportunities

The conference organizers planned for a cruise on the Manhattan water which included dinner and drinks but our lack of planning left us to only watch as others sailed off.  After a dinner and a couple cold beers we headed back to CT.  The trip home seemed like a longer journey than our arrival, finally getting in at 2:00 AM.

I would have liked to spend the entire weekend in the city and attend all the activities the organizers planned but timing didn’t work out.  I am sure everyone had a great time.

Next Year

It was a great event covering a great day.  I plan to be back next year but I will be spending the weekend in the city and hopefully there will be another cruise at Goruco 2012.

If I had one suggestion to make to those planning Goruco next time, I wouldn’t mind seeing this as a two-day event full of talks.

InfoQ: Exceptional Ruby

Exceptional ruby

I picked up a copy of the new book by Avdi Grimm titled Exceptional Ruby, an ebook entirely focused on best practices relating to error handling in Ruby.  I have to say it’s a great book and really goes into nice detail about a subject most developers treat as an afterthought.  From the book’s web site:

Exceptional Ruby is an in-depth guide to exceptions and failure handling in Ruby. Over 100 pages of content and dozens of working examples cover everything from the mechanics of how exceptions work to how to design a robust failure management architecture for your app or library. Whether you are a Ruby novice or a seasoned veteran, Exceptional Ruby will help you write cleaner, more resilient Ruby code.

I also had a chance to talk with Avdi about the book for InfoQ, please give it a read.

Readers can also receive a $3 discount off the already great price of $15, just go check out the interview to receive the discount.

InfoQ: Learning Ruby on Rails with Michael Hartl

Rails3tutorial cover

My interview with Michael Hartl of the Ruby on Rails Tutorial series is now live on InfoQ.  Michael is such an interesting guy and has a diverse background ranging from physics instructor at CalTech to Ruby on Rails teacher.

Please give Learning Ruby on Rails with Michael Hartl a read.

You can find out more information about the printed version of Michael’s book Ruby on Rails 3 Tutorial: Learn Rails by Example (Addison-Wesley Professional Ruby Series) on Amazon.com.

InfoQ: Meet the Goliath of Ruby Application Servers

Pr ruby

I have had the opportunity recently to discuss Goliath, a new Ruby application server from PostRank Labs, with its creator Ilya Grigorik.  The article and interview titled, Meet the Goliath of Ruby Application Servers, is now up on the InfoQ web site, please give it a read.  I think it is a unique and very useful project worth giving a look.

I was fortunate enough to have a look at the project before it was released and was able to work with it.  I have to say that I am really excited about this project to solve some problems in my own work.  I had previously thought of using node.js but was turned off by the thought of having to write some server-side JavaScript.

Goliath uses Ruby 1.9+ to take advantage of fibers (continuations).  This is one example why developers should be moving to Ruby 1.9.2 and beyond.  Hopefully we see more projects like Goliath that take advantage of 1.9′s features and prod developers to a better Ruby.

RailsInstaller is Instant Rails Evolved

Today the great team led by Wayne Sequin (rvm fame) and Luis Lavena (RubyInstaller fame)  and initiated by Dr. Nic Williams of Engine Yard released RailsInstaller.

In the Box

RailsInstaller is really what Instant Rails brought to Windows developers wanting to write Ruby and Ruby on Rails code, but now evolved.  RailsInstaller takes Ruby and Rails to their current versions and add some other niceties to give the Windows developer the ability to create real Rails applications today.  Included is:

  • Ruby 1.8.7-p330
  • Rails 3.0.3
  • Git 1.7.3.1
  • Sqlite 3.7.3
  • DevKit

I would expect that we would see a Ruby 1.9.2 at some point but imagine there must be some technical hurdles to get beyond before it makes sense to release.

Installation

Installation is a breeze by just following the simple installation wizard all Windows users know all about.   A nice video has been created to show how to install and get started:

The video is very clear and the installation wizard really simple, just follow the directions and keep the defaults for the best experience.

RailsInstaller1

The installer explains clearly what is being installed in this particular version.

RailsInstaller2

The default is to add to the PATH statement.  I would recommend keeping this so your system knows where to find all the needed executables.

RailsInstallerMenu

You should notice a nice shortcut to a Ruby and Rails prompt all setup to use.

RailsInstallerPrompt

The Ruby version as well as the Git version are cleanly shown.  You are good to go.

I was lucky enough to have a prerelease build of the tool and even in a prerelease state, they guys did a great job.  It was easy to create Rails apps and have them running in no time.  Keep in mind that not all Ruby gems will yet be compatible with Windows.  If you encounter issues you are best advised to contact the person in charge of the gem project you are trying to install.

I encourage everyone to who is interested in Rails on Windows in a clean package to download the installer now and give it a go.

Moving Instant Rails Forward

It has been a long time since InstantRails has been brought up-to-date and I had been wondering if the community had any continued interest in the project.

Well, recently I had been contacted about the project and moving it forward and bring it to Rails 3 and Ruby 1.9.2.

Instant Rails 2.0

Today Instant Rails 2.0 consists of fairly old Ruby on Rails components:

  • Ruby version 1.8.6 Patch Level 111
  • Rails to 2.0.2
  • Mongrel to 1.1.2
  • RubyGems to 1.0.1
  • Rake to 0.8.1
  • SQLite3
  • Apache
  • MySQL
  • phpMyAdmin

Instant Rails vNext

The goal of the next version of Instant Rails would be something really easy to install and use.  One of the great features of Instant Rails today is the ability to extract the Instant Rails zip file to any directory you choose and have the ability to delete it later without the fancy uninstall ceremony we usually see in Windows.

I wrote here in the past about setting up to run Ruby on Rails 3 on Windows.  The steps are not complicated but may be more than new developers are able to follow.

My initial thoughts of components to be included:

  • Ruby 1.9.2
  • Rails 3.0.1
  • RubyGems and Rake latest
  • SQLite3
  • No Apache or Mongrel, just WebBrick
  • Git Support

In the spirit of keeping these simple; what am I missing?  What components are missing?

Let’s not talk features just yet but major components only.  I am leaving out Apache and MySQL as I don’t think they’re needed.  WebBrick and SQLite3 work just fine for development purposes.

Please provide your thoughts in the comments as to the interest in a new version of Instant Rails and also what components are needed.

Thank you.

Makandra Notes for Rails Developers

The Ruby Rails consulting shop Makandra recently opened their internal knowledge base of how-tos and code snippets for all to see and use.  The announcement about the project indicates 500+ links:

This September we decided to take our in-house knowledge base and publish it for everyone to see. makandra notes contains some 200 HOWTOs and 500+ links for Ruby, Rails, RSpec, Cucumber and Javascript and is growing every day.

Whether you’re looking to deliver Paperclip attachments securely, test concurrent Ruby code or marry Capybara with SSL-enabled applications, chances are we already solved your problem for you.

The reality is as of this writing, 718 notes are listed.  It’s a good resource and one I hope they add to and either let others contribute to or open source the application for others to use to build internal/external knowledge bases.

The search is fast too and real-time, narrowing down results as I typed.

makandra

Besides having some useful information you can also see the user interface is nice and clean.  The resource is from a Rails shop but it is not just for Rails issues but rather the issues Rails developers deal with each day, from Ruby, Rails and JavaScript to Ubuntu server administration and cron jobs.

Way to go Makandra and thanks for the resource.

Delete Large Numbers of Amazon S3 Files using Ruby

I recently found I problem I needed to solve; remove hundreds of thousands of files from Amazon S3.  I mean, it had to be a common problem, right?  Well, it certainly be a common problem but the solution was less than common.

I tried a few tools available, both the tool from the Amazon S3 site but it keep erroring out and I was never sure why.  I then went to third-party tools used for managing S3 buckets but their either errored-out or behaved as if they worked but later determined did nothing.

I posted my need on Twitter and was pointed to a solution (thanks @Kishfy) I had not thought of, use Ruby.  There is a great open-source project named S3Nukem which its sole purpose is to remove Amazon S3 buckets.

S3Nukem

This is an open source project hosted on Github.   Installation and setup is pretty simple (from the Github repo readme), install required gems.

For Ruby >= 1.9:

sudo gem install dmarkow-right_aws --source http://gems.github.com

The docs don’t mention it but I needed to install the right_http_connection gem, the above command fails unless it is installed.

For Ruby < 1.9:

sudo gem install right_aws

Install S3Nukum:

curl -O http://github.com/lathanh/s3nukem/raw/master/s3nukem

Make it executable:

chmod 755 s3nukem

This is done in the directory where the above curl command was executed from.

Usage:

Usage: ./s3nukem [options] buckets...

Options:
    -a, --access ACCESS              Amazon Access Key (required)
    -s, --secret SECRET              Amazon Secret Key (required)
    -t, --threads COUNT              Number of simultaneous threads (default 10)
    -h, --help                       Show this message

Running the application in a terminal window shows large numbers of files being deleted:

s3nukem

This script is fast.  I tried running this under both Ruby 1.8.7 and 1.9.2 with 1.9.2 quite a bit faster.  I didn’t run any benchmarks but it was noticeably faster, my goal was really to just delete large amounts of files.  Ruby 1.9.2 thread handling really shines here and with the ability to control the number threads from the command line, is really nice.

The nice thing about this script version is the cap on the number of items to be deleted each time, 1000 * thread_count, which defaults to 10.  With this limit in place the script won’t chew up all your system memory. 

This script is designed to delete an entire bucket but could be modified to just remove the content or a directory tree within the bucket.  I may do this for a project I am working which has a need for such functionality.

Running Rails 3 on Windows

Well, the long-awaited release of Ruby on Rails 3 is now out and all of the Mac and Linux junkies are busy gem-installing the latest version of the framework.  What about all the lonely Windows developers out there looking through their windows (pun intended) and wondering what it’s like on the other side of the fence?

Good news!  It is actually pretty easy to setup and run Rails 3 on your Windows system.  I mainly run on Macs these days but have a couple Windows systems still kicking around and thought I would give a go.  It is actually pretty straight-forward now and works really well.  Follow the steps:

Install Ruby

Rails 3 requires at least Ruby 1.8.7 and is happy using Ruby 1.9.2, I opted for the latest and greatest.

  1. Head over to RubyForge for the Ruby Installer by Luis LavenaDownload 1.9.2-p0 for the latest.   A nice feature of this Ruby installer is the latest gem executable is built in, which is version 1.3.7 at the time of this writing and you won’t have to install it yourself.
  2. I installed in C:\Ruby192, which is the default, and added C:\Ruby192\bin to my path so Windows can find the Ruby executables.

Running the Ruby version command from a new command prompt:

ruby -v

ruby-version

If you get a file-not-found or some other undesirable result then the path setting isn’t likely correct or you may want to try closing the command prompt and opening a new one.

Install Ruby on Rails

This is a tough one:

gem install rails

UPDATE: A reader points out of issues with installing Rails as pointed out by a post on the Ruby Forum. The issue was solved by simply adding a –pre to the gem command to install Rails.

gem install rails --pre

Everything you need to run Rails 3 gets installed with the exception of the SQLite3 Ruby gem which Rails uses as the default database provider:

Rails3gems

gem install sqlite3-ruby

You should see a message similar to this:

sqlite3-ruby-gem

I use SQLite3 for most of my local development unless I need a database like MySQL or PostgreSQL.  Installing is trivial.

Installing SQLite3

If you look at the above message when installing the sqlite3-ruby you should notice the gem relies on the sqlite3.dll and it is recommended to use version 3.6.23.1, which you can download form here.  I grabbed 3.7.2 and it seems to work fine, your mileage may vary.  If you’re interested, get the latest from the SQLite3 downloads page.

Now with the sqlite3.dll in hand (unzipped from the download), copy to the bin directory of the above Ruby installation.  In my case that’s C:\Ruby192\bin, and that’s it.

Creating a Test Application

Now it’s time to test the new Ruby and Rails installation.  Pick a location to create the new application and run the new Rails command from a command prompt:

rails new testapp

This command creates a new directory called testapp and spits out a bunch of text along the way, looking something like this:

railsapp

Once done, change directory into the new testapp directory and run:

rake db:migrate

This will test your SQLite3 installation and create a new development database in the testapp\db directory called development.sqlite3.  If you get any errors it is likely the sqlite3.dll is not in your Ruby bin directory, check and come back.

Now from the testapp directory, fire up the Rails development server from a command prompt:

rails server

WebBrick fires up and looks like this:

rails_server

If there are errors reported than something has gone wrong.  If you see this screen, fire up your browser and browser to the address http://localhost:3000.  If all goes well, you will see this screen:

testapp_home

Click on the link below the title that reads “About your application’s environment”.  This gives a lot of detail about your Rails application configuration.

testapp_config

Congratulations!  You have the latest and greatest Ruby and Ruby on Rails running on the Windows platform.

Now go out and read Mike Hartl’s Ruby on Rails Tutorial for Rail 3 and create some applications.