2013-12-13 110 views
4

我試圖用knife-solo在Vagrant上安裝Ruby 2.0.0-p353。 當我以root身份登錄並且流浪時,ruby -v返回Ruby 2.0.0-p353。捆綁安裝使用不同的Ruby版本?

然而,當我在Rails項目運行bundle install,顯示下面的語句:紅寶石的

Your Ruby version is 1.8.7, but your Gemfile specified 2.0.0 

缺省版本爲1.8.7,所以我覺得bundle install指的是這個。 我該怎麼做才能解決這個問題?

$ cat site-cookbooks/ruby/recipes/default.rb 

group 'rbenv' do 
    action :create 
    members 'vagrant' 
    append true 
end 

git '/usr/local/rbenv' do 
    repository 'git://github.com/sstephenson/rbenv.git' 
    reference 'master' 
    action :checkout 
    user "#{node.user}" 
    group 'rbenv' 
end 

directory '/usr/local/rbenv/plugins' do 
    owner "#{node.user}" 
    group 'rbenv' 
    mode 0755 
    action :create 
end 

template '/etc/profile.d/rbenv.sh' do 
    owner "#{node.user}" 
    group "#{node.user}" 
    mode 0644 
end 

git '/usr/local/rbenv/plugins/ruby-build' do 
    repository 'git://github.com/sstephenson/ruby-build.git' 
    reference 'master' 
    action :checkout 
    user "#{node.user}" 
    group 'rbenv' 
end 

execute 'ruby install' do 
    not_if "source /etc/profile.d/rbenv.sh; rbenv versions | grep #{node.ruby.version}" 
    command "source /etc/profile.d/rbenv.sh; rbenv install #{node.ruby.version}" 
    action :run 
end 

execute 'ruby change' do 
    command "source /etc/profile.d/rbenv.sh; rbenv global #{node.ruby.version}; rbenv rehash" 
    action :run 
end 

$ cat site-cookbooks/ruby/attributes/default.rb 

default['user'] = 'root' 
default['ruby']['version'] = '2.0.0-p353' 

$ cat site-cookbooks/ruby/templates/default/rbenv.sh.rb 

export RBENV_ROOT=/usr/local/rbenv 
export PATH="$RBENV_ROOT/bin:$PATH" 
eval "$(rbenv init -)" 
+0

它你已經使用'rbenv',請嘗試我從這裏回答:http://stackoverflow.com/questions/20531782/updating-ruby-version-with-rbenv-but-gems-apparently-not-updated/20535848#20535848 –

+0

謝謝你的回答。我試圖按照該頁面做,但我不能。例如,'bundle install'返回'Gem :: InstallError:activesupport需要Ruby版本> = 1.9.3.'。 – ztbuz

+0

但是你有紅寶石版本> = 1.9.3,你有2.0.0嗎?或1.8.7? –

回答

3

請執行以下步驟來解決這個問題:

  1. 確保以下命令返回紅寶石的正確版本:

    $ rbenv versions 
        system 
        2.0.0-p353 
    
    $ rbenv local 
    ruby-2.0.0 
    
    $ rbenv version 
        2.0.0-p353 
    
  2. 確保獲得版本的紅寶石是正確的:

    $ bundle exec ruby -v 
    ruby 2.0.0-p353 (2013-11-22 revision 43784) [x86_64-linux] 
    
  3. 如果你有紅寶石的版本無效,您外殼驗證問題是bundler致電:

    $ bundle exec ruby -v 
    ruby 1.8.7 
    
    $ which bundle 
    /usr/bin/bundle 
    

    它說,它會調用系統紅寶石進行Ruby腳本。

  4. 重新安裝捆綁,並確保現在目前的紅寶石是有效的:

    $ gem install bundler 
    
    $ bundle exec ruby -v 
    ruby 2.0.0-p353 (2013-11-22 revision 43784) [x86_64-linux] 
    

另請參閱如何正確設置一個Ruby項目,該項目正處於rbenv/RVM here開發: