I am trying to understand how to work with a single quote within an eval
such as:
assigned_string = ‘’
name = “Addy’s”
eval(“assigned_string=’#{name}’”)
SyntaxError: (eval):1: syntax error, unexpected tIDENTIFIER, expecting
$end
assigned_string=‘Addy’s’
^
Ok, this error makes sense, but when I try to escape the single quote I
also
get an error:
I’d highly recommend that you not do this. Using send is not only
more efficient, it’s far safer - for instance, what happens if
somebody sends your code a value like
‘; rm -rf *;’
This will be syntactically valid, and will make quite a mess…
This will be syntactically valid, and will make quite a mess…
Thanks all… yeah, I will use send, I forgot about that and you are
right,
it gets yucky very fast when things like single quotes and who knows
what
else get added.
Also, on this answer: eval(“assigned_string=#{name}”) , no it does not
work,
this is what I had originally but if you output the internal string it
looks
like “assigned_string=david” which of course errors out unless what is
in
‘name’ is a non string type.
On Sun, Apr 10, 2011 at 10:43 AM, Frederick C. < [email protected]> wrote:
Thanks all… yeah, I will use send, I forgot about that and you are
right,
it gets yucky very fast when things like single quotes and who knows what
else get added.
For what it’s worth I suspect that the problem was that you needed to
escape the \ in your substitution ( ie “\’”)
I just tried this and thought for sure you were right. But no! So let me
step back, really I fail to understand why if I have a param[key] value
of
“Addy’s” that Ruby can not handle it on its own, and much less escaped
by
("’" or “\’”):
class BackgroundProcessStatus < ActiveRecord::Base
def self.update(params)
background_process_status = BackgroundProcessStatus.first ||
BackgroundProcessStatus.new
params.keys.each do |key|
background_process_status.send("#{key.to_s}=", params[key])
end
end
end
This will be syntactically valid, and will make quite a mess…
Thanks all… yeah, I will use send, I forgot about that and you are right,
it gets yucky very fast when things like single quotes and who knows what
else get added.
For what it’s worth I suspect that the problem was that you needed to
escape the \ in your substitution ( ie “\’”)
For what it’s worth I suspect that the problem was that you needed to
escape the \ in your substitution ( ie “\’”)
I just tried this and thought for sure you were right. But no! So let me
step back, really I fail to understand why if I have a param[key] value of
“Addy’s” that Ruby can not handle it on its own, and much less escaped by
("’" or “\’”):
I found the problem — seems that the delayed_job process must be
restarted
if code is updated. I had updated the code but the old code was
seemingly
being executed.