Module: Lono::Bundle

Extended by:
Bundle
Included in:
Bundle
Defined in:
lib/lono/bundle.rb

Overview

Named Bundle vs Bundler to avoid having to fully qualify ::Bundler

Instance Method Summary collapse

Instance Method Details

#bundler_groupsObject



48
49
50
# File 'lib/lono/bundle.rb', line 48

def bundler_groups
  [:default, Lono.env.to_sym]
end

#gemfile?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/lono/bundle.rb', line 44

def gemfile?
  ENV['BUNDLE_GEMFILE'] || File.exist?("Gemfile")
end

#handle_error(e) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/lono/bundle.rb', line 25

def handle_error(e)
  puts e.message
  return if e.message.include?("already activated")
  puts <<~EOL.color(:yellow)
    WARNING: Unable to require "bundler/setup"
    There may be something funny with your ruby and bundler setup.
    You can try upgrading bundler and rubygems:

        gem update --system
        gem install bundler

    Here are some links that may be helpful:

    * https://bundler.io/blog/2019/01/03/announcing-bundler-2.html

    Also, running bundle exec in front of your command may remove this message.
  EOL
end

#requireObject



17
18
19
20
21
22
23
# File 'lib/lono/bundle.rb', line 17

def require
  return unless gemfile?
  Kernel.require "bundler/setup"
  Bundler.require(*bundler_groups)
rescue LoadError => e
  handle_error(e)
end

#setupObject

Looks like for zeitwerk module autovivification to work ‘bundle exec` must be called. This allows zeitwork module autovivification to work even if the user has not called lono with `bundle exec lono`. Bundler.setup is essentially the same as `bundle exec` Reference: www.justinweiss.com/articles/what-are-the-differences-between-irb/



9
10
11
12
13
14
15
# File 'lib/lono/bundle.rb', line 9

def setup
  return unless gemfile?
  Kernel.require "bundler/setup"
  Bundler.setup # Same as Bundler.setup(:default)
rescue LoadError => e
  handle_error(e)
end