相关疑难解决方法(0)

从Grunt任务中启动MongoDB

是否可以从Grunt任务中启动MongoDB?基本上当我运行我的开发环境时,grunt server我希望它可以通过运行来启动MongoDB服务器mongod.

shell automation mongodb gruntjs

22
推荐指数
3
解决办法
6377
查看次数

在gruntfile中执行shell脚本并将结果赋给变量

我正在使用grunt来管理一套摩卡运行测试.mocha测试套件中需要的一件事是设置某些环境变量,以便根据运行测试的开发人员的环境正确执行测试.其中一个环境变量在每个开发人员的机器上都有不同的值,因此我们执行一个bash脚本来为我们设置的环境变量返回该值.

我正在使用grunt.util.spawn来运行脚本并将其结果分配给我的gruntfile中定义的变量,然后使用grunt-env来设置具有该值的环境变量.下面是我的gruntfile示例(在coffeescript中):

module.exports = (grunt) ->
  envvar = ''

  grunt.initConfig
    pkg: grunt.file.readJSON('package.json')

    env:
      dev:
        ENV_VAR: envvar

    simplemocha:
      options:
        timeout: 30000
        reporter: 'spec'
        compilers: 'coffee:coffee-script'
      all:
        src: ['Tests/**/*.coffee']

  grunt.registerTask 'init', ->
    done = this.async
    command =
      cmd: './bin/get_envvar.sh'
    grunt.util.spawn command, (error, result, code) ->
      envvar = result
      console.log 'envvar: ' + envvar
      done

  grunt.registerTask 'test', ['init', 'env', 'simplemocha']
Run Code Online (Sandbox Code Playgroud)

要执行此操作,我打电话给...

/path/to/grunt test
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然init运行,但其中的回调似乎没有被执行,因此envvar永远不会被设置.奇怪的是,如果我在我的测试中禁用了日志记录,那么回调就会被调用,但只有在我的env和simplemocha任务被启动后才会被调用.我对grunt任务的理解是它们是阻塞的,所以我希望在继续下一个任务之前必须完成init任务(即使使用其中的异步函数).

有任何想法吗?

bash spawn node.js coffeescript gruntjs

7
推荐指数
1
解决办法
3890
查看次数

shell脚本 - 检查mongod服务器是否正在运行

我有一个shell脚本来做一些mongo db动作:

例如 mongo testdb --eval "db.dropDatabase()"

但是,如果mongod服务器没有运行,我得到:

MongoDB shell version: 2.0.4
connecting to: testdb
Tue May 14 04:33:58 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
Run Code Online (Sandbox Code Playgroud)

有没有办法在mongo我可以检查连接状态?最终我想要这样的东西:

if(mongod is running):
    mongo testdb --eval "db.dropDatabase()"
else:
    echo "pls make sure your mongod is running"
    exit 1
Run Code Online (Sandbox Code Playgroud)

shell mongodb

5
推荐指数
1
解决办法
9805
查看次数

标签 统计

gruntjs ×2

mongodb ×2

shell ×2

automation ×1

bash ×1

coffeescript ×1

node.js ×1

spawn ×1