gemfile.lock和gemset Ruby应用程序

时间:2016-04-26 12:50:40

标签: ruby

寻找关于在我的应用程序中使用gemset的好处以及这两种场景之间的区别的一些说明

1)在我的Gemfile中指定ruby版本并且没有gemset

2)创建.ruby-version.ruby-gemset文件

所以在第一个场景中我会运行bundle,我的所有gems依赖项和版本都会被写入Gemfile.lock

在第二种情况下,同样会发生,但也会创建一个gemset。 每次我使用gemset进入项目时,它都会使用该gemset。

我的情况是我有多个ruby应用程序,我不希望有任何宝石不兼容问题,并且也保持一致的方法

首先,我在这里错过了一些基本原理,其次是gemset给我的价值,Gemfile.lock还没有涵盖这个价值

由于

1 个答案:

答案 0 :(得分:1)

所以有一些事情。

首先,.ruby_version用于指定要用于您所在文件夹的ruby版本。如果您运行多个版本的ruby并确保应用程序运行该版本的ruby,这将非常有用。如果没有.ruby-version则将使用全局版本的ruby。

当您调用gem install或bundler时,它将根据调用它的ruby版本安装gem。因此,如果您的ruby的全局版本是ruby-2.0,并且.ruby_version中的本地ruby是ruby-2.3.0并且您从本地ruby调用bundle install,它将针对ruby-2.3.0安装gem。

.ruby-version.ruby-gemset无关,可以在有或没有的情况下使用。

其次。 .ruby-gemset文件指定应用程序应使用的gemset,非常类似于Bundler创建的Gemfile.lock文件。如果您使用bundle exec启动应用程序,则应用程序将使用已安装的捆绑gem。如果您刚刚启动应用程序,如果您有.ruby-gemset文件,则将使用全局gem并确定范围。

像我这样的人喜欢捆绑,其他人则不喜欢捆绑。您不需要使用bundler,但与其他应用程序中的其他包管理器一样,它确实在某些情况下使生活更轻松。

请参阅这个关于在GemFile中为宝石指定ruby版本的旧示例(http://rakeroutes.com/blog/how-to-use-bundler-instead-of-rvm-gemsets/