diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2020-02-01 19:25:27 +1300 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2020-02-01 19:25:27 +1300 |
commit | 5a1783244e642f733a35ab35dcd740d69dbfe4d2 (patch) | |
tree | 0e160e486c3743261b0bcc23a9e240857c3607ee | |
parent | f2d2df4016a906beec755b63b4edfcc07b58ee05 (diff) | |
download | rack-rework-builder.tar.gz |
Prefer `instance_eval` rather than `eval`.rework-builder
-rw-r--r-- | lib/rack/builder.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/rack/builder.rb b/lib/rack/builder.rb index c9c45048..e7ba5a0f 100644 --- a/lib/rack/builder.rb +++ b/lib/rack/builder.rb @@ -109,8 +109,11 @@ module Rack # Evaluate the given +builder_script+ string in the context of # a Rack::Builder block, returning a Rack application. def self.new_from_string(builder_script, file = "(rackup)") - eval "Rack::Builder.new {\n" + builder_script + "\n}.to_app", - TOPLEVEL_BINDING, file, 0 + builder = self.new + + builder.instance_eval(builder_script, file) + + return builder.to_app end # Initialize a new Rack::Builder instance. +default_app+ specifies the |