I have been reading Ruby in Practice over the past week or so as you know. Currently, I am on page 114 which talks about using active resource to consume RESTful webservices( you could use RESTClient, but thats another story) and has a box about the ever awesome BlankSlate class.
I haven’t really learned many “whoah, ruby does what?? Sweet” things from it, most of those are behind me. Now, I get more “Whoah, X project really abstracts that annoying thing into a nice interface.” kind of feelings, which are more satisfying in some ways and less in others. I guess what I am saying is that I have grown to know ruby much better over the past six months or so using it at work every day, than the past, uh, five? years. Which is sweet.
But back to the book( I ramble when I feel braindead):
The things I have learned from reading this book remind me of ruby itself. It has glued together various bits of ruby that I know, in the same way you can use ruby to glue together other technologies. Most of my ruby smarts have been picked up through hacking at things and reading blog posts by knowledgeable people, but that sometimes leaves some gaps in my knowledge. This book has helped me to tie some of the things I have learned together(w00t Hebbian Learning).
For instance, spec tasks
While I know that rspec has a set of extensions for rake, I had not used them outside rails, in fact in the project I was working on I just wrote the following.
task :spec do
sh "spec --colour --reverse #{FileList['spec/**/*_spec.rb']}"
end
The problem with this is that when any of the specs fail, I get a huge trace from the ran shell script that I have to scroll past before I can see the failed specs.
But, if I included the spec tasks I could do stuff more like this.
require 'spec/rake/spectask'
Spec::Rake::SpecTask.new('spec') do |task|
task.spec_files =FileList['spec/**/*_spec.rb']
task.spec_opts = ['--colour','--reverse']
end
Now things work like they do when you generate the tasks from within rails. I had read the lib/tasks/rspec.rake
file when I was looking over the generated code in one of my rails apps, but it was a little too complicated to grok easily.
The other things I am looking for are cool projects that I should be more aware of. Sometimes, they are only mentioned but that doesn’t mean they are not awesome. Some that I would like to play with include:
- Chronic a date string parser that tries to be able to handle stuff like: “next tuesday” and “summer”
- FasterCSV I saw this at Mountain West Ruby Conf and made a mental note to read it at some point(so much for mental notes)
- Heckle runs tests. Breaks your code. Sees if the tests fail like they should.
Later.