Project

General

Profile

Actions

Bug #20399

open

Ripper doesn't respect implicit -x

Added by kddnewton (Kevin Newton) 2 months ago. Updated 2 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) 2 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) 2 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