【问题标题】:How to do bundle install using specific rvm gemset from git hook post-receive?如何使用 git hook post-receive 中的特定 rvm gemset 进行捆绑安装?
【发布时间】:2011-05-29 04:30:44
【问题描述】:

所以,我正在尝试在不使用 capistrano 的情况下实现类似 heroku 的部署。 要检查和安装 gems,我正在尝试使用 git hook 并将以下命令放入 /hooks/post-receive:

bundle check || bundle install

但是当我运行git push 时,我得到:

remote: hooks/post-receive: line 20: bundle: command not found. 

我知道钩子可能会从错误的环境中启动命令,并且我必须以某种方式从钩子中切换 rvm 环境。我尝试在 post-receive 中使用 rvm use 1.8.7@rails3 但它没有帮助。有什么想法吗?

【问题讨论】:

  • 目标系统上如何安装RVM?全球范围内还是仅针对单个用户? git 系统用户是否可以访问 rvm(也在 rvm 组中)?也许您必须首先将 rvm 环境获取到 post-receive 挂钩(因为我认为,挂钩不会创建具有正确来源/设置的 shell 会话)。
  • 我认为您的问题与此有关:stackoverflow.com/questions/23979647/…

标签: ruby-on-rails ruby git rvm bundler


【解决方案1】:

您可能只需要确保在钩子顶部获取用户的环境,例如:

$ source $HOME/.bash_profile # single user RVM setup
$ source /etc/profile        # multi user RVM setup

【讨论】:

  • 我遇到了完全相同的问题(但是我没有使用 RVM,我只安装了一个 Ruby 版本)。您建议的解决方案对我不起作用,但它让我发现问题出在 PATH 上。感谢那!对我有用的是将 Ruby 的 bin 文件夹包含在 post-receive 钩子开头的路径中(例如PATH=$PATH:/home/deploy/ruby_2.1.1/bin)。
猜你喜欢
  • 2013-06-19
  • 2015-03-22
  • 1970-01-01
  • 2014-06-02
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多