对于一些莫名其妙的原因,RubyMine的自动保存你做的每一个变化,因此每次击键将扳机护圈运行测试! 而最可笑的是,有显然没有办法禁用此自动保存“功能”。 我只是想知道,RubyMine的似乎是中Rails开发者一个非常受欢迎的编辑器和警卫似乎是用于自动化测试的必备工具。 由于Guard是不可能合理地使用的RubyMine,人们如何处理与自动化的RubyMine他们的测试?
Answer 1:
即时通讯使用的RubyMine有警卫整天,而事实上,民警卫队的一些地方已经在RubyMine的自身得到了发展。
您可以将配置自动安全行为RubyMine > Preferences
菜单,然后输入sync
在搜索框中,然后选择System Settings
从列表中。
图为我的设置和这些作品的罚款。 您可能还需要禁用Save files on frame deactivation
,仅保存的手动保存文件。
我更喜欢使用卫队的终端,但可以配置的RubyMine直接通过选择添加一个运行配置运行卫队Run > Edit configurations
从菜单:
现在,您可以通过点击加号添加新的配置+
和选择IRB console
:
现在命名配置Guard
,进入看守到IRB脚本,并设置项目工作目录的路径。 您可能需要输入您的卫队论据,IRB的参数,如不同的保护组等。
我发现我的路径打开终端后卫,换上了项目工作目录,进入which guard
,这将导致/Users/michi/.rvm/gems/ruby-1.9.3-p194/bin/guard
我的Ruby 1.9 0.3-P194 SDK由RVM管理。
接下来,您需要检查运行脚本在捆绑的情况下 Bundler
标签。
现在按OK
,你有一个全新的运行配置。 首发后卫之前,您应该通过增加配置交互件简单
interactor :simple
您Guardfile
。 现在,您可以直接卫队内的RubyMine运行(或者调试):
请享用!
Answer 2:
当你的RubyMine的测试运行后卫,这是非常有用的配置后卫规范一个单独的数据库环境,否则你将体验到奇怪的问题(一个过程或其它冻结或提供不一致的结果。
命名您的后卫规范环境“CI”,创造在database.yml中的附加条目。 我用“词”连续自动化。
那么把它放进你的Guardfile。 关键的是
'RAILS_ENV' => 'ci'
以下是我有我的设置:
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
我然后运行
bundle exec guard -g spec
我也不会介意的RubyMine自动保存文件每隔60秒,即使揭开序幕卫队,作为运行卫队时,我的新MBP视网膜不会明显放缓。
BTW,警卫运行规范确实是伟大的,因为你会发现失败的测试比试图自己运行测试中的RubyMine快得多。 即,测试主要是通过左右的时间,从CMD-S我的手指版本保存完成。
我从终端运行此。 我还没有试过的RubyMine运行。 任何人想在这样做的好处评论? 我猜具有堆栈转储可点击就好了。
Answer 3:
这是一个很无奈的问题,使得它非常难用的RubyMine与后卫或呼噜声或其他任务的选手。
我创建了一个有点疯狂的解决方法,但它的工作不够好,对我来说:
- 添加外部工具来运行古老的Unix“触摸”命令,这将更新的文件的修改的时戳,由此产生的文件系统事件。 它应该是这样的:
- 指定外部工具的快捷键。
- 指定键盘快捷方式保存文档的命令。
- 记录运行保存文档的宏,那么“触摸”外部工具。 您需要使用您所指派的键盘快捷方式,因为保存文档不会在应用程序的菜单出现。
- 指定Cmd的-S作为键盘快捷方式为您的新宏。
关于这个我完全的博客文章是http://singlebrook.com/blog/saving-files-in-rubymine
Answer 4:
或者你可以在下面的代码项目的根目录添加run_guard.rb文件:
exec 'guard'
小心! RubyMine的与您的PATH环境变量的问题。 例如,在/ usr / local / bin目录过滤...