Define todo- and fixme-command to mark open topics during software development.
Add todo and fixme to your code and get track of your todos during runtime of your code.
Productive programms should not use this gem.
When you pass a todo/fixme during execution, you get a logging information.
todo ('message' ) { "temporary result" } fixme ('message' ) { "temporary result" }
todo and fixme have the same syntax, the sematic meaning is:
-
ToDo: Mark missing code.
-
FixMe: Mark code to repair.
Disadvantage:
-
Does not replace a good IDE to find the ToDo/Fixmes.
This Gem is based on a proposal in forum.ruby-portal.de/viewtopic.php?f=11&t=11957
Think, you have to write a script to count all prime between 1 to 10.
You don’t know how to check for primes, but at least you know, primes must be odd.
So you can start your program:
require 'todonotes' primecount = 0 for i in 1..10 if fixme "Calculate if prime, temporary: true for odd numbers" do i.odd? #tempory: odd = prim end primecount += 1 puts "#{i} is a prime number" else puts "#{i} is no prime number" end end todo "Return total number of primes"
Or
require 'todonotes' class Fixnum def prime? fixme "Calculate if prime" do self.odd? #tempory: odd = prim end end end primecount = 0 for i in 1..10 if i.prime? primecount += 1 puts "#{i} is a prime number" else puts "#{i} is no prime number" end end todo "Return total number of primes"
Now you get a output like this:
FixMe: todonotes_prim2.rb:12 Calculate if prime misssing (temporary: true) 1 is a prime number FixMe: todonotes_prim2.rb:12(2) Calculate if prime misssing (temporary: false) 2 is no prime number FixMe: todonotes_prim2.rb:12(3) Calculate if prime misssing (temporary: true) ... ToDo : todonotes_prim2.rb:27 Return total number of primes (temporary: nil)
The Todonotes is warning about a wrong or uncompleted code piece.
The ToDo is warning for a missing code piece.
You are informed about source code file and line number. In braces you get the number of calls.
The todo/fixme command evaluates the optional block. The result is returned as a temporary result (in this example: odd numbers are primes.).
Please refer the examples folder for more details.
The Fixme’s and ToDo’s are reported via a logger (log4r).
The first call of a fixme/todo is a warning, the next call is an information. With this logic you can decide, if you want to see each call or only the first call.
You may change the level with:
Todonotes.logger.level = Log4r::WARN #only first time of a call of a fixme/todo Todonotes.logger.level = Log4r::INFO #report all calls of fixme/todo
You can log the fixme/todos to a file:
Todonotes.log2file()
You may print an overview on all fixme/todos:
Todonotes.print_stats()
Example:
List of ToDos/Fixmes: todonotes_prim.rb:11: 10 calls todonotes_prim.rb:21: 1 call
There is a fixme/todo in line 11 and 21 in todonotes_prim.rb.
Before you go productive with your application you should remove this gem and delete all fixme- and todo-commands.
You may also set
Todonotes::TODONOTES.raise_fixme = true Todonotes::TODONOTES.raise_todo = true
After this you will get a ImplementationError-Exception if Kernel#fixme or Kernel.todo is called.