Czy stosowanie Guard z Rubyminą jest niemożliwe?

Z jakiegoś niewytłumaczalnego powodu RubyMine automatycznie rejestruje każdą wprowadzoną zmianę, więc każde naciśnięcie klawisza uruchomi Guard, aby przeprowadzić testy! A najbardziej śmieszne jest to, że najwyraźniej nie ma sposobu, aby wyłączyć tę funkcję automatycznego zapisywania. Tak się zastanawiam, RubyMine wydaje się być bardzo popularnym edytorem wśród programistów Rails, a Guard wydaje się być niezbędnym narzędziem do automatyzacji testów. Ponieważ Guard jest niemożliwy do racjonalnego użycia z Rubyminą, jak ludzie radzą sobie z automatyzacją ich testy z Rubyminą?

Author: yiinewbie, 2012-08-17

4 answers

Używam Rubyminy z Guard przez cały dzień, a w rzeczywistości niektóre części Guard zostały opracowane w samej Rubyminie.

Możesz skonfigurować auto-bezpieczne zachowanie, przechodząc do RubyMine > Preferences w menu i wpisując sync w polu wyszukiwania, a następnie wybierz System Settings z listy.

Skonfiguruj automatyczne zachowanie RubyMine

Zdjęcie pokazuje moje ustawienia i te działają dobrze. Możesz również wyłączyć Save files on frame deactivation, Aby zapisać plik tylko na ręcznym zapisie.

Wolę używać strażnika z terminala, można jednak skonfigurować RubyMine, aby uruchamiał Guard bezpośrednio, dodając Run configuration , wybierając Run > Edit configurations z menu:

Teraz możesz dodać nową konfigurację klikając na znak plus + i wybierając IRB console:

Dodaj nową konfigurację uruchamiania

Teraz nazwij konfigurację Guard, wprowadź ścieżkę ochrony do skryptu IRB i ustaw katalog roboczy projektu. Możesz wprowadzić argumenty strażników jako argumenty IRB, np. różne grupy strażników itp.

Konfiguracja konfiguracji run

Znalazłem swoją ścieżkę do strzeżenia otwierając terminal, zmieniłem się w katalog roboczy projektu i wpisałem which guard , co daje {[10] } dla mojego Ruby 1.9.3-P194 SDK zarządzanego przez RVM.

Następnie sprawdź Uruchom skrypt w kontekście pakietu w zakładce Bundler.

Uruchom z pakietem exec

Teraz naciśnij OK i masz zupełnie nową konfigurację run. Przed uruchomieniem Guard należy skonfigurować interaktor na prosty przez dodawanie

interactor :simple

Do twojego Guardfile. Teraz możesz uruchomić (a nawet debugować) Guard bezpośrednio w RubyMine:

Strażnik w akcji

Smacznego!
 145
Author: Netzpirat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-19 11:01:27

Kiedy uruchamiasz guard z RubyMine do testów, niezwykle przydatne jest skonfigurowanie osobnego środowiska bazy danych dla specyfikacji guard, w przeciwnym razie napotkasz dziwne problemy (jeden lub drugi proces zawiesza się lub daje niespójne wyniki.

Nazwij swoje środowisko guard spec " ci " i utwórz dodatkowy wpis w bazie danych.yml. Używam " ci " do ciągłej automatyzacji.

Więc włóż to do swojego strażnika. Najważniejsze jest
'RAILS_ENV' => 'ci'

Oto Jak mam swoje konfiguracja:

group :spec do
  guard :spork, :rspec_port => 1234, :cucumber_env => { 'RAILS_ENV' => 'ci' }, :rspec_env => { 'RAILS_ENV' => 'ci' } do
    watch('config/application.rb')
    watch('config/environment.rb')
    watch(%r{^config/environments/.+.rb$})
    watch(%r{^config/initializers/.+.rb$})
    watch('spec/spec_helper.rb')
    watch(%r{app/models/.+\.rb})
    watch(%r{app/views/.+\.haml})
    watch('Gemfile')
    watch('Gemfile.lock')
    watch('test/test_helper.rb')
  end

  # environment is 'ci'
  guard :rspec, :cli => '--drb --drb-port 1234', :version => 2, :all_after_pass => false, :notification => true, :environment => 'ci' do
    watch(%r{^spec/.+_spec.rb$})
    watch(%r{^lib/(.+).rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
    watch('spec/spec_helper.rb')  { "spec" }
  # Rails example
    watch(%r{^spec/.+_spec.rb$})
    watch(%r{^app/(.+).rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
    watch(%r{^lib/(.+).rb$})                           { |m| "spec/lib/#{m[1]}_spec.rb" }
    watch(%r{^app/controllers/(.+)_(controller).rb$})  do |m|
      ["spec/routing/#{m[1]}_routing_spec.rb",
       "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb",
       "spec/acceptance/#{m[1]}_spec.rb",
       "spec/requests/#{m[1]}_spec.rb"]
    end

    watch(%r{^spec/support/(.+).rb$})                  { "spec" }
    watch('config/routes.rb')                          { "spec/routing" }
    watch('app/controllers/application_controller.rb')  { "spec/controllers" }
    # Capybara request specs
    watch(%r{^app/views/(.+)/.*.(erb|haml)$})          { |m| "spec/requests/#{m[1]}_spec.rb" }
  end
end

I then run

bundle exec guard -g spec

Nie mam też nic przeciwko temu, aby RubyMine zapisywał pliki automatycznie co 60 sekund, nawet jeśli to zaskoczy, ponieważ moja nowa Siatkówka MBP nie zwalnia wyraźnie podczas uruchamiania Guard.

BTW, guard running specs jest naprawdę świetny, ponieważ niepowodzenie testów znacznie szybciej niż próba samodzielnego uruchomienia testów w RubyMine. Czyli, test w zasadzie jest o zrobić do czasu mój palec zwalnia z cmd-s, aby zapisać.

Prowadzę to od terminal. Nie próbowałem biegać z Rubyminą. Czy ktoś chce skomentować zalety robienia tego? Myślę, że klikanie zrzutu stosu byłoby miłe.

 4
Author: justingordon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-29 21:27:01

Jest to naprawdę frustrujący problem i sprawia, że bardzo trudno jest używać RubyMine z guard, grunt lub innymi biegaczami zadaniowymi.

Stworzyłem trochę szalone obejście, ale działa mi wystarczająco dobrze:

  1. Dodaj zewnętrzne narzędzie do uruchamiania czcigodnego Unixowego polecenia "touch", które aktualizuje zmodyfikowany znacznik czasu pliku, generując w ten sposób Zdarzenie systemu plików. Powinno to wyglądać tak: Zewnętrzne narzędzie o nazwie touch
  2. Przypisz zewnętrznemu narzędziu skrót klawiaturowy.
  3. przypisanie klawiatury skrót do polecenia Zapisz dokument.
  4. Nagraj makro, które uruchamia Zapisz dokument, a następnie zewnętrzne narzędzie "dotknij". Musisz użyć przypisanych skrótów klawiaturowych, ponieważ Zapisz dokument nie pojawia się w menu aplikacji.
  5. Przypisz Cmd - S jako skrót klawiaturowy dla nowego makra.

Mój pełny wpis na blogu o tym jest na http://singlebrook.com/blog/saving-files-in-rubymine

 2
Author: sbleon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-15 21:09:48

Lub możesz dodać run_guard.plik rb w katalogu głównym projektu o następującym kodzie:

exec 'guard'
Uważaj! Rubymine ma problem z Twoją ścieżką. Na przykład, /usr/local/bin jest filtrowany ...
 1
Author: jmgarnier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-10 11:40:16