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 Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core