rbenv:同一ruby的多个实例

rbenv:同一ruby的多个实例,ruby,multiple-instances,rbenv,Ruby,Multiple Instances,Rbenv,我有两个脚本需要相同版本的Ruby。但是,每个脚本还需要不同版本的gem(nokogiri)。其中一个脚本将与nokogiri的两个版本(1.6.2.1和1.6.1)一起运行。但是,另一个脚本将仅在版本1.6.1下运行;如果安装了1.6.2.1,脚本将无法正常执行 我知道如何使用rbenv安装多个版本的Ruby。但是可以安装同一版本Ruby(2.1.2)的多个实例吗?如果是,怎么做?我看到两种选择: 您可以使用不同的Gemfiles,让bundler负责设置正确的gem版本。如果脚本位于不同的目

我有两个脚本需要相同版本的Ruby。但是,每个脚本还需要不同版本的gem(nokogiri)。其中一个脚本将与nokogiri的两个版本(1.6.2.1和1.6.1)一起运行。但是,另一个脚本将仅在版本1.6.1下运行;如果安装了1.6.2.1,脚本将无法正常执行

我知道如何使用rbenv安装多个版本的Ruby。但是可以安装同一版本Ruby(2.1.2)的多个实例吗?如果是,怎么做?

我看到两种选择:

  • 您可以使用不同的
    Gemfile
    s,让bundler负责设置正确的gem版本。如果脚本位于不同的目录中,那么应该没有问题

  • 您可以使用单独的gem环境

  • 毫无疑问还有更多,但这两个似乎是最容易安装的。

    1)使用rvm而不是rbenv,使用名为“gemests”的it功能,您可以为一个版本的ruby使用不同版本的gems

    rvm 2.1.1
    rvm gemset create first second
    rvm 2.1.1@first
    gem install nokogiri -v 1.6.1
    rvm 2.1.1@second
    gem install nokogiri -v 1.6.2
    
    2) 或者您可以使用bundler

    gem install bundler
    /dir_1/Gemfile
    source 'http://rubygems.org'
    gem 'nokogiri', '1.6.1'
    
    /dir_2/Gemfile
    source 'http://rubygems.org'
    gem 'nokogiri', '1.6.2'
    

    只需手动编译同一ruby的多个实例(无论安装它们的工具是什么),并配置不同的
    --前缀

    • 下载源代码
    • 拔出
    • /configure--prefix=~/.rbenv/version/2.1.2-tSquirrel
    • make
    • sudo make安装
    这就是rbenv文件建议实现这一目标的方式


    您还可以重命名当前的“2.1.2”-目录,然后使用重新安装2.1.2。

    rbenv中的“版本”只是~/.rbenv/Versions中的目录,我猜您只需重命名/复制已安装的版本,然后使用“rbenv shell”选择“版本”您只需声明要从哪个目录使用二进制文件。

    使用自定义名称制作ruby安装程序定义文件的本地副本

    $ cp ~/.rbenv/plugins/ruby-build/share/ruby-build/2.1.5 2.1.5-nokogiri161
    
    将其作为自定义定义文件安装,无需编辑

    $ rbenv install ./2.1.5-nokogiri161
    
    现在您有了一个具有自定义名称的ruby版本,并且可以在其上安装自定义gems

    $ rbenv shell 2.1.5-nokogiri161
    $ gem install nokogiri -v 1.6.1
    
    这对于安装具有自定义构建标志的ruby版本也很有用。例如,没有编译器优化的调试生成

    $ cp ~/.rbenv/plugins/ruby-build/share/ruby-build/2.1.5 2.1.5-debug
    $ RUBY_CONFIGURE_OPTS="optflags=-O0" rbenv install ./2.1.5-debug
    $ rbenv shell 2.1.5-debug