From: Chad Perrin Date: 2011-12-18T15:59:41+09:00 Subject: Re: Single quoted string to become double quoted - is it possible? On Sun, Dec 18, 2011 at 06:29:11AM +0900, ANDREW BIZYAEV (GMAIL) wrote: > > Then I load this yaml into @options variable and define @template: > @template = @options[:event][:template] #=> "bla bla #{name} bla bla" So the effect is the same as using single quotes. And it seems I cannot change the way Ruby reads yaml strings. > Later in my program I want to use the @template to generate string with real value of name. > I use Steve's approach and it works fine: > a = eval "/"#{template}/"" # => "bla bla Andrew bla bla" > > > > > If you just want to avoid using > > double quotes (perhaps because you want double quotes within the string), > > you could use something like this instead: > > > > name = 'Andrew' > > puts %Q{blah blah #{name} blah blah} > > > > If you want to be able to reuse the string, you could define a method: > > > > def a(name_input) > > %Q{blah blah #{name_input} blah blah} > > end > > > > name = 'Andrew' > > > > puts a(name) > > > Thank you for advice. You see I have some other case. Yeah, I see that now. I think, for that use case, I'd probably do some parse-and-replace on any strings loaded from the YAML, rather than eval every string from YAML -- it's safer. Any time you think eval is the right answer to something, it pays to think three or four more times before you decide you're sure, *especially* if there's any possibility of arbitrary data getting into what you're going to eval.