寻找关于在我的应用程序中使用gemset的好处以及这两种场景之间的区别的一些说明
1)在我的Gemfile
中指定ruby版本并且没有gemset
2)创建.ruby-version
和.ruby-gemset
文件
所以在第一个场景中我会运行bundle,我的所有gems依赖项和版本都会被写入Gemfile.lock
在第二种情况下,同样会发生,但也会创建一个gemset。 每次我使用gemset进入项目时,它都会使用该gemset。
我的情况是我有多个ruby应用程序,我不希望有任何宝石不兼容问题,并且也保持一致的方法
首先,我在这里错过了一些基本原理,其次是gemset给我的价值,Gemfile.lock还没有涵盖这个价值
由于
答案 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/)