我正在使用 Vagrant 实例。每当启动 VM 时,都会测试是否存在 MongoDB 数据库。如果它不存在,Grunt 任务将创建它。问题是当数据库不存在时,我的命令总是返回 1,因为 Mongo 只是返回一个空字符串。在它上面运行 wc -m,它总是返回 1,所以我的 exec 永远不会被调用。
我的 exec{} 调用:
exec { 'grunt --gruntfile /var/www/Gruntfile.js exec:populateDatabase':
require => Package[['grunt-cli', 'mongodb-server']],
unless => 'mongo dbName --eval "db.getCollectionNames()" | tail -1'
}
来自 unless 调用的示例输出:
[vagrant@localhost www]$ mongo dbName --eval "db.getCollectionNames()" | tail -1
collection_one,collection_two
[vagrant@localhost www]$ mongo dbThatDoesntExist --eval "db.getCollectionNames()" | tail -1
[vagrant@localhost www]$