繁体   English   中英

Bundler试图在错误版本的Ruby下运行

[英]Bundler Trying To Run Under Wrong Version of Ruby

我有一个Rails站点,我使用git post-receive钩子通过ssh进行部署。 当我ssh进入服务器并运行软件包安装时,它将在指定的2.2.2红宝石版本下正确运行。 但是,当我从本地计算机推送到服务器时,它遇到“捆绑安装命令”,我得到以下信息:

hooks/post-receive: /usr/local/bin/bundle: /usr/bin/ruby1.9.1: bad interpreter: No such file or directory

我一生无法找到为什么它指向ruby1.9.1。 该目录不存在。 我确实在该目录中看到ruby2.3的目录,但没有看到ruby2.2.2,这是正确的目录。 有些东西很坏,但我不知道如何解决。 有人看到过这样的东西吗?

更新:这是我的接收后钩子,根据下面的请求...

#!/bin/bash

GIT_DIR=/home/deploy/www_production
WORK_TREE=/home/deploy/www
export MGOTS_DATABASE_USER='user'
export MGOTS_DATABASE_PASSWORD='pass'

export RAILS_ENV="production"
. ~/.bash_profile

while read oldrev newrev ref
do
    if [[ $ref = refs/heads/master ]];
    then
        echo "Master ref received.  Deploying master branch to production..."
        mkdir -p $WORK_TREE
        git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f
        mkdir -p $WORK_TREE/shared/pids $WORK_TREE/shared/sockets $WORK_TREE/shared/log

        # start deploy tasks
        cd $WORK_TREE
        bundle install
        rake db:create
        rake db:migrate
        rake assets:precompile
        rake requests:cleanup
        sudo restart puma-manager
        sudo service nginx restart
        # end deploy tasks
        echo "Git hooks deploy complete"
    else
        echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."
    fi
done

更新:为清楚起见,由于答案指向找到答案的正确位置,但未准确说明,因此我将更新后的挂钩文件发布在此处。 您可以看到这与上面的区别,这就是解决问题的方法。 请注意,可以通过键入以下命令找到rvm目录的路径:which rvm-这是您要指向的目录。

#!/bin/bash

GIT_DIR=/home/deploy/www_production
WORK_TREE=/home/deploy/www
export MGOTS_DATABASE_USER='user'
export MGOTS_DATABASE_PASSWORD='pass'

export RAILS_ENV="production"
export RUBYGEMS_GEMDEPS="/home/deploy/.rvm/ruby-2.2.2@www/gems"

. ~/.bash_profile

[[ -s "/usr/share/rvm/bin/rvm" ]] && source "/usr/share/rvm/bin/rvm"

while read oldrev newrev ref
do
    if [[ $ref = refs/heads/master ]];
    then
        echo "Master ref received.  Deploying master branch to production..."
        mkdir -p $WORK_TREE
        git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f
        mkdir -p $WORK_TREE/shared/pids $WORK_TREE/shared/sockets $WORK_TREE/shared/log

        # start deploy tasks
        cd $WORK_TREE
        bundle install
        rake db:create
        rake db:migrate
        rake assets:precompile
        rake requests:cleanup
        sudo restart puma-manager
        sudo service nginx restart
        # end deploy tasks
        echo "Git hooks deploy complete"
    else
        echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."
    fi
done

您需要将RVM函数加载到Shell脚本。 链接或只是切换到Rbenv :)

首先,将您的默认Ruby设置为使用2.2.2

您在使用RVM吗? 对于RVM,它: rvm use --default 2.2.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM