Project

General

Profile

Feature #10395

erb: allow variables to be set from the command line

Added by josb (Jos Backus) about 5 years ago. Updated almost 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
[ruby-core:65772]

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$

Associated revisions

Revision 9e52416c
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 48786
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

Revision 48786
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

Revision 48786
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

Revision 48786
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

Revision 48786
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

Revision 48786
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

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]

Revision 8326a747
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48788 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 48788
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

Revision 48788
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

Revision 48788
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

Revision 48788
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

Revision 48788
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

Revision 48788
Added by nobu (Nobuyoshi Nakada) almost 5 years ago

erb: suppress warnings

  • bin/erb (ERB::Main#run): get rid of shadowing outer local variables. [ruby-core:65772] [Feature #10395]

History

Updated by nobu (Nobuyoshi Nakada) about 5 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 5 years ago

Thanks Nobu, that looks like a much better implementation. Appreciate your help.

Updated by nobu (Nobuyoshi Nakada) almost 5 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]

Also available in: Atom PDF