Right, got it now; sorry about the earlier confusion.
Taking a quick look through flymake.el, for *.c files, the 'make' invocation ultimately comes from here:
(defun flymake-get-make-cmdline (source base-dir)
  (list "make"
    (list "-s"
          "-C"
          base-dir
          (concat "CHK_SOURCES=" source)
          "SYNTAX_CHECK_MODE=1"
          "check-syntax")))
That gets called by flymake-simple-make-init, which is called because that's what *.c files are mapped to by flymake-allowed-file-name-masks.
So, the right answer would be to modify flymake-allowed-file-name-masks to map *.c files to a different init defun, then write that defun to call rake the way you want. There are a bunch of those defuns already written for various things, and most of them are pretty short and sweet -- so even if you don't know Emacs Lisp, you could probably get something to work with a minimum of futzing. (The really really right answer would be to change flymake-simple-make-init so that the command name was read from a defcustom variable, then submit that change back upstream...)
The quick-and-dirty answer, given that you said all you need to do is call 'rake' with the same args as 'make',  would be to grab a copy of flymake.el, stick it early in your load-path, and munge the 'make' string in flymake-get-make-cmdline to read 'rake' instead. That'll at least get you to the next step...