Tag Archives: ruby
When you have some data like this:
MONTH |
COUNT |
2011-10 |
417
|
2011-09 |
903
|
2011-08 |
1051
|
2011-07 |
759
|
2011-06 |
835
|
2011-05 |
647
|
2011-04 |
393
|
it may be difficult to spot a trend in it. That’s why people use charts and other visualization tools and there’s a lot of them (you could use Excel, Google Charts, gnuplot, sparklines etc.).
However, sometimes it’s not possible or convenient to use any of this tools. In such cases, you can easily create a simple ASCII-art style chart. Doesn’t this look better?
MONTH |
COUNT |
|
2011-10 |
417
|
######## |
2011-09 |
903
|
################## |
2011-08 |
1051
|
##################### |
2011-07 |
759
|
############### |
2011-06 |
835
|
################ |
2011-05 |
647
|
############ |
2011-04 |
393
|
####### |
It’s actually so embarrassingly obvious I would not bother posting about but in the last couple of days several people told me that they think it’s a great idea that they wish they knew earlier. So here it is.
Continue reading
1 Comment | tags: ascii art, bash, chart, excel, google charts, openoffice, perl, ruby, sql, visualization | posted in Uncategorized
I’ve been doing some Java development lately and Java’s verboseness sent me looking for a way to shorten some of the monstrous generic type declarations. I know there is no typedef
or similar concept in Java, but hoped that maybe some Java or Design Patterns gurus invented some clever trick or pattern to do something similar. It’s better to use a ThreeLevelHashMapOfStrings
type instead of HashMap<String, HashMap<String, HashMap<String, String>>>
, right?
Continue reading
5 Comments | tags: java, ruby | posted in java, ruby
Here’s a quick tip for enhancing your test writing productivity: use assert
‘s last parameter, the message. Virtually all assert_...
methods accept it. You may have noticed in the docs that the last parameter is always message = nil
or message = ""
. Too bad the docs don’t give examples on how to use this message. So, let me fix that.
Continue reading
Leave a comment | tags: assert, ruby, ruby on rails, testing | posted in assert, ruby, ruby on rails, unit testing
This is my list of TextMate‘s keyboard shortcuts that are very useful for Ruby and Rails developers, but are not used as widely as they should (according to my very scientific observation on a very representative sample, i.e. my colleagues). I skipped all the obvious ones (like “open file”, “save file”, “go to next window”, “close window” etc.) that most people use anyway. My list includes shortcuts that are very useful but sometimes might be hard to grasp at first or might require a little explanation.
Continue reading
38 Comments | tags: rails, ruby, shortcuts, TextMate | posted in ruby, ruby on rails, shortcuts, TextMate
While you weren’t looking, Cromwell — Lord Protector of your scripts turned 0.4. The new features include:
- logger support,
- inspect and change Cromwell’s state,
- restore original traps after protection end,
- custom traps support.
…and I have run out of To Do list items. So if you use Cromwell (the gem has been downloaded 165 times from Gemcutter as the time of this writing and the github project has 22 watchers so I assume there are some users of it) and you miss some feature or you found some bug or incompatibility, let me know. Otherwise, happy protecting!
Leave a comment | tags: cromwell, gem, ruby | posted in cromwell, gem, ruby
Here’s one quirk I accidentally discovered in Ruby. Check this out (this is copied from my irb
session):
>> defined? x
=> nil
>> x
NameError: undefined local variable or method `x' for main:Object
from (irb):2
>> if false
>> x = 3
>> end
=> nil
>> defined? x
=> "local-variable"
>> x
=> nil
What’s going on here?
Continue reading
Leave a comment | tags: quirks, ruby | posted in quirk, ruby
Duplication of code is one of the worst code smells. It should be refactored in order to keep DRY if only possible. This is generally easy. But what if the code itself is not duplicated, but its structure is? That could be a little bit more difficult, but with Ruby‘s metaprogamming facilities it’s not that hard. Read on to see how.
Continue reading
6 Comments | tags: DRY, metaprogramming, method_missing, ruby | posted in DRY, metaprogramming, method_missing, ruby
Here’s a small TextMate tip I discovered today. Normally, some TextMate functions don’t work too well with Ruby code. Word selection and keyword completion ignore Ruby-specific characters like :
or ?
or !
. For example, if you used somewhere method like blank?
and then you type bl
and press Esc
, TextMate will complete it as blank
, ignoring the ?
at the end. And don’t even get me started about when you double click blank?
and the ?
is not selected.
To change it, go to the Preferences (CMD-,
) and select Text Editing tab. At the bottom, there’s an editbox labeled Word characters containing a single _
by default. Add characters :?!
to this editbox, close the window and you’re done. Enjoy!
There’s one caveat, however. This setting is global and affects word selection and keyword completion in all files. If you edit many other types of files, that could be a problem.
5 Comments | tags: keyword completion, ruby, TextMate, word selection | posted in keyword completion, ruby, TextMate, word selection
As many of the luminaries of programming say, you should learn a new programming language every new year. That’s what I’ve been doing for several years now. Maybe not that strictly to start on January 1st with a completely new language and lose all interest in it on December 31st, but learning new things (including new languages) is one of my favorite things to do. And since I can probably list more languages that I think I “know” than I have spent years as a professional programmer (whatever that means), I think I’ve been true to above mentioned rule.
Continue reading
10 Comments | tags: learning, programming languages, ruby | posted in learning, programming languages, ruby
Recently I needed to ‘unstub’ a method in Mocha. Browsing Mocha documentation and googling yielded no results. Apparently, Mocha doesn’t support a concept of ‘unstubbing’, i.e. recovering original implementation of a method that has been stubbed. After a little hacking, I found out that it’s quite easy (though not necessarily elegant) to call original implementation.
Continue reading
4 Comments | tags: alias_method, cheeseburger, hack, lolcats, mocha, ruby, stub, unit testing, unstub | posted in alias_method, cheeseburger, hack, lolcats, mocha, ruby, stub, unit testing, unstub
…or: how to put class scope to use
The class scope, i.e. the space inside class declaration, but outside method definitions, is a no man’s land in many languages (particularly in Java). By this I mean that you can define methods, variables, and other classes there and you can even execute some code (in variable initializations) but nothing more. Fortunately, in Ruby empty space between method definitions can be filled with all kinds of useful, executable code. Let’s check a few examples.
Continue reading
1 Comment | tags: ActiveRecord, class scope, DSL, ruby, ruby on rails | posted in ActiveRecord, class scope, DSL, ruby, ruby on rails
Here’s something that will amaze your friends to no end. Your male geek friends, that is. Type some code in your editor, save file and… a smiling Doom Marine tells you that all your tests passed. Or, if there were some errors, the Marine is bleeding. The more errors, the more blood. Is it cool or is it cool?
Just look at the screenshots. First: Marine is happy that your tests passed.
Next: there were some failures. The blood starts to flow!
Even more failures, even more blood.
Oh my, it looks like we killed him, we bastards!
How to do this? Read on.
Continue reading
31 Comments | tags: autotest, doom, doomguy, growl, ruby | posted in autotest, doom, doomguy, growl, ruby