I'm trying to "override" a function
(defun org-babel-ruby-evaluate (buffer body &optional result-type)
I think it came with org mode, which came with prelude.
As a first step, I paste this unmodified version (found via google) in to Scratch and eval-buffer
(defun org-babel-ruby-evaluate (buffer body &optional result-type) "Pass BODY to the Ruby process in BUFFER. If RESULT-TYPE equals 'output then return a list of the outputs of the statements in BODY, if RESULT-TYPE equals 'value then return the value of the last statement in BODY." (if (not session) ;; external process evaluation (save-window-excursion (case result-type (output (with-temp-buffer (insert body) ;; (message "buffer=%s" (buffer-string)) ;; debugging (shell-command-on-region (point-min) (point-max) "ruby" 'replace) (buffer-string))) (value (let ((tmp-file (make-temp-file "ruby-functional-results"))) (with-temp-buffer (insert (format org-babel-ruby-wrapper-method body tmp-file)) ;; (message "buffer=%s" (buffer-string)) ;; debugging (shell-command-on-region (point-min) (point-max) "ruby")) (with-temp-buffer (insert-file-contents tmp-file) (buffer-string)))))) ;; comint session evaluation (message "session evaluation") (let* ((full-body (mapconcat #'org-babel-chomp (list body org-babel-ruby-last-value-eval org-babel-ruby-eoe-indicator) "\n")) (raw (org-babel-comint-with-output buffer org-babel-ruby-eoe-indicator t (insert full-body) (comint-send-input nil t))) (results (cdr (member org-babel-ruby-eoe-indicator (reverse (mapcar #'org-babel-ruby-read-string (mapcar #'org-babel-trim raw))))))) (case result-type (output (mapconcat #'identity (reverse (cdr results)) "\n")) (value (car results))))))
But I don't think it worked for me, I got
Eager macro-expansion failure: (wrong-type-argument listp buffer)