【问题标题】:Git Push to Rails Production Gives Response Your Ruby version is 1.9.3, but your Gemfile specified 2.2.2 When Ruby Version is 2.2.2Git Push to Rails Production 给出响应您的 Ruby 版本是 1.9.3,但是当 Ruby 版本是 2.2.2 时,您的 Gemfile 指定了 2.2.2
【发布时间】:2015-12-13 20:44:22
【问题描述】:

我到处都看到了这个错误,但我找到的解决方案都没有帮助解决这个问题。我正在 Mac 上本地开发一个 rails 应用程序,并在 DigitalOcean 上设置了一个 droplet 来将应用程序推送到。我的 droplet 正在运行 Ubuntu 14,我正在使用 Git 接收后挂钩进行部署。这是钩子:

#!/bin/bash

GIT_DIR=/home/xxx/yyy_production
WORK_TREE=/home/xxx/yyy
export XXX_DATABASE_USER='xxx'
export XXX_DATABASE_PASSWORD='12345'

export RAILS_ENV=production
. ~/.bashrc

while read oldrev newrev ref
do
    if [[ $ref =~ .*/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
        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

这是我推送时得到的输出:

Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 444 bytes | 0 bytes/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: Master ref received.  Deploying master branch to production...
remote: Your Ruby version is 1.9.3, but your Gemfile specified 2.2.2
remote: rake aborted!
remote: Bundler::RubyVersionMismatch: Your Ruby version is 1.9.3, but your Gemfile specified 2.2.2

我完全不明白这一点,因为我已经安装了 ruby​​ 2.2.2 并使用 RVM 选择了它。当我使用 ssh 登录到 Ubuntu 机器时,我在运行 bundler 时没有遇到任何错误。然而,当我使用我的钩子运行时,这就是它所做的。我已经为此奋斗了好几天。非常感谢任何帮助。

只是一些附加信息:

ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]

rvm info

ruby-2.2.2:

  system:
    uname:       "Linux mgots-app-01 3.13.0-68-generic #111-Ubuntu SMP Fri Nov 6 18:17:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux"
    system:      "ubuntu/14.04/x86_64"
    bash:        "/bin/bash => GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)"
    zsh:         " => not installed"

  rvm:
    version:      "rvm 1.26.11 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]"
    updated:      "21 hours 6 minutes 30 seconds ago"
    path:         "/usr/share/rvm"

  ruby:
    interpreter:  "ruby"
    version:      "2.2.2p95"
    date:         "2015-04-13"
    platform:     "x86_64-linux"
    patchlevel:   "2015-04-13 revision 50295"
    full_version: "ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]"

  homes:
    gem:          "/home/xxx/.rvm/gems/ruby-2.2.2"
    ruby:         "/usr/share/rvm/rubies/ruby-2.2.2"

  binaries:
    ruby:         "/usr/share/rvm/rubies/ruby-2.2.2/bin/ruby"
    irb:          "/usr/share/rvm/rubies/ruby-2.2.2/bin/irb"
    gem:          "/usr/share/rvm/rubies/ruby-2.2.2/bin/gem"
    rake:         "/usr/share/rvm/rubies/ruby-2.2.2/bin/rake"

  environment:
    PATH:         "/home/xxx/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/usr/share/rvm/rubies/ruby-2.2.2/bin:/usr/share/rvm/bin:/home/carl/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/home/xxx/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/home/xxx/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/home/xxx/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/home/xxx/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/home/xxx/.rbenv/plugins/ruby-build/bin:/home/xxx/.rbenv/shims:/home/xxx/.rbenv/bin:/home/xxx/.rvm/gems/ruby-2.2.2/bin:/home/xxx/.rvm/gems/ruby-2.2.2@global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    GEM_HOME:     "/home/xxx/.rvm/gems/ruby-2.2.2"
    GEM_PATH:     "/home/xxx/.rvm/gems/ruby-2.2.2:/home/xxx/.rvm/gems/ruby-2.2.2@global"
    MY_RUBY_HOME: "/usr/share/rvm/rubies/ruby-2.2.2"
    IRBRC:        "/usr/share/rvm/rubies/ruby-2.2.2/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

编辑:根据请求发布更多数据

宝石文件

source 'https://rubygems.org'
ruby "2.2.2"

gem 'rails',                                '4.2.2'
gem 'pg'
gem 'bootstrap-sass',               '3.3.5.1'
gem 'sass-rails',                   '~> 5.0'
gem 'uglifier',                         '>= 1.3.0'
gem 'coffee-rails',                 '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder',                         '~> 2.0'
gem 'font-awesome-rails'
gem 'sdoc',                                 '~> 0.4.0', group: :doc
gem 'bcrypt', '~> 3.1.7'
gem 'geocoder',                         '1.2.12'

group :development, :test do
  gem 'byebug'
  gem 'web-console',                    '~> 2.0'
    gem 'spring'
end

group :production do
  gem 'puma'
  gem 'therubyracer', platforms: :ruby
end

rvm 列表

rvm rubies

 * ruby-2.2.1 [ x86_64 ]
=> ruby-2.2.2 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

~/.bashrc

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
if [[ -n "$PS1" ]]; then
  # Some code here... e.g.
  export HISTCONTROL=ignoreboth
fi
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session

【问题讨论】:

    标签: ruby-on-rails-4 rvm ubuntu-14.04 git-post-receive gem-bundler


    【解决方案1】:

    在您的 droplet 和 mac 上,删除 Gemfile.lock,确保 ruby -v 响应版本 2.2,然后执行 bundle update

    这些步骤应该会重置一切。如果它们不起作用,请执行 spring stop 并重新安装 bundler binstubs(如果您使用这些工具)。

    祝你好运!

    【讨论】:

    • 我没有使用 binstubs。我在 spring 上停下来,因为它安装了 gem,但我不认为我正在使用它。它只说“春天没有运行”,所以我认为在我跑到停止之前它没有运行。我还删除了两个系统上的 .lock 文件,重新安装了 bundler 并运行了 bundle update - 结果相同
    • 能否请您添加您的Gemfile 的内容以及运行rvm list 的结果?
    • 抱歉耽搁了;一直在旅行。您从rvm list 粘贴的响应是您在 Ubuntu 液滴或 Mac 上看到的吗?液滴是我很想知道的。您还可以从您的液滴中粘贴~/.bashrc 的内容吗?如果 bundler 说您使用的是 ruby​​ 1.9.3 版,而您只有 ruby​​ 2.2+ 版和 rvm,这表明 bash shell 中没有使用 rvm。我还不确定问题是什么。这可能会为您指明正确的方向:rvm.io/workflow/completion
    • 另一个想法 - 您的项目是否有以下文件:.ruby-version.versions-conf.rvmrc?这些文件能够设置 ruby​​ 版本和覆盖环境默认值:rvm.io/workflow/projects
    • 第一个问题:是的,就是droplet中的rvm列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2016-03-04
    • 2014-05-27
    • 2018-06-09
    相关资源
    最近更新 更多