Hi,…
I’m trying to execute the following lines:
ScriptContext sct = jruby.getContext();
jruby.eval(“sheet = Spreadsheet.new”, sct);
jruby.eval(“sheet.cells.a1 = ‘Welcome’”, sct);
The first two lines are executed correctly, but the last one gives the
following error:
undefined local variable or method `sheet’ for main:Object
it indicates that sheet is undefined although it’s defined in line 2.
When I try to execute both commands in a single statement like:
jruby.eval(“sheet = Spreadsheet.new \n sheet.cells.a1 = ‘Welcome’”,
sct);
The statement is executed correctly.
Please help
Regards,…
Ahmed
My guess is that the context fails to keep track of local variables. Try
an
experiment with something simpler:
ScriptContext sct = jruby.getContext
jruby.eval(“name = ‘Ahmed’”)
jruby.eval(‘puts “My name is #{name}”’)
If things explode, my theory is correct.
James
PS: Semi-colons aren’t required, nor are empty parenthesis. It’s
considered
out of the Ruby norm to use them. As such, I’d avoid them in your
coding.
See http://www.pathf.com/blogs/ruby-and-rails-style-guide/
James H. wrote:
My guess is that the context fails to keep track of local variables. Try
an
experiment with something simpler:
ScriptContext sct = jruby.getContext
jruby.eval(“name = ‘Ahmed’”)
jruby.eval(‘puts “My name is #{name}”’)
If things explode, my theory is correct.
James
PS: Semi-colons aren’t required, nor are empty parenthesis. It’s
considered
out of the Ruby norm to use them. As such, I’d avoid them in your
coding.
See http://www.pathf.com/blogs/ruby-and-rails-style-guide/
Thanks for response. the code you sent is missing using sct, but I
updated it:
ScriptContext sct = jruby.getContext();
jruby.eval(“name = ‘Ahmed’”, sct);
jruby.eval(“puts "My name is #{name}"”, sct);
also not working, the same error: undefined local variable or method
`name’ for main:Object
PS: Semi-colon is required by java code
Ahmed A. wrote:
James H. wrote:
My guess is that the context fails to keep track of local variables. Try
an
experiment with something simpler:
ScriptContext sct = jruby.getContext
jruby.eval(“name = ‘Ahmed’”)
jruby.eval(‘puts “My name is #{name}”’)
If things explode, my theory is correct.
James
PS: Semi-colons aren’t required, nor are empty parenthesis. It’s
considered
out of the Ruby norm to use them. As such, I’d avoid them in your
coding.
See http://www.pathf.com/blogs/ruby-and-rails-style-guide/
Thanks for response. the code you sent is missing using sct, but I
updated it:
ScriptContext sct = jruby.getContext();
jruby.eval(“name = ‘Ahmed’”, sct);
jruby.eval(“puts "My name is #{name}"”, sct);
also not working, the same error: undefined local variable or method
`name’ for main:Object
PS: Semi-colon is required by java code
I found a solution for the problem, it’s a discussed bug:
Take a look: markmail.org/message/ze4vwkscc6w3cpc7
and http://jira.codehaus.org/browse/JRUBY-371
A temporary solution is to add $ before variable name so that it’s seen
in the same context with successive eval commands