Actions
Feature #10395
closederb: allow variables to be set from the command line
Description
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 %>
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$
Updated by nobu (Nobuyoshi Nakada) about 10 years ago
- Description updated (diff)
- Status changed from Open to Assigned
- Assignee set to seki (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
Updated by josb (Jos Backus) about 10 years ago
Thanks Nobu, that looks like a much better implementation. Appreciate your help.
Updated by nobu (Nobuyoshi Nakada) about 10 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Applied in changeset ruby-trunk:r48786.
erb: set variables from the command line
- bin/erb (ARGV.switch, ERB::Main#run): allow variables to be set
from the command line. [ruby-core:65772] [Feature #10395]
Updated by hsbt (Hiroshi SHIBATA) almost 3 years ago
- Project changed from 14 to Ruby master
- Target version deleted (
Ruby 2.2.0)
Actions
Like0
Like0Like0Like0Like0