Project

General

Profile

Actions

Bug #20399

open

Ripper doesn't respect implicit -x

Added by kddnewton (Kevin Newton) 10 months ago. Updated 10 months ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:117365]

Description

For the given script:

#!/bin/sh
# -*- ruby -*-
exec "${RUBY-ruby}" "-x" "$0" "$@" && [ ] if false
#!ruby
# This needs ruby 2.0, Subversion and Git.
# As a Ruby committer, run this in an SVN repository
# to commit a change.

require 'tempfile'
require 'net/http'

I would expect all of the various Ripper APIs (lex, sexp, sexp_raw, new.parse, etc.) to start parsing on line 4, because that's what the parser does. Instead, it starts parsing on line 1.

Updated by nobu (Nobuyoshi Nakada) 10 months ago ยท Edited

Shebang makes sense only in an executable script file.

$ echo $'#!/bin/sh\np :sh' | ruby
ruby: no Ruby script found in input (LoadError)
bash: exit 1

$ ruby -e $'#!/bin/sh\np :sh'
:sh

Updated by kddnewton (Kevin Newton) 10 months ago

I agree, but I still think Ripper should match the parser's behavior here. Otherwise you can't get the AST of those kinds of files.

Actions

Also available in: Atom PDF

Like0
Like0Like0