Здравейте,
Изборът на текстов редактор, с който да пишете на Руби, в крайна сметка, е въпрос на лични предпочитания. В резултат на това, голяма част от хората, които тази година за първи път се срещат с езика, може да предпочетат да игнорират съветите на Стефан (и моите) да научат Емакс или Вим, а вместо това да продължат да използват редактор, с който са свикнали (или просто ги кефи минимапът му), но е по-малко функционален.
Еднa от функционалностите, които по мое мнение са задължителни за бързото и лесно писане и рефакториране, а отсъстват от почти всички редактори, е наличието на continuous testing.
Бих искал набързо да споделя опита си с конфигурирането на continuous testing с редактор с ограничена функционалност (да се разбира всичко, което не е Емакс или Вим) под Линукс.
Забележка:
Средата, която използвам е както следва:
- Gnome-Shell 3.4.1
- rvm 1.14.2 (stable)
- ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
- rspec 2.11.1
- libnotify-bin
- На скрийншота - Sublime Text, но autotest не зависи по никакъв начин от редактора.
Нужните за autotest gem-ове се инсталират със следната команда:
gem install autotest autotest-rails ZenTest test_notifier
-
Съставете си ~/.autotest който да пази конфигурацията:
require 'autotest/timestamp' require 'test_notifier/runner/autotest'
Ако използвате Gnome-Shell, ще забележите, че нотификациите на test_notifier очакват да кликнете върху тях, което дразни. Много. За да заобиколите това, добавете следното в dotfile-a:
module Notifier module NotifySend extend self def supported? RUBY_PLATFORM =~ /(linux|freebsd)/ && `which notify-send > /dev/null` && $? == 0 end def notify(options) command = [ "notify-send", "--hint=int:transient:1", "-i", options[:image], options[:title], options[:message] ] Thread.new { system(*command) } end end end
И накрая, autotest е предвиден да работи с Rails и в резултат на това, евристиката му рядко сработва за Руби проекти. Това има страничния ефект веднъж минат ли всички тестове, при промяна да не се стартират отново. Оправя се със следната добавка в дотфайла: class Autotest def get_to_green begin rerun_all_tests wait_for_changes unless all_good end until all_good end end
Дръжте тестовете си в правилната поддиректория на работното копие, спрямо конвенцията на фреймуърка за тестване, който ползвате. За
RSpec
това еspec
.В работното си копие създайте .rspec файл със съдържание --format documentation --color
Изпълнете командата
autotest
в работното си копие.
Ето как изглежда работещо: http://i.imgur.com/TG7xt.png
gl;hf