Exception: Bundler::Dsl::DSLError
- Inherits:
-
GemfileError
- Object
- StandardError
- BundlerError
- GemfileError
- Bundler::Dsl::DSLError
- Defined in:
- lib/bundler/dsl.rb
Instance Attribute Summary collapse
-
#backtrace ⇒ Exception
readonly
The backtrace of the exception raised by the evaluation of the dsl file.
-
#description ⇒ String
readonly
The description that should be presented to the user.
-
#dsl_path ⇒ String
readonly
The path of the dsl file that raised the exception.
Instance Method Summary collapse
-
#contents ⇒ String
The contents of the DSL that cause the exception to be raised.
-
#initialize(description, dsl_path, backtrace, contents = nil) ⇒ DSLError
constructor
A new instance of DSLError.
- #status_code ⇒ Object
-
#to_s ⇒ String
The message of the exception reports the content of podspec for the line that generated the original exception.
Methods inherited from BundlerError
Constructor Details
#initialize(description, dsl_path, backtrace, contents = nil) ⇒ DSLError
Returns a new instance of DSLError.
551 552 553 554 555 556 557 558 |
# File 'lib/bundler/dsl.rb', line 551 def initialize(description, dsl_path, backtrace, contents = nil) @status_code = $!.respond_to?(:status_code) && $!.status_code @description = description @dsl_path = dsl_path @backtrace = backtrace @contents = contents end |
Instance Attribute Details
#backtrace ⇒ Exception (readonly)
Returns the backtrace of the exception raised by the evaluation of the dsl file.
546 547 548 |
# File 'lib/bundler/dsl.rb', line 546 def backtrace @backtrace end |
#description ⇒ String (readonly)
Returns the description that should be presented to the user.
537 538 539 |
# File 'lib/bundler/dsl.rb', line 537 def description @description end |
#dsl_path ⇒ String (readonly)
Returns the path of the dsl file that raised the exception.
541 542 543 |
# File 'lib/bundler/dsl.rb', line 541 def dsl_path @dsl_path end |
Instance Method Details
#contents ⇒ String
Returns the contents of the DSL that cause the exception to be raised.
567 568 569 |
# File 'lib/bundler/dsl.rb', line 567 def contents @contents ||= dsl_path && File.exist?(dsl_path) && File.read(dsl_path) end |
#status_code ⇒ Object
560 561 562 |
# File 'lib/bundler/dsl.rb', line 560 def status_code @status_code || super end |
#to_s ⇒ String
The message of the exception reports the content of podspec for the line that generated the original exception.
589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 |
# File 'lib/bundler/dsl.rb', line 589 def to_s @to_s ||= begin trace_line, description = parse_line_number_from_description m = String.new("\n[!] ") m << description m << ". Bundler cannot continue.\n" return m unless backtrace && dsl_path && contents trace_line = backtrace.find {|l| l.include?(dsl_path) } || trace_line return m unless trace_line line_number = trace_line.split(":")[1].to_i - 1 return m unless line_number lines = contents.lines.to_a indent = " # " indicator = indent.tr("#", ">") first_line = line_number.zero? last_line = (line_number == (lines.count - 1)) m << "\n" m << "#{indent}from #{trace_line.gsub(/:in.*$/, "")}\n" m << "#{indent}-------------------------------------------\n" m << "#{indent}#{lines[line_number - 1]}" unless first_line m << "#{indicator}#{lines[line_number]}" m << "#{indent}#{lines[line_number + 1]}" unless last_line m << "\n" unless m.end_with?("\n") m << "#{indent}-------------------------------------------\n" end end |