53 votes

Est-il impossible d'utiliser Guard avec RubyMine?

Pour des raisons inexplicables, RubyMine sauvegarde automatiquement à chaque changement que vous faites et donc à chaque touche sera le déclencheur de la Garde à l'exécution de vos tests! Et le plus ridicule, c'est que il n'y a apparemment aucun moyen de désactiver cette sauvegarde automatique "fonctionnalité". Je me demandais simplement, RubyMine semble être très populaire éditeur parmi les développeurs web et de la Garde semble être un outil indispensable utilisé pour automatiser les tests. Depuis la Garde est impossible de l'utiliser de manière raisonnable, avec RubyMine, comment des gens face à l'automatisation de leurs tests avec RubyMine?

149voto

Netzpirat Points 4248

Im en utilisant RubyMine avec la Garde toute la journée, et en fait, certaines parties de Garde ont été développés dans RubyMine lui-même.

Vous pouvez configurer l'auto-safe comportement en allant à l' RubyMine > Preferences dans le menu et entrez save dans la zone de recherche, puis sélectionnez General à partir de la liste.

Configure RubyMine auto safe behavior

La photo montre mes paramètres et ces fonctionne très bien. Vous pouvez également désactiver Save files on frame deactivation, pour seulement enregistrer un fichier sur une sauvegarde manuelle.

Je préfère utiliser la Garde à partir de la borne, mais vous pouvez configurer RubyMine pour exécuter Garde directement par l'ajout d'une configuration d'essai en sélectionnant Run > Edit configurations dans le menu:

Maintenant, vous pouvez ajouter une nouvelle configuration en cliquant sur le signe plus, en + et sélectionnez IRB console:

Add new run configuration

Maintenant, le nom de la configuration de l' Guard, entrez le chemin d'accès à la Garde dans la CISR script et définir le projet de répertoire de travail. Vous pouvez entrer votre Garde-les arguments de la CISR arguments, comme les différents groupes de la Garde, etc.

Configure the run configuration

J'ai trouvé mon chemin vers la Garde en ouvrant le terminal, modifié dans le projet de répertoire de travail et est entré which guard, ce qui résulte en /Users/michi/.rvm/gems/ruby-1.9.3-p194/bin/guard pour mon Ruby 1.9.3-p194 SDK géré par RVM.

Ensuite, vous devez vérifier la Exécutez le script dans le contexte de l'ensemble de l' Bundler tab.

Run with bundle exec

Maintenant, appuyez sur OK et vous avez une nouvelle configuration d'exécution. Avant de commencer la Garde, vous devez configurer l'interacteur à simple par l'ajout d'

interactor :simple

pour votre Guardfile. Maintenant, vous pouvez exécuter (ou même de débogage) Garde directement à l'intérieur de RubyMine:

Guard in Action

Profitez-en!

4voto

justingordon Points 1646

Lorsque vous exécutez la garde avec RubyMine pour les tests, il est extrêmement utile pour configurer une base de données distincte de l'environnement pour la garde spec, sinon vous allez avoir d'étranges questions (l'un ou de l'autre se bloque ou se donne des résultats incohérents.

Nom de votre garde-spec de l'environnement "ci" et créer une nouvelle entrée dans la base de données.yml. J'utilise "ci" pour l'Automatisation Continue.

Ensuite, mettez ceci dans votre Guardfile. La clé, c'est

'RAILS_ENV' => 'ci'

Voici comment j'ai la mienne de l'installation:

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

Je puis exécutez

bundle exec guard -g spec

Aussi, je ne me dérange pas d'avoir RubyMine sauvegarder les fichiers automatiquement toutes les 60 secondes, même si ce coup d'envoi de la Garde, comme mon nouveau MBP Retina n'a pas sensiblement ralentir lors de l'exécution de la Garde.

BTW, Garde l'exécution des specs, c'est vraiment génial que vous trouverez à défaut de tests beaucoup plus rapide que d'essayer d'exécuter les tests vous-même dans RubyMine. I. e., le test est essentiellement fait au moment où mon doigt communiqués de cmd-s pour enregistrer.

Je l'exécuter à partir de la borne. Je n'ai pas essayé de courir avec RubyMine. Quelqu'un veut des commentaires sur les avantages de le faire? Je pense avoir le vidage de pile cliquable, ce serait bien.

1voto

21croissants Points 101

Ou vous pouvez ajouter un fichier run_guard.rb à la racine de votre projet avec le code suivant:

 exec 'guard'
 

Fais attention! Rubymine a un problème avec votre PATH. Par exemple, / usr / local / bin est filtré ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X