Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.
This repository was archived by the owner on Feb 7, 2024. It is now read-only.

parse': undefined method gsub' for nil:NilClass (NoMethodError) #10

Description

@threepistons
  • Given: ruby 2.5.5p157 and puppetfile-resolver-0.2.0.
  • When I: run the following Ruby script called puppetfile-resolver against Puppetfile in the same directory.
#!/usr/bin/ruby

puppetfile_path = 'Puppetfile'

# Parse the Puppetfile into an object model
content = File.open(puppetfile_path, 'rb') { |f| f.read }
require 'puppetfile-resolver'
puppetfile = ::PuppetfileResolver::Puppetfile::Parser::R10KEval.parse(content)

# Make sure the Puppetfile is valid
unless puppetfile.valid?
  puts 'Puppetfile is not valid'
  puppetfile.validation_errors.each { |err| puts err }
  exit 1
end

# Create the resolver
# - Use the document we just parsed (puppetfile)
# - Don't restrict by Puppet version (nil)
resolver = PuppetfileResolver::Resolver.new(puppetfile, nil)

# Configure the resolver
cache                 = nil  # Use the default inmemory cache
ui                    = nil  # Don't output any information
module_paths          = []   # List of paths to search for modules on the local filesystem
allow_missing_modules = true # Allow missing dependencies to be resolved
opts = { cache: cache, ui: ui, module_paths: module_paths, allow_missing_modules: allow_missing_modules }

# Resolve
result = resolver.resolve(opts)

# Output resolution validation errors
result.validation_errors.each { |err| puts "Resolution Validation Error: #{err}\n"}
  • I get:
-> % ./puppetfile-resolver.rb  
NOTE: Gem::Specification#rubyforge_project= is deprecated with no replacement. It will be removed on or after 2019-12-01.
Gem::Specification#rubyforge_project= called from /usr/share/rubygems-integration/all/specifications/erubis-2.7.0.gemspec:16.
Traceback (most recent call last):
        23: from ./puppetfile-resolver.rb:30:in `<main>'
        22: from /home/threepistons/.gem/ruby/2.5.0/gems/puppetfile-resolver-0.2.0/lib/puppetfile-resolver/resolver.rb:36:in `resolve'
        21: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolver.rb:43:in `resolve'
        20: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:182:in `resolve'
        19: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:254:in `process_topmost_state'
        18: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:673:in `attempt_to_activate'
        17: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:702:in `attempt_to_filter_existing_spec'
        16: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:305:in `unwind_for_conflict'
        15: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:335:in `build_details_for_unwind'
        14: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:541:in `binding_requirements_for_conflict'
        13: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:566:in `binding_requirement_in_set?'
        12: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:566:in `any?'
        11: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:567:in `block in binding_requirement_in_set?'
        10: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:486:in `possibility_satisfies_requirements?'
         9: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:486:in `all?'
         8: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:486:in `each'
         7: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:486:in `block in possibility_satisfies_requirements?'
         6: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/delegates/specification_provider.rb:24:in `requirement_satisfied_by?'
         5: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/delegates/specification_provider.rb:70:in `with_no_such_dependency_error_handling'
         4: from /home/threepistons/.gem/ruby/2.5.0/gems/molinillo-0.6.6/lib/molinillo/delegates/specification_provider.rb:25:in `block in requirement_satisfied_by?'
         3: from /home/threepistons/.gem/ruby/2.5.0/gems/puppetfile-resolver-0.2.0/lib/puppetfile-resolver/resolution_provider.rb:94:in `requirement_satisfied_by?'
         2: from /home/threepistons/.gem/ruby/2.5.0/gems/puppetfile-resolver-0.2.0/lib/puppetfile-resolver/models/module_dependency.rb:43:in `satisified_by?'
         1: from /home/threepistons/.gem/ruby/2.5.0/gems/puppetfile-resolver-0.2.0/lib/puppetfile-resolver/models/module_dependency.rb:51:in `semantic_requirement'
/home/threepistons/.gem/ruby/2.5.0/gems/semantic_puppet-1.0.2/lib/semantic_puppet/version_range.rb:66:in `parse': undefined method `gsub' for nil:NilClass (NoMethodError)
  • I expected: a report about the state of my Puppetfile.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions