Ruby on Rails项目 - >错误由" cap生产部署" - > ERROR rbenv:2.2.2未安装或未找到

时间:2016-03-25 21:52:11

标签: ruby-on-rails capistrano

我尝试执行"限制生产部署"

我遇到了错误
    ERROR rbenv: 2.2.2 is not installed or not found in /usr/local/rbenv/versions/2.2.2

这是我的Gemfile:

    source 'https://rubygems.org'
    # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
    gem 'rails', '4.2.2'
    # Use sqlite3 as the database for Active Record
    gem 'sqlite3'
    # Use SCSS for stylesheets
    gem 'sass-rails', '~> 5.0'
    # Use Uglifier as compressor for JavaScript assets
    gem 'uglifier', '>= 1.3.0'
    # Use CoffeeScript for .coffee assets and views
    gem 'coffee-rails', '~> 4.1.0'
    # See https://github.com/rails/execjs#readme for more supported runtimes
    # gem 'therubyracer', platforms: :ruby
    # Use jquery as the JavaScript library
    gem 'jquery-rails'

    gem 'turbolinks'

    gem 'jbuilder', '~> 2.0'
    # bundle exec rake doc:rails generates the API under doc/api.
    gem 'sdoc', '~> 0.4.0', group: :doc

    # Use ActiveModel has_secure_password
    # gem 'bcrypt', '~> 3.1.7'

    # Use Unicorn as the app server
    # gem 'unicorn'

    # Use Capistrano for deployment
    # gem 'capistrano-rails', group: :development

    group :development, :test do

    gem 'byebug'



     # Access an IRB console on exception pages or by using <%= console %> in views
    gem 'web-console', '~> 2.0'

    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
    gem 'spring'
    end
    group :development do
      gem 'capistrano', '~> 3.4.0'
      gem 'capistrano-rails', '~> 1.1.3'
      gem 'capistrano-rbenv' #'~> 2.2.0'
      gem 'capistrano-passenger'
    end

这是我的Capfile:

    # Load DSL and set up stages
    require 'capistrano/setup'

    # Include default deployment tasks
    require 'capistrano/deploy'


    require 'capistrano/rbenv'
    set :rbenv_type, :user # or :system, depends on your rbenv setup
    set :rbenv_ruby, '2.2.0'

    require 'capistrano/bundler'
    require 'capistrano/rails'
    require 'capistrano/passenger'

    # Load custom tasks from `lib/capistrano/tasks` if you have any defined
    Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

这是我的deploy.rb文件:

    # config valid only for current version of Capistrano
    lock '3.4.0'

    set :application, 'blank1'
    set :repo_url, 'git@bitbucket.org:r2artene/blank1.git'

    # setup rvm.
    set :rbenv_type, :system
    set :rbenv_ruby, '2.2.0'


    # Default branch is :master
    # ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp

    # Default deploy_to directory is /var/www/my_app_name
    set :deploy_to, '/home/deploy/blank1'

    # Default value for :scm is :git
    # set :scm, :git

    # Default value for :format is :pretty
    # set :format, :pretty

    # Default value for :log_level is :debug
    # set :log_level, :debug

    # Default value for :pty is false
    # set :pty, true

    # Default value for :linked_files is []
    # set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')

    # Default value for linked_dirs is []
    # set :linked_dirs, fetch(:linked_dirs, []).push('log',                 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

    set :linked_files, %w{config/database.yml config/secrets.yml}
    set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}


    # Default value for default_env is {}
    # set :default_env, { path: "/opt/ruby/bin:$PATH" }

    # Default value for keep_releases is 5
    # set :keep_releases, 5

    namespace :deploy do

      after :restart, :clear_cache do
        on roles(:web), in: :groups, limit: 3, wait: 10 do
          # Here we can do anything such as:
          # within release_path do
          #   execute :rake, 'cache:clear'
          # end
        end
      end

    end

命令&#34; ruby​​ -v&#34;在本地机器上得到的结果是:

    ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

命令&#34; ruby​​ -v&#34;在deploment服务器上,我得到的结果是:

    ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

1 个答案:

答案 0 :(得分:0)

您在RVM和Rbenv之间遇到冲突,即使您似乎只安装了Ruby 2.2.0,RVM仍然在某个地方(可能是bash配置文件)维护对Ruby 2.2.2的引用。 / p>

RVM和rbenv互为incompatible,因此您必须决定使用哪个工具来管理您的库。删除一个或另一个应该可以解决您的问题。

要卸载RVM,请运行rvm implode,这将完全卸载RVM。

要卸载rbenv,rm您的.rbenv目录,并从shell的脚本中删除对rbenv的引用。