¡Por alguna razón inexplicable, RubyMine guarda automáticamente cada cambio que haga y cada golpe de tecla activará Guard para ejecutar sus pruebas! Y lo más ridículo es que aparentemente no hay forma de desactivar esta "característica" de autoguardado. Me pregunto, RubyMine parece ser un editor muy popular entre los desarrolladores de Rails y Guard parece ser una herramienta indispensable para automatizar las pruebas. Debido a que Guard es imposible de usar razonablemente con RubyMine, ¿cómo lidian las personas con la automatización de sus pruebas con RubyMine?¿Es imposible usar Guard con RubyMine?
Respuesta
Im utilizando RubyMine con Guardia todo el día, y de hecho, algunas partes de Guard se han desarrollado en el propio RubyMine.
Puede configurar el comportamiento de autoprotección yendo a RubyMine > Preferences
en el menú e ingresando sync
en el cuadro de búsqueda, luego seleccione System Settings
de la lista.
La imagen muestra la configuración de mi y estas obras bien. Es posible que también desee deshabilitar Save files on frame deactivation
, para solo guardar un archivo en un guardado manual.
Yo prefiero usar Guardia de la terminal, pero puede configurar RubyMine para funcionar Guardia directamente mediante la adición de una configuración Run seleccionando Run > Edit configurations
en el menú:
Ahora puede agregar una nueva configuración haciendo clic en el signo más y seleccione +
IRB console
:
AHORA Nombre de la configuración Guard
, introduzca la ruta con el Guard en la escritura del IRB y establecer el directorio de trabajo del proyecto. Es posible que desee entrar en sus argumentos como argumentos de la Guardia IRB, al igual que los diferentes grupos de guardias, etc.
encontré mi camino de velar por la apertura de la terminal, se transformó en el directorio de trabajo del proyecto y ha introducido which guard
, que resultados en /Users/michi/.rvm/gems/ruby-1.9.3-p194/bin/guard
para mi Ruby 1.9.3-p194 SDK administrado por RVM.
A continuación, debe comprobar el Ejecute el script en el contexto del paquete en la pestaña .
Ahora presione OK
y tiene una nueva configuración de ejecución marca. Antes de comenzar la Guardia, se debe configurar el interactor sencilla añadiendo
interactor :simple
a su Guardfile
. Ahora se puede ejecutar (o incluso de depuración) Guardia directamente dentro RubyMine:
disfrutar!
Esa es una respuesta asombrosamente detallada :) – grosser
Genial, gracias! Por alguna razón, guardar mis archivos en RubyMine no activa el protector para volver a ejecutar mis pruebas. ¿Alguna idea de por qué? – alecmce
@alecmce Debería [agregar el soporte adecuado de Readline] (https://github.com/guard/guard/wiki/Add-proper-Readline-support-to-Ruby-on-Mac-OS-X) a su instalación de Ruby . – Netzpirat
O puede agregar un archivo run_guard.rb en la raíz de su proyecto con el siguiente código:
exec 'guard'
¡Cuidado!Rubymine tiene un problema con tu RUTA. Por ejemplo,/usr/local/bin se filtra ...
Cuando ejecuta guardias con RubyMine para las pruebas, es extremadamente útil configurar un entorno de base de datos separado para la especificación de guardia, de lo contrario, experimentará problemas extraños (un proceso o los otros se congela o da resultados inconsistentes.
Nombre su entorno especificación guardia "ci" y crear una entrada adicional en database.yml. yo uso "ci" para la automatización continua.
a continuación, poner esto en su archivo Guardfile. La clave es
'RAILS_ENV' => 'ci'
Así es como tengo la mía configuración:
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
entonces corro
bundle exec guard -g spec
también no les importa tener RubyMine guardar archivos automáticamente cada 60 segundos, incluso si eso da inicio a la Guardia, como mi una nueva MBP Retina no disminuye notablemente cuando se ejecuta Guard.
BTW, las especificaciones de funcionamiento de Guard son realmente geniales, ya que usted encontrará pruebas que fallan mucho más rápido que intentar realizar las pruebas usted mismo en RubyMine. Es decir, la prueba básicamente se trata de hacer cuando el dedo se suelta de los cmd-s para guardar.
Ejecuto esto desde la terminal. No he intentado correr con RubyMine. ¿Alguien quiere comentar sobre las ventajas de hacer eso? Supongo que tener el volcado de pila clicable sería agradable.
Me gusta usar 'locate \ */bin/guard' ya que es una manera fácil de mostrar todas las instalaciones del archivo binario en tu sistema :) –
No tengo idea de por qué, pero esto resolvió un montón de E/S y sqlite excepciones de bloqueo para mí. –
Este es un problema realmente frustrante, y hace que sea muy difícil usar RubyMine con protector o gruñido u otros corredores de tareas.
he creado un poco de una solución loco, pero que está funcionando lo suficientemente bien como para mí:
- Añadir una herramienta externa para ejecutar el comando venerable Unix "toque", que actualiza la marca de tiempo modificada de un archivo, generando un evento de sistema de archivos. Debería verse así:
- Asigne a la herramienta externa un atajo de teclado.
- Asigna un atajo de teclado al comando Guardar documento.
- Grabe una macro que ejecuta Guardar documento, luego la herramienta externa "táctil". Debe utilizar los atajos de teclado que asignó porque Guardar documento no aparece en los menús de la aplicación.
- Asigna Cmd-S como un atajo de teclado para tu nueva macro.
Mi entrada en el blog completo sobre esto es en http://singlebrook.com/blog/saving-files-in-rubymine
- 1. ¿Es imposible usar Generics de forma dinámica?
- 2. ¿Es imposible usar el mapa stl con struct?
- 3. Depurador RubyMine con Rake?
- 4. ¿Es imposible usar rangos decimales en un interruptor en C#?
- 5. guard desugaring
- 6. geom_wordcloud: es un sueño imposible
- 7. Widget con proveedor de contenido; imposible de usar ReadPermission?
- 8. Decode un PHP codificado con 'zend guard'
- 9. .NET Guard Class Library?
- 10. Refactoring Guard Clauses
- 11. ¿Por qué es exactamente una semántica imposible?
- 12. Integrar RubyMine con GitHub para Windows
- 13. ¿Es imposible separar javascript de HTML?
- 14. LiveReload no funciona Guard (Firefox)
- 15. Rieles: Rubymine: GitHub
- 16. Cómo desinstalar RubyMine?
- 17. Consola simple en RubyMine
- 18. ¿Sobrecarga de tipo de retorno realmente imposible de usar?
- 19. Imposible mostrar errores con PHP bajo IIS7.5
- 20. MVC2: ¿Imposible cambiar el nombre con TextBoxFor?
- 21. AS3: ¿Imposible copiar DisplayObjects con contenido?
- 22. RubyMine en linux
- 23. VB.NET: imposible de usar Método de extensión en System.Object instancia
- 24. Imposible crear gm con caracteres especiales
- 25. Ruby on Rails, Running Guard, muere de inmediato con "Killed"
- 26. ¿Por qué es imposible usar el grabador de voz en el emulador de Android?
- 27. ¿El diseño imposible?
- 28. PHP 301 ¿Redirigir, Imposible?
- 29. Personalización de include-guard para Eclipse CDT
- 30. Rubymine: cómo formatear el código
Hay un tema abierto para esto: http://youtrack.jetbrains.com/issue/RUBY-9903. – CrazyCoder
¿Cómo es "inexplicable"? –
Personalmente prefiero no tener guardado automático. A veces, especialmente con golpes vim, puede agregar erróneamente un carácter adicional en algún lugar del archivo actual mientras cambia a otro y no lo nota. Por lo general, las pruebas detectan esto, pero una vez en un archivo .js, desplegué una "z" añadida al final y no la capté hasta que realicé las pruebas de varios navegadores por las que IE vomitó en ella. – Ted