Skip to main content

Posts

Showing posts from 2008

Learning Ruby - A gift to the developer community

For those learning Ruby, I've posted my code samples from the years I taught at Spokane Community College. You can find the code on Github at http://github.com/kblake/learning-ruby/tree/master You can view my Ruby/Rails screencasts on Viddler at http://www.viddler.com/explore/kblake/videos/ Enjoy!!

Happy Halloween

vim.merge!(rails)

After meeting tpope and pair programming with reinh I got to see the power of vim . I have never used vim before so this is all new to me. I've been using TextMate exclusively since starting Rails a few years ago. I came to work and started in on a pursuit of how I can do in vim what I do in Textmate. While on this quest, I will document along the way some useful tips that may help you too. I'll document some vim things I've learned so far: Install rails.vim Other plugins: BlockComment , NERDTree , FuzzyFinderTextmate , minibufexpl , vcscommand Vim commands I use often: gf - when cursor is on class name it'll take you to that class definition yyp - duplicate current line :AS - I use a lot to look at code and spec at the same time ^p - autocomplete word from any open file control + shift + 6 - switch between two buffers shift + s - to delete current line :%s/old/new/g - to change text to new text / - to go to line number on page /text, then enter key - to f

The Me Meme

From Blogger Pictures Take a picture of yourself right now. Don’t change your clothes, don’t fix your hair…just take a picture. (should be super-easy with Photobooth) Post that picture with NO editing. Post these instructions with your picture. http://blog.obiefernandez.com/content/2008/10/the-me-meme.html

Rails Chops: Model Associations

Ok, remind me not to create screencasts after 10:00 p.m. I have another 5 minute spot towards the end where I’m off in lala land. You can fast forward through it or use it as ammunition for our next conversation. :) Please view in full screen.

Rails Chops: RESTful Routes

Reference: Chapter 4 (The Rails Way) In Rails, by adding map.resources :stories to config/routes.rb , you get 7 predefined routes: stories GET /stories {:controller=>”stories”, :action=>”index”} POST /stories {:controller=>”stories”, :action=>”create”} new_story GET /stories/new {:controller=>”stories”, :action=>”new”} edit_story GET /stories/:id/edit {:controller=>”stories”, :action=>”edit”} story GET /stories/:id {:controller=>”stories”, :action=>”show”} PUT /stories/:id {:controller=>”stories”, :action=>”update”} DELETE /stories/:id {:controller=>”stories”, :action=>”destroy”} Slowly but surely we are going to build an app from the ground up and use all of these RESTful routes. Its very important to understand what each of these do and how to incorporate them into your

Rails Chops: Working with databases

References Read from: “The Rails Way” – Chapter 6 Active Record Presentation Migrations Presentation (ignore mysql at beginning) Objectives Configure Rails to work with a database (database.yml) create table (migration) use ActiveRecord to interact with our database use script/console to learn how ActiveRecord works Model handle application state (usually in the database) encapsulate business logic, such as data validation and rules applied to data ActiveRecord ORM (object-relational mapping) Instead of dealing with database through SQL statements, ORM layer presents records as a collection of objects Table represents a collection of objects(stories) Record represents an object/model (story) Field represents an object attribute (title) CRUD operations on database C : create, insert record into table R : read, select record(s) from table U : update, update record(s) in the table D : delete, delete record(s) from the table

Ruby Chops: Flexible Sort

So I was messing with the comparable module and the <=> method.  I implemented as I would in Java.  Then I played with sort_by and thought that was awesome. Which led me to writing my own method that would allow me to pass in a collection and attributes to be sorted by. The objects in the collection would have to implement my Sortable module. This was more for academic fun and try to keep my mind sharp. If anyone sees a cooler way to do it then please post it here.

Code Documentation

There are two ways to communicate what your code does: the code itself and using comments. Self Documenting Code Source code should be understandable not because it has comments but because of its elegance and clarity – correct use of variable names, good use of whitespace, good separation of logic, and concise readability. Code will be read hundreds of times and written only a few times. So invest quality time into spelling out names such as fn into firstname . Fight the urge to use cryptic variable names. Code Comments Code should have comments however an abundance of comments can be just as bad as too few. Comments should explain why something is done. The code itself already shows what it is done. So commenting on what is done is redundant. Do not use commenting as a substitute for good code. Another way to say that is that if you need to comment code due to its unclarity then maybe you need to rewrite the code to be more clear and remove the comment. I found this article