пятница, 24 августа 2007 г.

Это нормально?

Нормально напсать реализацию DSL в 69 строк, а на самом DSL написать 42 стороки, при этом зная что этот DSL понадобиться только один раз. Да ладно строки, но ведь и времени потрачено намного больше чем решать тупо в лоб... Но зато когда смотришь на сам DSL - красиво. Правдо когда смотришь на его реализацию - ужоснах. Короче хватит писать код ранним утром)

PS: БЛЯ! Это не самое смешное. Самое смешное, что весь этот DSL создавался для того чтобы протестить одну фичу. А реализация фичи заняла суко - ОДНУ строку. одну бля. правда длинную. это ваще песдец.

воскресенье, 19 августа 2007 г.

Когда выйдет YARV все отсосут

Так и будет, я уверен :)

http://www.rubychan.de/share/yarv_speedups.html

http://antoniocangiano.com/2007/02/19/ruby-implementations-shootout-ruby-vs-yarv-vs-jruby-vs-gardens-point-ruby-net-vs-rubinius-vs-cardinal

четверг, 16 августа 2007 г.

rspec for emacs: finds

Ну и вдогонку finds для rspec.
Выбор хоткеев противоречит политки емакс на C-c , но зато удобно.




(rails-find:gen "spec" "spec/")
(rails-find:gen "spec-controllers" "spec/controllers/")
(rails-find:gen "spec-models" "spec/models/")
(rails-find:gen "spec-helpers" "spec/helpers/")
(rails-find:gen "spec-fixtures" "spec/fixtures/")

(define-keys rails-minor-mode-map
((rails-key "\C-c f r s") 'rails-find:spec)
((rails-key "\C-c f r c") 'rails-find:spec-controllers)
((rails-key "\C-c f r m") 'rails-find:spec-models)
((rails-key "\C-c f r h") 'rails-find:spec-helpers)
((rails-key "\C-c f r v") 'rails-find:spec-views)
((rails-key "\C-c f r f") 'rails-find:spec-fixtures))



rspec for emacs: runer

Уже почти месяц опять пишу на Rails. Нужно срочно возвращаться к emacs-rails но времени пока так мало(( К тому же нужно разбираться что там за год без меня понаписали. Начал делать автоматизацию для rspec.
Вот пока, спекалка файлов. Собственно интересны 3 функции. rails-spec:files, её можно запускать интерактивно и передать список всех файлов (от корня проекта), которые нужно спекать. Вторая rails-spec:this-file, соответственно запускает spec на текущий файл. Третья: rails-spec:all, понятно для чего. Пока сделал последнюю через ./script/spec ./spec, т.к. непонятно как быть с опциями в rake spec...

Собственно сделано это для двух вещей. Во первых - запускать спеки текущего файла одной кнопкой, ни куда не переходя. Во вторых (и в основном из-за этого) теперь можно щелчком мышкой или энтером перейти на то место где косяк. Очень много экономит времени.

В следующем выпуске переход между spec файлами и соответвующими им файлами моделей, контроллеров и вьюшек. Но это я думаю не скоро, т.к. не хочу делать абы как, а сначала вернутся к основной ветке проекта.



Вот собтвенно код:



(defmacro* in-directory ((directory) &rest body)
(let ((before-directory (gensym)))
`(let ((,before-directory default-directory)
(default-directory ,directory))
(cd ,directory)
,@body
(cd ,before-directory))))


(defmacro* rails-project:in-root-with-cd (&rest body)
(let ((root (gensym)))
`(rails-project:with-root (,root)
(in-directory (,root) ,@body))))



(defun rails-project:compile-in-root (command)
(rails-project:in-root-with-cd
(compile command)))


(defun rails-spec:files (files)
(interactive "Mspec files: ")
(rails-project:compile-in-root (concat "./script/spec " files)))


(defadvice rails-spec:this-file
(before save-files activate compile)
(save-buffer))

(defun rails-spec:this-file ()
(interactive)
(rails-spec:files (buffer-file-name (current-buffer))))

(defun rails-spec:all ()
(interactive)
(rails-spec:files "./spec"))



PS: Как особо частые операции я забиндил их на F11 и F12:



(define-keys rails-minor-mode-map
((kbd "<f12>") 'rails-spec:this-file)
((kbd "<f11>") 'rails-spec:all))