named scope lambda string substitution problem

J

jdwy

Sorry for a cross post with rails, but I think this may be more of a
ruby question (or rails's impl?). I have a complex named scope like
the following.

named_scope :foo, lambda {|foo, bar|
foo.each do |d|
#foo = "this line doesn't work #{s}"
baz = "something like this works " + s
end

bar.each do |b|
end
{
:conditions => {'baz' => 1}

}}

It does some pre-processing to calculate the :conditions hash. The
weird bit is that I get a bizarre syntax error when I try to use
double quoted strings with substitutions. If I use a syntax such as
"A"+str+"B" it's ok, but "A#{str}B" is a syntax error. Any thoughts?

I've tried to replicate it in pure ruby lambda functions but wasn't
able to, leading me to think it may be related to the named scope.

-Jeff
 
B

Brian Candler

jdwy said:
Sorry for a cross post with rails, but I think this may be more of a
ruby question (or rails's impl?). I have a complex named scope like
the following.

named_scope :foo, lambda {|foo, bar|
foo.each do |d|
#foo = "this line doesn't work #{s}"
baz = "something like this works " + s
end

bar.each do |b|
end
{
:conditions => {'baz' => 1}

}}

It does some pre-processing to calculate the :conditions hash. The
weird bit is that I get a bizarre syntax error when I try to use
double quoted strings with substitutions. If I use a syntax such as
"A"+str+"B" it's ok, but "A#{str}B" is a syntax error. Any thoughts?

It's clearly not a syntax error. Post the *exact* exception report you
see, together with the exact code which causes it. If you're going to
show just an excerpt, then at least show the line numbers on the excerpt
so these can be tied up to the exception.
 
J

jdwy

Hey Brian,
This is the syntax error I get. The code I posted is enough to trigger
it in a simple class. I modified and added line numbers below.


[user@silvia proj-git]$ ruby foo.rb
foo.rb:8: syntax error, unexpected kDO_BLOCK, expecting '}'
bar.each do |b|
^


1 class Foo
2 named_scope :foo, lambda {|foo, bar|
3 foo.each do |d|
4 foo = "this line doesn't work #{s}"
5 baz = "something like this works " + s
6 end
7
8 bar.each do |b|
9 end
10 {
11 :conditions => {'baz' => 1}
12
13 }}
14 end
 
M

Mikael Høilund

foo :bar {} # doesn't work.

use doend or parentheses around the arguments.


--
instance_variable_set(%@\@%sample@%%@[email protected], Class.new(&proc{def
self.net;$;,
$/='','/';%;.fqn-
cmtkhng;end}));Kernel.send:)"define_method",:method_missing){|
n,$_|$_<<"?kd!jhl";n=split.map{|q|q.succ}*'';puts n.reverse.chomp.tr(*
%w{" a})}
(e-mail address removed)
 
M

Mikael Høilund

foo :bar {} # doesn't work.

use doend or parentheses around the arguments.


-- instance_variable_set(%@\@%sample@%%@[email protected], Class.new(&proc{def
self.net;$;,
$/='','/';%;.fqn-
cmtkhng;end}));Kernel.send:)"define_method",:method_missing){|
n,$_|$_<<"?kd!jhl";n=split.map{|q|q.succ}*'';puts n.reverse.chomp.tr(*
%w{" a})}
(e-mail address removed)
 
J

jdwy

ah! right you are. that solves the problem. That does seem like a
weird ruby oddity. I wonder if there's a reason for it?
Thanks,
-Jeff
 
M

Mikael Høilund

ah! right you are. that solves the problem. That does seem like a
weird ruby oddity. I wonder if there's a reason for it?
Thanks,
-Jeff

Sorry about the double post earlier (and lack of special characters), =20=

Mail.app didn't want as I.

The reason it doesn't work is that the parser thinks the {=85} means a =20=

hash instead of a block.

--=20
a,b=3D%Q=3DZ,O^NPO\r4_PV\\PI\x15^-\x0\v=3D,email=3D%\%%%c\%115%%# Mikael =
=20
Hoilund, CTO
okay=3D%#;hmm=3D(0...a.size).map{|i|((a-email+2)%128).# of Meta.io =
=20
ApS from
chr}.join;!email.gsub!'o',"%c%c"%[3+?0.<<(2),?G.~@];aha=3D############# =20=

Denmark
hmm.scan(/#{'(.)'*5}/);!puts(email[1..-12]+aha.shift.zip(*aha).join)# =20=

Ruby <3
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top