Project

General

Profile

Actions

Bug #20399

open

Ripper doesn't respect implicit -x

Added by kddnewton (Kevin Newton) 30 days ago. Updated 29 days 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) 29 days 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) 29 days 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