Ruby Backtick执行在本地工作,但不在服务器上工作

Ruby Backtick执行在本地工作,但不在服务器上工作,ruby,cucumber,sinatra,Ruby,Cucumber,Sinatra,下面是一个简单的sinatra应用程序,可在浏览器中显示cucumber跑步的结果: 需要“sinatra” 获取“/”do `cucumber特性——html格式` 结束 获取'/ls'do `ls` 结束 根路径工作正常,在本地机器上执行我想要的操作:它执行cucumber并显示结果。问题是,在我的服务器上,我得到了错误没有这样的文件或目录-cucumber特性-format html 到目前为止,我已经完成了故障排除 运行ls路线。它可以在本地和服务器上工作,并显示我在这两种情况下预期

下面是一个简单的sinatra应用程序,可在浏览器中显示cucumber跑步的结果:

需要“sinatra”
获取“/”do
`cucumber特性——html格式`
结束
获取'/ls'do
`ls`
结束
根路径工作正常,在本地机器上执行我想要的操作:它执行cucumber并显示结果。问题是,在我的服务器上,我得到了错误
没有这样的文件或目录-cucumber特性-format html

到目前为止,我已经完成了故障排除

  • 运行
    ls
    路线。它可以在本地和服务器上工作,并显示我在这两种情况下预期的目录的结果——sinatra应用程序运行的目录相同
  • 在服务器上通过ssh从命令行运行
    cucumber特性——格式化html
    。同样,它工作正常,输出符合我的预期
那么,当我使用ruby的backticks通过sinatra运行它时,为什么会出现错误呢


谢谢

您确定服务器上安装了cucumber吗?如果是,并且是通过bundler安装的,请尝试将命令更改为:

bundle exec cucumber ...
编辑


原来黄瓜不在路上。解决方案是使用cucumber的完整路径。

您确定服务器上安装了cucumber吗?如果是,并且是通过bundler安装的,请尝试将命令更改为:

bundle exec cucumber ...
编辑


原来黄瓜不在路上。解决方案是使用cucumber的完整路径。

正如我在op中所说的,通过ssh从命令行运行cucumber工作正常,因此必须将其安装在服务器上。另外,我知道是因为我安装了它:)它不是通过bundler安装的,而是通过
gem安装cucumber安装的。您是否正在使用rvm或rbenv,是否可能gem bin文件夹不在服务器外壳的路径中?最简单的检查方法是从服务器打印$PATH。这就是问题所在。它在我的路径上,但不在web服务器的路径上。谢谢Tanzeeb!正如我在op中所说的,通过ssh从命令行运行cucumber工作正常,因此必须将其安装在服务器上。另外,我知道是因为我安装了它:)它不是通过bundler安装的,而是通过
gem安装cucumber安装的。您是否正在使用rvm或rbenv,是否可能gem bin文件夹不在服务器外壳的路径中?最简单的检查方法是从服务器打印$PATH。这就是问题所在。它在我的路径上,但不在web服务器的路径上。谢谢Tanzeeb!