General
- Let Users Run the Latest Version Easily
- The 3 Common Types of Code Reviews
- The Doer, Planner, and other Programming Personalities
- 17 Rack Middlewares I want to use
- Preventing an ActionController::Session::CookieStore::CookieOverflow Error
- Ruby’s Array splat operator (*array)
- RailsConf 2008 Summary
- RailsConf 2008
- Using Ruby on Rails for a Client Project
- Check Your Services with Ruby
- Graph your life in Ruby
- Running Shell Commands in Ruby
Capistrano
I’ve used capistrano to deploy my Ruby (and PHP) apps for years. It’s one of the best automation tools I’ve seen. I’ve also done a code reading series on it that digs into how the actual deployment process happens (above).
- Capistrano Variables
- Capistrano Deploy Sequence
- Capistrano For ChiliProject
- Deploy WordPress Automatically with Capistrano
Tools
I’m always looking for or creating my own tools to help with Ruby development. Sometimes these tools become useful enough that I’ll share them or open source them.
- Kindle – Ruby scripts to manage my Kindle notes
- Capture a Screenshot of a Full Website With Ruby
- Fail Loudly with osd_cat and autotest
- Deploy WordPress Automatically with Capistrano
- Why I don’t use HAML or SASS
- Use Hash#except to easily test Rails validations
- Redmine Railroaded – Model and Controller diagrams
- Fail Loudly with osd_cat and autotest
- Organizing Rake Using Namespaces
- ruby-debug on Ruby 1.9 Gem::Installer::ExtensionBuildError
- Run rake tasks in emacs with rinari
- Simple Recurring Todo Items In Ruby
Testing
Every Ruby developer loves testing right? Right?
- Testing exceptions in Rails
- Testing Rails Plugins on All Cores with parallel_tests
- Rails Testing Optimization – Benchmark your tests
- Correcting your rcov report for untested code
- Test HTTP Basic Authentication in Rails 3 With Capybara
Refactoring
- Refactoring Rails Controllers – free 9 day course
- Problems when you don’t Refactor Rails: Code Duplication
- Problems when you don’t Refactor Rails: Test Duplication
- Problems when you don’t Refactor Rails: Wild Estimates
- Problems when you don’t Refactor Rails: Lowered morale
- Problems when you don’t Refactor Rails: Lower Participation
- Guest Post on RailsInside.com about Refactoring Rails using Flog
- Refactoring Rails Guest Post on RailsInside.com
- Noticing more refactorings
Since Redmine’s codebase was in a pretty poor shape I started a daily series to refactor it and show how I did it. This series ended up being used as the source for Refactoring Redmine (after a bunch of editing).
For the full series, visit the Refactoring Redmine page.
Daily Code Reading
As an experiment I dedicated some time each day to read Ruby code from libraries and gems. This helped me see a bunch of other styles of developers and also gave me in-depth knowledge of how those libraries worked.
- Code Reading – New Ideas and New Solutions
- Daily Code Reading #1 – Facets Hash#autonew
- Daily Code Reading #2 – Facets Hash#zipnew
- Daily Code Reading #3 – Facets Hash#to_struct
- Daily Code Reading #4 – Facets Hash#reverse_merge
- Daily Code Reading #5 – Facets Hash#group_by_value
- Daily Code Reading #6 – Facets Array#pad
- Daily Code Reading #7 – Rack::MemoryBloat
- Daily Code Reading #8 – Rack::GoogleAnalytics
- Daily Code Reading #9 – Rack::StaticFallback
- Daily Code Reading #10 – Rack::ForceDomain
- Daily Code Reading #11 – Rack::Staging
- Daily Code Reading #12 – Flay executable
- Daily Code Reading #13 – Flay#expand_dirs_to_files
- Daily Code Reading #14 – Flay#process
- Daily Code Reading #15 – Flay#process_sexp
- Daily Code Reading #16 – Flay#analyze
- Daily Code Reading #17 – Capistrano control flow
- Daily Code Reading #18 – Capistrano recipes – invoke
- Daily Code Reading #19 – Capistrano recipes – deploy setup
- Daily Code Reading #20 – Capistrano recipes – deploy
- Daily Code Reading #21 – RestClient binary
- Daily Code Reading #22 – RestClient::Resource#get
- Daily Code Reading #23 – RestClient::Request#execute
- Daily Code Reading #24 – RestClient::Response
- Daily Code Reading #25 – RestClient::AbstractResponse
- Daily Code Reading #26 – Formtastic semantic_form_for
- Daily Code Reading #26 – Formtastic semantic_form_for
- Daily Code Reading #27 – Formtastic inputs
- Daily Code Reading #28 – Formtastic input
- Daily Code Reading #29 – Formtastic default_input_type
- Daily Code Reading #30 – Formtastic basic inputs
- Daily Code Reading #31 – Redmine textilizable
- Daily Code Reading #32 – Redmine WikiFormatting
- Daily Code Reading #33 – Redmine Textile Formatting
- Daily Code Reading #34 – Redmine WikiFormatting#execute_macros
- Daily Code Reading #35 – Redmine exec_macro