Tag Archives | rails

Notes from MonadLUG: David Berube, Ruby on Rails

Eleven members attended the August 14th meeting of the MonadLUG, Monadnock Linux User Group, held as usual on the second Thursday of the month at the SAU1 offices in Peterborough. David Berube was the main presenter.

We had the usual announcements (check upcoming events at http://www.gnhlug.org) and also some time for Q&A while waiting for the main speaker and had the ceremonial struggling with the laptop and the projector. One fellow was looking for help understanding how to install drivers for a scanner not supported by SANE, another had questions on what the keyring was and how he could get it to stop demanding a password from him.

David’s been a fixture in the groups for some years. He served as Fearless Leader of GNHLUG for several years, and took a stint as coordinator of the CentraLUG group. He has written a number of magazine articles and authored or co-authored several books, the most recent, Practical Ruby Plugins, due out later this month.

David gave us a brief history of web development, focusing on the incremental improvements made from scripts to cgi-bin to modules to long-running processes in terms of responsiveness, latency and the ability to scale to larger and quicker demands. He briefly compared Ruby with Perl, Python and Lisp, and then dove into the demo.

David had an Ubuntu laptop that he hadn’t previously done Ruby on Rails development on before, so he showed us the basics of installing Ruby, using Ubuntu’s package manager, and cautioned us against using the OS package manager to install gems: The gem system is a package manager in its own right, and it does things in a somewhat different way than most of the OS package manager tools. Instead, he recommended using ruby to install gems. As is often the case, there were some glitches, so we had a small distraction while we worked through creating the /usr/bin links for rake and rails that somehow hadn’t been created automatically.

David then created a new project, and walked us through the directory structure and the significance of files in each folder. He created a model that defined the wiki example we were creating, a controller to answer requests from the web server, and a view that would render the response from our application. He used the built-in rails and rake scripts to create the example database (SQLite3 is built in and used by default if nothing is specified, new in RoR 2.1), showed how the rails console could be used interactively to create model objects (implicitly saving them to disk) and that the console could be used to add, edit, query and delete objects. He then ran the application, after explaining the logic of URLs constructed in a “RESTful” fashion as http://yourwebserver/controller/action/parameter addresses. David started the built-in Webrick webserver and navigated his browser to http://localhost:3000/page/show/bob to show us Bob’s wiki page entry. Whew!

There was some good Q&A during and following the presentation.

I asked some questions on how a team of developers could insure that they were maintaining the same versions of gems when developing, as the gems are usually installed globally and are not in the main application source code tree. David suggested either creating a local team gem repository, or hardcoding the exact versions you want to freeze the target application at, directly within the code.

Charlie had some questions on how to keep up. While he’d read through the “PickAx” book and the “Skateboard” book, those are already a version out of date. David booted up Pidgin and we chatted with a couple of his fellow authors on what they recommended. Here’s a few links I noted from the meeting:

David also mentioned he was running Gnome-Do, a QuickSilver-clone that lets you launch applications or perform functions with a keyboard shortcut and your keywords. And David also showed off the Vimperator, a Vim-like interface for the FireFox browser. David noted you might find some troubles with Javascript-intensive pages:

Thanks to Charlie Farinella for organizing and running the meeting, to Ken and the SAU for providing the fine facilities, to David for an informative presentation and to all for attending and participating!

Notes from NH Ruby/Rails Group, 20-May-2008

Five members attended the May meeting of the New Hampshire Ruby / Rails group, held as usual at the offices of RMC Research in Portsmouth.

Nick Plante entertained and educated the group on Rack, a foundation layer that interfaces between the web application handler (like Mongrel or FastCGI) and the actual web application framework adaptor (like Merb or Camping or Halcyon or Sinatra) in a manner similar to the Python WSGI layer. It allows for the creation of custom web frameworks while removing a lot of the grunt work. Nick had a sample application whipped up where a few lines of code could define the routing of various requests and cleverly answered “Hello, World” to the correct RESTful query.

For those for whom Rails isn’t the complete answer or those who want to build their own web functions with components other than those used by the Rails framework, Rack is a foundation on which you should be plugging together your building blocks.

Brian Turnbull volunteered to fill in for Scott Garman, who had to cancel at the last minute. Brian had been using NetBeans only a brief while, but had a great story to tell on using the built-in debugger to trace out a problem with Rails-generated CSS meta tags always getting a cache-breaking URL. While a feature in development, when the CSS was being served from a caching store like Amazon’s S3, the ever-changing URL defeated the point of caching. Brian showed how breakpoints could be applied to the code and step-by-step tracing (why is it that all debuggers have Step-In, Step-Once, Step-Over, Step-Out icons that all look the same and can’t be told apart?) and walked from his code into the Rails framework down to the mis-behaving component.

Having identified the problem, our discussion took a tangent into a discussion about monkey-patching, and how this ‘feature’ was a bug deserving of an optional switch to disable, and ought to be submitted upstream to the Rails maintainers. To confirm, we went through the steps to grab the latest version of rails as a plug-in (gem? I’m not sure.) so that we were working with the latest ‘edge’ code to confirm the problem hadn’t already been fixed. By installing this way, we were overriding the Rails framework only for this application, and could easily revert to the stable version, without disturbing the main shared code on the machine. We talked about how this was a Best Practice when bringing an app under development up to production, so it was isolated from changes outside of the app’s control.

Plenty of time was available for discussion, and we talked with Tim a bit about configuring a new machine with all the tools he’d need to develop a Rails app with NetBeans: Ruby, Rails, a couple good gems, the Java runtime. Nick and Brian noted that the default Rails environment within NetBeans is JRuby not MRI (Matz’ Ruby Interpreter) and how you might want to reconfigure NetBeans to use MRI instead if you weren’t planning on deploying to a JRuby environment.

Thanks to Nick and Brian for their presentations, to Scott for arranging the meeting, to Tim and RMC for providing the great facilities and to all for attending the meetings! Discussion is ongoing now on the topics for the June meeting; join the mailing lists at http://mail.nhruby.org/mailman/listinfo/ and keep an eye on the new meeting plans at http://wiki.nhruby.org/index.php/Upcoming_meetings.

Developers, developers, developers song gets covered again

We all know the answer is “Developers, developers, developers, developers,” but who’s asking the question these days? It seems like Sun has taken up the song, according to Timothy M. O’Brien’s posting over at O’Reilly, “Surprising Contender: NetBeans as a Ruby+MySQL IDE.” Great news for all of us looking for new tools; NetBeans is shaping up to be a pretty sharp IDE.

I saw a blog post recently and neglected to bookmark it that posited the thesis that rich IDEs were bad when learning a language. A simple text editor and console can be all the interface you might need when when starting off and as your skills increased, the need for code completion, cross-referencing, inline debugging, source code control, refactoring and macros all became more valuable. Witness the training videos on http://www.rubyonrails.org where developers use a browser, a console window and the Textmate editor to build sample applications. The simplicity is appealing.

Notes from NH Ruby group, 15-April-2008

Eight people attended the April meeting of the Ruby Special Interest Group, http://www.nhruby.org, held as usual on the second Tuesday of the month in the meeting room at RMC Research.

We lead the night off with a brief video on Passenger from Phusion.nl, a new Apache module that host rails, like a mod_rails (not _ruby) module. Nick reported he’s been running it on one of his sites for a while and is pleased with the performance and the marked decrease in load. Having a mod_rails option available is likely to get hosting companies offering fractional horsepower shared virtual machines to be able to host Rails apps, bringing Rails onto the $7-a-month commodity hosting sites. Cool!

I asked for recommendations on the right way of parsing incoming XML and SOAP packets and was referred to Hpricot and soap4r. Another attendee asked for recommendations on Content Management Systems. Nick mentioned Radiant (which we got to see later in the presentation). comatose and railfrog. We got into a couple discussions during the evening on the stability and applicability of Ruby and Rails for many situations, citing high traffic web sites and the several runtime engines/VMs like JRuby in which Ruby code can run.

Finally, we arrived a the Live Hacking session where we got to watch Scott and then Nick show how to add new functionality to an existing app. Actually getting to see another craftsman at work brings out all sorts of good questions. Scott added chronic to his To-Do application. Chronic is a “natural language datetime parser,” according to the web site, and Scott showed how it could easily be integrated into an existing app, and accept values like “Next Tuesday” or “Thursday last week” and return sane datetime values. We also looked at what would be involved and set up a unit test to check our changes.

Nick showed us a little more of the Radiant application, and his work on making the Radiant CMS support multiple sites. The source he’s working on is stored at github.com, and the networking graph is a thing to behold. Nick spent a little time getting us familiar with the different philosophy of git (branching is inexpensive, merging is very smart, branches can interact in many ways including pushing to and pulling from each other) and then grabbed the most recent code and hopped right into to refactor a code snippet that was an inelegant hack using a deprecated technique into one that was more proper, running our unit tests before and after to confirm the refactoring didn’t break anything.

An excellent evening as usual! Thanks to all for their attendance and participation, to Scott and Nick for organizing, announcing and presenting, and to RMC Research for providing the nice facilities.

What I’ve listened to this week, 29-Mar-2008

PUI (Podcasting Under the Influence), Peter Nikolaidis is “drunk with the power” of swapping roles with his co-host Harlem for this week’s podcast of “Fresh Ubuntu,” titled “Peter’s Big Break.” These two guys put on a very good show each week, with high-quality audio, the week’s Linux/Ubuntu news, a “man page minute,” software reviews and more. Worth a listen. (Yes, they read a letter from me in this episode. At least I didn’t write too gushy a fan letter. How embarrassing.)

Over at The Conversations Network, Executive Director, Doug Kaye has a brief posting and audiocast on the new features of The Conversations Network. They are a 501(c)(3) non-profit organization that provides tremendously useful audiocasts for any computer professional. I’m a donor (the fact that I’m a “major” donor is an indication of how underfunded they are!) and encourage you to take a listen and contribute if you find it as valuable as I do.

Jon Udell has a regular “Interviews with Innovators” show on IT Conversations. This week, he talks with Ward Cunningham, famed creator (and co-author of the book of the same name) of “The Wiki Way,” about his latest venture and some of things he’s learned along the way.

Cyndi Mitchell had a sponsored keynote at RailsConf 2007 promoting the RubyWorks stack for the enterprise.

The Essentials of Stackless Python” from PyCon 2007, NOT from the Conversations Network, but direction from python.org

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.