bundle.setup和bundle.require之间的区别是什么

ste*_*ang 10 ruby gem bundle

该男子的Gemfile页,我了解到有两种方法可以导入你在指定的宝石Gemfile.该bundle.setup会"的设置增加了宝石,红宝石的负载路径",同时bundle.require将要求所有的宝石.

这两种方法有什么区别?我应该在哪种情况下使用其中一种?

Con*_*ion 19

Bundler.setup修改LOAD_PATH,这样你可以做类似的事情require 'some_gem',它们会起作用.它允许您"手动"需要宝石.在Bundler之前,使用Rubygems,你可以实现很多相同的效果require 'rubygems'.

Bundler.require(:default)另一方面,实际上需要Gemfile中的所有gem(假设您没有使用组;否则,如果您提供参数,则需要指定组中的那些).它是一堆require 'some_gem'语句的简写.

请参见http://gembundler.com/rationale.html.请注意,他们说你必须在做require 'bundler/setup'之前做Bundler.require,但在实践中,这通常是没有必要的.我几乎从不使用Bundler.setup(或require 'bundler/setup),因为我需要通过所有宝石Bundler.require).


Hol*_*ust 5

你必须使用Bundle.setup,你可以使用Bundle.require.

捆绑器的主要目的是确保Gemfile中定义的Gems对应用程序是可见的,即所提到的所有gems完全提到的版本,但不是一个.为此,调整负载路径.这是通过Bundle.setup.

要实际使用宝石,必须将它们加载到应用程序中.这可以使用多个require语句手动完成,也可以使用Gemfile(或仅某些组)中列出的所有gem自动完成Bundle.require.然而,这仅在适应如上所述的负载路径之后才可能.