I'm toying around with the idea of a simple in-browser "coding environment"
for IronRuby, think JSFiddle but for DLR languages. I'm fairly new to
IronRuby, but have lots of Silverlight experience. I have gotten the basics
up and running, but have ran into a couple issues.
My initial idea was to use the virtual file system the IronPython
Silverlight Host creates when it downloads files included using <script>
tags. However, turns out this virtual file system is read-only, so I cannot
write new Ruby files after the application is loaded.
My second idea was to simply use the DynamicEngine and simply execute the
code. The code I've written looks something like this:
def run_tests
code = window.eval("codeEditor.getCode()").to_s
test = window.eval("testEditor.getCode()").to_s
puts code
begin
dyneng = DynamicEngine.new
engine = dyneng.runtime.get_engine("ruby")
scope = dyneng.create_scope
errorFormatter = ErrorFormatter::Sink.new
resultCode =
engine.create_script_source_from_string(code).compile(errorFormatter).execute(scope)
resultTest =
engine.create_script_source_from_string(test).compile(errorFormatter).execute(scope)
puts resultCode
puts resultTest
rescue => ex
puts ex.to_s
end
end
It basically gets two pieces of Ruby code, then creates a new engine,
creates script source, compiles it, and then executes it. If I do this with
valid Ruby code everything works as expected. However, if I try to execute
invalid code I was expecting my error handler to execute. But this does not
happen. All I get is an error in the FireBug console saying:
"Error calling method on NPObject!"
So does anyone have suggestions on how to handle errors when executing the
code dynamically in the browser. Secondly, does anyone have suggestions for
alternative approaches to implementing this - i.e. make the virtual file
system writable (write to isolated storage perhaps?).
Best regards,
Jonas Follesø
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core