为Meteor应用程序创建自定义CLI工具

Chr*_*ley 5 command-line-interface meteor

我正在研究Meteor应用程序(来自PHP项目的端口),我需要能够从服务器上运行我的应用程序上的命令,以执行各种操作,例如清除缓存,聚合数据等.这些命令需要从shell脚本和crontab.我见过其他人问这个问题,显然还没有正式的方法可以做到这一点.

我读到了使用Meteor方法的建议,只是从客户端的JS控制台用密码调用它们.这并没有解决我从CLI运行它们的问题,但它确实给了我一个想法:

是否可以使用无头浏览器(如PhantomJS)连接到我的应用程序并执行Meteor.call()来模拟一个带有传递给方法的参数的CLI工具?如果可能的话,有谁知道我怎么做到这一点?

谢谢!

Geo*_*oth 5

编辑:更新为使用铁路由器,流星路由器的继任者.

没有无头浏览器或任何复杂的东西.使用Meteorite安装Iron Router并定义服务器端路由:

Router.map(function () {
  this.route('clearCache', {
    where: 'server',
    action: function () {
      // Your cache-clearing code goes here.
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

然后让你的cronjob触发对该URI的HTTP GET请求:

curl http://yoursite.com/clearCache
Run Code Online (Sandbox Code Playgroud)

当Meteor服务器收到GET请求时,路由器将执行您的代码.

为了一点安全性,添加一个密码检查:

Router.map(function () {
  this.route('clearCache', {
    path: '/clearCache/:password',
    where: 'server',
    action: function () {
      if (this.params.password == '2d1QZuK3R3a7fe46FX8huj517juvzciem73') {
        // Your cache-clearing code goes here.
      }
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

并让您的cronjob将该密码添加到URI:

curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73
Run Code Online (Sandbox Code Playgroud)

原帖:

没有无头浏览器或任何复杂的东西.使用Meteorite安装Meteor Router并定义服务器端路由:

Meteor.Router.add('/clearCache', function() {
  // Your cache-clearing code goes here.
});
Run Code Online (Sandbox Code Playgroud)

然后让你的cronjob触发对该URI的HTTP GET请求:

curl http://yoursite.com/clearCache
Run Code Online (Sandbox Code Playgroud)

当Meteor服务器收到GET请求时,路由器将执行您的代码.

为了一点安全性,添加一个密码检查:

Meteor.Router.add('/clearCache/:password', function(password) {
  if (password == '2d1QZuK3R3a7fe46FX8huj517juvzciem73') {
    // Your cache-clearing code goes here.
  }
});
Run Code Online (Sandbox Code Playgroud)

并让您的cronjob将该密码添加到URI:

curl http://yoursite.com/clearCache/2d1QZuK3R3a7fe46FX8huj517juvzciem73
Run Code Online (Sandbox Code Playgroud)