Method for turning strings into code

Hi all,

What is the Ruby technique for turning strings into executable code?

SteveT

Steve L.

[email protected]

eval

eval(“3+3”)
6

jf

Steve L. wrote:

Hi all,

What is the Ruby technique for turning strings into executable code?

There’s eval:

eval( ‘class Foo;def x; puts “x”; end;end’ )

Foo.new.x

And its variants (instance_eval, class_eval)

James

http://www.ruby-doc.org - Ruby Help & Documentation
Ruby Code & Style - Ruby Code & Style: Writers wanted
http://www.rubystuff.com - The Ruby Store for Ruby Stuff
http://www.jamesbritt.com - Playing with Better Toys
http://www.30secondrule.com - Building Better Tools

On Friday 30 December 2005 10:51 am, James B. wrote:

And its variants (instance_eval, class_eval)

James

Thanks James, and you to Johannes.

SteveT

Steve L.

[email protected]

Steve L. wrote:

Hi all,

What is the Ruby technique for turning strings into executable code?

Via one of the various forms of eval. However, using eval on arbitrary
strings is insecure, so generally it’s considered bad form. There’s even
a slogan: “Eval is evil.” The preferred technique is to build a solution
using Ruby’s dynamic programming facilities.

On Saturday 31 December 2005 06:07 am, Timothy H. wrote:

Steve L. wrote:

Hi all,

What is the Ruby technique for turning strings into executable code?

Via one of the various forms of eval. However, using eval on arbitrary
strings is insecure, so generally it’s considered bad form. There’s even
a slogan: “Eval is evil.” The preferred technique is to build a solution
using Ruby’s dynamic programming facilities.

Where do I find out more about Ruby’s dynamic programming facilities?

SteveT

Steve L.

[email protected]

What is the Ruby technique for turning strings into
executable code?

Via one of the various forms of eval.

Uh, well, that’s not the right answer. Eval evaluates
(=executes) a string. It doesn’t turn a string into executable
code (=compile).

gegroet,
Erik V. - http://www.erikveen.dds.nl/

Erik V. [email protected] writes:

What is the Ruby technique for turning strings into
executable code?

Via one of the various forms of eval.

Uh, well, that’s not the right answer. Eval evaluates
(=executes) a string. It doesn’t turn a string into executable
code (=compile).

Wrap it in a lambda, then.

Steve L. wrote:

Where do I find out more about Ruby’s dynamic programming facilities?

The Pickaxe would be a good start. Also Hal’s The Ruby Way.

On Saturday 31 December 2005 06:07 am, Erik V. wrote:

What is the Ruby technique for turning strings into
executable code?

Via one of the various forms of eval.

Uh, well, that’s not the right answer. Eval evaluates
(=executes) a string. It doesn’t turn a string into executable
code (=compile).

When I first posed the question, what I really meant was turn it into
Ruby
code (like eval does). Sorry for the confusion.

While we’re on the subject, do you know of a way to turn a Ruby program
into
an executable binary?

Thanks

SteveT

Steve L.

[email protected]

While we’re on the subject, do you know of a way to turn a
Ruby program into an executable binary?

If you want to distribute your Ruby application as a single
executable, including the Ruby interpreter and libraries, use
RubyScript2Exe:

http://www.erikveen.dds.nl/rubyscript2exe/index.html

(Yes, it’s one of my own projects… But you asked me…)

gegroet,
Erik V. - http://www.erikveen.dds.nl/

Christian N. wrote:

code (=compile).

Wrap it in a lambda, then.

If I have a string in a file, would we say it was executable code? Or
does loading it into the Ruby interpreter make it executable code?

What are the differences among

require ‘my-file-of-strings’

load ‘my-file-of-strings’

and

eval( IO.read( ‘my-file-of-strings’ ) )

James

http://www.ruby-doc.org - Ruby Help & Documentation
Ruby Code & Style - Ruby Code & Style: Writers wanted
http://www.rubystuff.com - The Ruby Store for Ruby Stuff
http://www.jamesbritt.com - Playing with Better Toys
http://www.30secondrule.com - Building Better Tools