gpt4 book ai didi

ruby - 捆绑安装使用不同的 Ruby 版本?

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:58 28 4
gpt4 key购买 nike

我尝试使用 knife-solo 在 Vagrant 上安装 Ruby 2.0.0-p353。当我以 root 和 vagrant 身份登录时,ruby -v 返回 Ruby 2.0.0-p353。

但是,当我在 Rails 项目中运行 bundle install 时,会显示以下语句:

Your Ruby version is 1.8.7, but your Gemfile specified 2.0.0

Ruby 的默认版本是 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 -)"

最佳答案

请按照以下步骤解决问题:

  1. 确保以下命令返回正确版本的 ruby​​:

    $ rbenv versions
    system
    2.0.0-p353

    $ rbenv local
    ruby-2.0.0

    $ rbenv version
    2.0.0-p353
  2. 确保获取的ruby版本是正确的:

    $ bundle exec ruby -v
    ruby 2.0.0-p353 (2013-11-22 revision 43784) [x86_64-linux]
  3. 如果您得到的 ruby​​ 版本无效,您可以通过调用 shell 来验证问题出在 bundler 中:

    $ bundle exec ruby -v
    ruby 1.8.7

    $ which bundle
    /usr/bin/bundle

    它说它将调用系统 ruby​​ 来执行 ruby​​ 脚本。

  4. 重新安装 bundler,然后确保当前的 ruby​​ 有效:

    $ gem install bundler

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

另请参阅如何正确设置ruby 项目,该项目正在rbenv/rvm 下开发here :

关于ruby - 捆绑安装使用不同的 Ruby 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563439/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com