Нормально напсать реализацию DSL в 69 строк, а на самом DSL написать 42 стороки, при этом зная что этот DSL понадобиться только один раз. Да ладно строки, но ведь и времени потрачено намного больше чем решать тупо в лоб... Но зато когда смотришь на сам DSL - красиво. Правдо когда смотришь на его реализацию - ужоснах. Короче хватит писать код ранним утром)
PS: БЛЯ! Это не самое смешное. Самое смешное, что весь этот DSL создавался для того чтобы протестить одну фичу. А реализация фичи заняла суко - ОДНУ строку. одну бля. правда длинную. это ваще песдец.
пятница, 24 августа 2007 г.
воскресенье, 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
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, но зато удобно.
Выбор хоткеев противоречит политки емакс на 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 файлами и соответвующими им файлами моделей, контроллеров и вьюшек. Но это я думаю не скоро, т.к. не хочу делать абы как, а сначала вернутся к основной ветке проекта.
Вот собтвенно код:
PS: Как особо частые операции я забиндил их на F11 и F12:
Вот пока, спекалка файлов. Собственно интересны 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))
Подписаться на:
Сообщения (Atom)