I think the Chiron model is better for different scenarios. You mentioned OOB, but also if IronRuby (or other Dynamic Languages) are used as part of a statically compiled app where XAPs and assemblies are distributed in the typical SL way. Not sure how we would do it with Gestal as I've seen that it relies on the Script tags. Is there a way of doing that programmatically?
On Thu, Apr 1, 2010 at 2:40 PM, Jimmy Schementi < jimmy.scheme...@microsoft.com> wrote: > Wow, a lot of questions to answer here; let me know if I missed one … > > > > > What is the recommendation for using Ruby's standard libraries in > Silverlight applications? > > > Should the lib be copied to the project dir? should a reference be added > to the manifest? some other technique? > > > > Depends on whether your using the Chiron to generate a XAP file, or your > using dlr.js and embedding Ruby code in the HTML page with script-tags. > > > > Chiron to generate the XAP: > > Just copy the necessary Ruby stdlib files into your XAP file directory. If > you just want to reference an entire directory, you can use the “-path” > Chiron.exe option. > > > > Script-tags: > > See the IronPython docs on this: > http://ironpython.net/browser/docs.html#zip-files. Basically you must have a > script-tag like this: <script type="application/x-zip-compressed" > src="lib.zip"></script>. Then you can reference the “lib” directory in your > scripts, including adding it to the path: <script type="text/ruby">$: << > "lib"; require 'erb';</script>. > > > > You can also just list out each Ruby file used: > > > > # foo.rb > > require 'bar' > > > > <!-- index.html --> > > <script type="text/ruby" src="foo.rb" defer="true"></script> > > <script type="text/ruby" src="bar.rb" defer="true"></script> > > <script type="text/ruby"> > > require 'foo' > > </script> > > > > I hope this shows that script-tags just download the script, and add it to > the “virtual file-system” that the DLR-languages see. The “defer” attribute > causes the script to not be run; it will be run when a script requires it. > > > > > I zipped the libs folder and added it to the page as <script > type="application/zip" src="lib.zip"></script>. > > > When I try to require the assemblies, the files are not found. > > > > > > I tried to make the case simpler and zipped a simple rb file to a zip > and included it in the page as well: > > > <script type="application/zip" src="test.zip"></script> > > > I tried: > > > require "TestClass.rb" > > > require "TestClass" > > > require 'test.zip/TestClass.rb' > > > require 'test.zip/TestClass' > > > > > > None of these worked. > > > > > > By the way, I see that Chiron loads the zip files... > > > > > > What am I doing wrong? > > > > Change the mime-type to application/x-zip-compressed and try requiring > "test/TestClass" … that will work. We should also allow application/zip as > the mime-type: > http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=26676. Keep > in mind that Silverlight can only read archived files created with a deflate > ZIP algorithm; but using Chiron to create the zip file will ensure it works > … something like “Chiron.exe /d:lib /x:lib.zip”. > > > > > for assemblies you need to add an appmanifest I think > > > > Actually, all the AppManifest.xaml does it load the assemblies for you; you > can use “require” or “load_assembly” to accomplish the same thing, so I > advise against touching the AppManifest.xaml, unless your XAML has > dependencies on an assembly. > > > > Keep in mind there is no way to have an “assembly script-tag” … you must > put the assembly in a ZIP file. > > > > > if you put a app\myfile.rb in the zip file, you should be able to do > require 'app/myfile' > > > Close … you have to use the file filename in the require call, or add the > zip file name to the path (see example above). Today this only works when > you use the zip file name without it’s extension, but that’s a bug IMO: > http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=26677. > > > Which brings up another question - are we willing to "standardize" > Gestalt by making it the best practice for using DLR languages in > Silverlight? > > Well on its way; the http://ironpython.net/browser/ page only has > documentation for the “Gestalt”-way, though the Chiron/XAP model will also > be documented. Fun fact: while the first version of Gestalt (0.5) was made > completely independently by the visitmix.com/labs team, the 1.0 release > was completely rewritten and merged into > Microsoft.Scripting.Silverlight.dll. In fact, the current source code on > gestalt.codeplex.com is only the code from 0.5; the latest source code for > Microsoft.Scripting.Silverlight is in IronRuby’s GitHub and IronPython’s > CodePlex source repos. > > Keep in mind the previous Chiron/XAP file model isn’t going away; Gestalt > takes [too-must] advantage of how Silverlight expects apps to be structured, > so there are some limitations to it. The glaring limitation is you can’t run > gestalt apps out-of-browser; HTML doesn’t work there … there might be a way > around this by using Silverlight’s ability to host HTML content IN a > Silverlight control, but that hasn’t been tested yet. So the Chiron/XAP > model will continue to be supported, but I don’t advise using it unless you > need to run out-of-browser. You can also combine the two; the IronRuby > tutorial uses the Chiron/XAP model for the app, but the Gestalt-way to > enable tests running in the browser. > > ~Jimmy > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > > -- Miguel A. Madero Reyes www.miguelmadero.com (blog) m...@miguelmadero.com
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core