使用git push

时间:2015-05-02 05:13:10

标签: ruby node.js git sass grunt-contrib-sass

我很确定我已经将问题跟踪到Node.js没有看到Sass,但我不知道为什么......

如果我从我的笔记本电脑上推出: git push lamp somebranch:master,服务器远程检查它,运行npm install没有错误,并开始处理gruntfile,但随后以"remote: Warning: spawn ENOENT Use --force to continue."

中止

然而,(在我从我的笔记本电脑上面推送之后)我可以ssh,cd进入我的hooks目录并运行./post-receive并完成"Done, without errors."我也尝试在网站的root中运行grunt它也完成没有错误。

有关可能发生的事情的任何想法?我完全难过了。我应该在钩子中设置sass gem的路径吗?我废弃了我的gruntfile以在本地和服务器上使用相同的目标来排除gruntfile。它在本地编译很好,在服务器上编译很好,但在使用git push lamp somebranch:master时只能

1 个答案:

答案 0 :(得分:0)

有些人可能想知道我为什么不在本地编译并将css从开发框转储到Web根目录中......也许我应该这样做。但这一次,我真的希望推送到部署,编译和所有。对于任何尝试相同事情并遇到同样问题的人来说,这应该会有所帮助。

首先,擦除通过发行版的软件包管理器安装的任何版本的ruby和sass的系统可能不会受到影响。然后我擦除了之前使用rvm implode修补的遗留物并删除了.bashrc等的痕迹。接下来我运行\curl -sSL https://get.rvm.io | bash -s stable --ruby --auto-dotfiles并按ctrl-c先修复任何错误。一旦安装脚本开心,我就让它下载并正常安装。我没有必要使用rvm install n.n.nrvm use n.n.nrvm use n.n.n --default,因为2.2.1被拉进来,无论如何我似乎都很好。在rvm设置了ruby之后,我运行了gem install sass

现在,结束所有人......使用PermitUserEnvironment,就像这里提到的那样:How to use sshd-config permituserenvironment option是要走的路。我看到这个方法存在安全问题,但它是唯一可行的,我不会尝试运行有限的shell。在不使用登录shell时,SSH不允许env变量是正常行为。但是,我假设git钩子可以完全访问用户的正常变量(使用ruby路径等)并且该假设不正确。将PermitUserEnvironment yes添加到服务器的/etc/ssh/sshd_config等,然后重新启动ssh守护程序。作为服务器上的用户,我运行了env并将其复制到.ssh/environment并清理了不需要的内容。之后,我从开发框中找到了git push,它发现并运行了sass编译器就好了。