ruby-core

Mailing list archive

[#65451] [ruby-trunk - Feature #10333] [PATCH 3/1] optimize: "yoda literal" == string — ko1@...

Issue #10333 has been updated by Koichi Sasada.

9 messages 2014/10/07

[ruby-core:65773] [CommonRuby - Feature #10395] [Assigned] erb: allow variables to be set from the command line

From: nobu@...
Date: 2014-10-17 06:40:21 UTC
List: ruby-core #65773
Issue #10395 has been updated by Nobuyoshi Nakada.

Description updated
Status changed from Open to Assigned
Assignee set to Masatoshi Seki
Target version set to Ruby 2.2.0

No new features for maintenance branches.
And your patch doesn't allow options after variables.

https://github.com/nobu/ruby/compare/Feature%2310395-erb-variables-from-commandline

----------------------------------------
Feature #10395: erb: allow variables to be set from the command line
https://bugs.ruby-lang.org/issues/10395#change-49509

* Author: Jos Backus
* Status: Assigned
* Priority: Normal
* Assignee: Masatoshi Seki
* Category: 
* Target version: Ruby 2.2.0
----------------------------------------
This would make erb more useful from the command line. Granted the use of Binding#eval is dangerous so one has to be careful. Newer versions of Ruby have Binding#local_variable_set which can be used instead but this works with Ruby 2.0.0.

~~~
jonagold:local jos$ cat /tmp/erb-template
This is <%= foo %>
And this is <%= bar %>
~~~
~~~diff
jonagold:local jos$ diff -u /usr/bin/erb /tmp/erb
--- /usr/bin/erb	2014-05-15 22:14:36.000000000 -0700
+++ /tmp/erb	2014-10-16 22:29:37.000000000 -0700
@@ -114,6 +114,13 @@
         exit 1
       end

+      vars = ARGV.take_while {|arg| arg[/^\w+=/]}
+      ARGV.slice!(0, vars.size)
+      vars.each do |var|
+        k, v = var.split('=', 2)
+        TOPLEVEL_BINDING.eval %Q(#{k} = "#{v}")
+      end
+
       $<.set_encoding(Encoding::ASCII_8BIT, nil)
       src = $<.read
       filename = $FILENAME
~~~
~~~
jonagold:local jos$ /tmp/erb foo=FOO bar=123 /tmp/erb-template
This is FOO
And this is 123
jonagold:local jos$
~~~



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next