2014-04-29 54 views
5

我有一個安裝了Ruby 2.1.1的VPS安裝程序,並且本地安裝了相同的版本。我的開發機器運行14.04 Ubuntu報告ruby -v = ruby​​ 2.1.1p76(2014-02-24修訂版45161)[x86_64-linux]和rbenv -v = rbenv 0.4.0-97-gfe0b243。試圖安裝與Capistrano 3和rbenv的rails應用程序

我最初在服務器上使用刀獨奏安裝紅寶石,但它似乎像capistrano想照顧這一點。

當我運行帽分期部署我得到一個錯誤

rbenv: cap: command not found 
The `cap' command exists in these Ruby versions: 2.1.0 

的Gemfile

group :development do 
gem 'capistrano', github: 'capistrano/capistrano', ref: 'master' 
gem 'capistrano-rails', github: 'capistrano/rails', ref: 'master' 
gem 'capistrano-bundler' 
gem 'capistrano-rbenv', "~> 2.0" 
end 

Capfile

require 'capistrano/setup' 
require 'capistrano/deploy' 
require 'capistrano/rbenv' 
require 'capistrano/bundler' 
require 'capistrano/rails/assets' 
require 'capistrano/rails/migrations' 

deploy.rb

set :rbenv_type, :system 
set :rbenv_ruby, '2.1.1' 
set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec" 
set :rbenv_map_bins, %w{rake gem bundle ruby rails} 
set :rbenv_roles, :all # default value 

寶石ENV

RubyGems Environment: 
    - RUBYGEMS VERSION: 2.2.2 
    - RUBY VERSION: 2.1.1 (2014-02-24 patchlevel 76) [x86_64-linux] 
    - INSTALLATION DIRECTORY: /home/mark/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0 
    - RUBY EXECUTABLE: /home/mark/.rbenv/versions/2.1.1/bin/ruby 
    - EXECUTABLE DIRECTORY: /home/mark/.rbenv/versions/2.1.1/bin 
    - SPEC CACHE DIRECTORY: /home/mark/.gem/specs 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-linux 
    - GEM PATHS: 
    - /home/mark/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0 
    - /home/mark/.gem/ruby/2.1.0 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "gem" => "--no-ri --no-rdoc" 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 
    - SHELL PATH: 
    - /home/mark/.rbenv/versions/2.1.1/bin 
+0

你嘗試'rbenv rehash'使rbenv產生Capistrano的二進制墊片。 –

+0

是的,它沒有區別。 – markhorrocks

+0

'gem'capistrano','3.2'寶石'capistrano-rails','1.1''你爲什麼指出主分支 –

回答

0

嘗試從您的開發機器的命令:

cd /path/to/your/application/root 
gem uninstall capistrano 
gem uninstall capistrano-rails 
gem uninstall capistrano-bundler 
gem uninstall capistrano-rbenv 
# select "All versions" everytimes 
bundle 
# Verify that all capistrano gems are installed 
rbenv rehash 

然後嘗試再次cap staging deploy

+0

nope,same錯誤rbenv:2.1.1未在/usr/local/rbenv/versions/2.1.1中找到或未找到 – markhorrocks

+0

「rbenv版本」和「ls/usr/local/rbenv /版本」的輸出是什麼'? (從您的應用程序根目錄運行) – Benj

+0

系統 2.1.0 * 2.1.1(由/home/mark/s/.ruby-version設置) – markhorrocks

0

嘗試使用Ruby 2.1.0,看來這個問題是由一些引起與2.1.1的兼容性問題。

或嘗試將Capistrano更新爲latest release(如果您尚未完成)。

0

是否有可能需要運行deploy:setup_config然後只是直接部署就可以工作。

namespace :logs do desc "tail rails logs" task :tail_rails do on roles(:app) do execute "tail -f #{shared_path}/log/#{fetch(:rails_env)}.log" end end end

1

我解決了同樣的問題設置:rbenv_path。 此致應該是:

set :rbenv_path, '/home/mark/.rbenv/' 

我也不得不設置完整的紅寶石版本,像這樣:

set :rbenv_ruby, '2.1.1-p76' 
11

也與這個問題掙扎了很長一段時間。 @達門的答案指出我正確的方向:

1)在Capfile中設置rbenv的路徑。對於Capistrano的3.2.1,這就是:

set :rbenv_custom_path, '/home/deploy/.rbenv/' 

注(也許明顯),它必須是在服務器上的路徑,以找到它:

which rbenv 

(比較https://github.com/capistrano/rbenv爲rbenv_custom_path語法 - 與@ Darmen的回答略有不同)

2)在capfile中設置正確的rbenv版本,例如,

set :rbenv_ruby, '2.1.2' 

對我來說,我不必使用完整的ruby版本。它以匹配/.rbenv/versions

希望幫助目錄名 - 我花了年齡... ;-)

+0

如果我設置該版本的紅寶石,capistrano停止並給我發出警告:WARN rbenv:2.2.8未安裝或未在'SERVER'的/home/unicorn/.rbenv/versions/2.2.8中找到 –

相關問題