当宿主改变来源grunt / karma没有检测到它时,对流浪者的咕噜业力测试

时间:2014-07-07 10:04:30

标签: linux gruntjs vagrant virtualbox karma-runner

这花了我很多年才找到,但似乎无法找到解决方案。使用vagrant我运行一个运行grunt / karma的Fedora 20来宾。我在主机上编辑的源代码但是当我保存grunt时没有检测到更改,因此没有进行任何测试。

认为这是一个配置问题所以在这里尝试了许多组合而没有成功。最后,我向访客vagrang ssh打开了第二个ssh,并更改了另一个ssh终端echo " " >> app/js/app.js中的文件,看到现在grunt / karma检测到更改并再次运行测试。

因为它没有x窗口或任何我正在使用PhantomJS运行测试。另一个问题是我必须在httpd.conf中设置EnableSendfile off以防止Apache在从共享中提供文本文件时发送垃圾(这是我的主机项目和客户机中的web根目录)。我的猜测是,可能需要对节点执行另一个设置,以便它检测主机对共享上的文件所做的更改。它正在使用virtualBox共享。

之前是否有人经历过这种情况并且有解决方案吗?似乎主机更改共享文件不会触发grunt / karma正在侦听的某些事件,表明文件已更改。

[更新]

尝试过NFS和rsync共享,但NFS根本不起作用,rsync似乎只是在启动时同步。

[更新]

作为临时解决方案,我必须手动告诉文件在ssh终端中更新:

#start grunt and give me back command:
grunt &
#when I update a file tell grunt it's updated
touch -d "now" test/unit/loginSpec.js

有趣的是,如果我更新app/js/login.js并告诉grunt test/unit/loginSpec.js已更新,它将再次运行测试但使用旧的login.js即使已更改cat app/js/login.js也会显示更改。如果不是这样,解决方案将设置焦点到右侧窗口和2次击键(向上箭头并输入)

1 个答案:

答案 0 :(得分:3)

这源于vboxsf(Virtualbox“分片文件夹”文件系统)同步中的已知错误,此问题的解决方案只能由Virtualbox团队实施。人们与Gulp,Guard或Meteor.js有类似的问题(仅举几例)。

您可以使用一些解决方法......

自动rsync的

Vagrant 1.5有一个自动同步工具( rsync-auto ),可以监视指定的文件夹,并在您实时更改时自动同步更改。它使用特定于系统的API来检测文件更改,而不是轮询文件系统......

所以你应该在vagrant文​​件中定义你的共享。即:

config.vm.synced_folder ".", "/vagrant", type: "rsync"


并打开另一个终端会话:

$ vagrant rsync-auto

但是,仅此一项并不是效率最高的选项。在这里,您可以找到 gruntfile vagrant plugin,它们可以帮助您更快更顺畅地运行rsync ......

希望它有所帮助!