class Tapioca::Gemfile
Constants
- Spec
Attributes
definition[R]
dependencies[R]
gemfile[R]
lockfile[R]
missing_specs[R]
Public Class Methods
new()
click to toggle source
# File lib/tapioca/gemfile.rb, line 30 def initialize @gemfile = T.let(File.new(Bundler.default_gemfile), File) @lockfile = T.let(File.new(Bundler.default_lockfile), File) @definition = T.let(Bundler::Dsl.evaluate(gemfile, lockfile, {}), Bundler::Definition) dependencies, missing_specs = load_dependencies @dependencies = T.let(dependencies, T::Array[GemSpec]) @missing_specs = T.let(missing_specs, T::Array[String]) end
Public Instance Methods
gem(gem_name)
click to toggle source
# File lib/tapioca/gemfile.rb, line 40 def gem(gem_name) dependencies.detect { |dep| dep.name == gem_name } end
require_bundle()
click to toggle source
# File lib/tapioca/gemfile.rb, line 45 def require_bundle T.unsafe(runtime).require(*groups) end
Private Instance Methods
dir()
click to toggle source
# File lib/tapioca/gemfile.rb, line 91 def dir File.expand_path(gemfile.path + "/..") end
groups()
click to toggle source
# File lib/tapioca/gemfile.rb, line 86 def groups definition.groups end
load_dependencies()
click to toggle source
# File lib/tapioca/gemfile.rb, line 55 def load_dependencies materialized_dependencies, missing_specs = materialize_deps dependencies = materialized_dependencies .map { |spec| GemSpec.new(spec) } .reject { |gem| gem.ignore?(dir) } .uniq(&:rbi_file_name) .sort_by(&:rbi_file_name) [dependencies, missing_specs] end
materialize_deps()
click to toggle source
# File lib/tapioca/gemfile.rb, line 66 def materialize_deps deps = definition.locked_gems.dependencies.values missing_specs = T::Array[String].new materialized_dependencies = if definition.resolve.method(:materialize).arity == 1 # Support bundler >= v2.2.25 md = definition.resolve.materialize(deps) missing_spec_names = md.missing_specs.map(&:name) missing_specs = T.cast(md.missing_specs.map { |spec| "#{spec.name} (#{spec.version})" }, T::Array[String]) md.to_a.reject { |spec| missing_spec_names.include?(spec.name) } else definition.resolve.materialize(deps, missing_specs) end [materialized_dependencies, missing_specs] end
runtime()
click to toggle source
# File lib/tapioca/gemfile.rb, line 81 def runtime Bundler::Runtime.new(File.dirname(gemfile.path), definition) end