# Using Ruby's standard libraries in Silverlight

**URL:** <https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601>\
**Category:** IronRuby\
**Created:** [March 23, 2010, 8:54am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601 "2010-03-23T08:54:30Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 23, 2010, 8:54am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/1 "2010-03-23T08:54:30Z")

</div>

Hey guys,

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?

Thanks,  
Shay.

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 23, 2010, 9:23am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/2 "2010-03-23T09:23:11Z")

</div>

I’d the contents of the lib folder in a zip file

## and then use gestalt to download the zip. from then on they are available

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 23, 2010, 9:29am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/3 "2010-03-23T09:29:03Z")

</div>

That’s a good idea but it enforces the user to use Gestalt.

Which brings up another question - are we willing to “standardize”  
Gestalt  
by making it the best practice for using DLR languages in Silverlight?

* * *

Shay F. | Author of IronRuby Unleashed  
Blog: [http://IronShay.com](http://IronShay.com) | Twitter: [http://twitter.com/ironshay](http://twitter.com/ironshay)

On Tue, Mar 23, 2010 at 10:18 AM, Ivan Porto C. \<

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 23, 2010, 3:49pm UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/4 "2010-03-23T15:49:31Z")

</div>

OK I zipped the libs folder and added it to the page as .  
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:   
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?

* * *

Shay F. | Author of IronRuby Unleashed  
Blog: [http://IronShay.com](http://IronShay.com) | Twitter: [http://twitter.com/ironshay](http://twitter.com/ironshay)

On Tue, Mar 23, 2010 at 11:50 AM, Ivan Porto C. \<

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 23, 2010, 4:01pm UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/5 "2010-03-23T16:01:14Z")

</div>

## for assemblies you need to add an appmanifest I think

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 24, 2010, 8:19am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/6 "2010-03-24T08:19:53Z")

</div>

It doesn’t work for Ruby files as well as assemblies (which are placed  
within a ZIP file)… ☹

* * *

Shay F. | Author of IronRuby Unleashed  
Blog: [http://IronShay.com](http://IronShay.com) | Twitter: [http://twitter.com/ironshay](http://twitter.com/ironshay)

On Tue, Mar 23, 2010 at 5:00 PM, Ivan Porto C. \<

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 23, 2010, 11:00am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/7 "2010-03-23T11:00:22Z")

</div>

## I thought that already happened (dlr-slvx requirement etc)

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 24, 2010, 8:53am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/8 "2010-03-24T08:53:49Z")

</div>

## if you put a app\myfile.rb in the zip file you should be able to do require ‘app/myfile’

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [April 1, 2010, 6:41am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/9 "2010-04-01T06:41:27Z")

</div>

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](http://ironpython.net/browser/docs.html#zip-files). Basically you must  
have a script-tag like this: . Then you can reference the “lib” directory in  
your scripts, including adding it to the path: .

You can also just list out each Ruby file used:

# foo.rb

require ‘bar’

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.

> 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](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](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/](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](http://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](http://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

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [May 3, 2010, 5:23am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/10 "2010-05-03T05:23:38Z")

</div>

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 S. \<

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [March 25, 2010, 2:44pm UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/11 "2010-03-25T14:44:59Z")

</div>

It doesn’t work for me.

* * *

Shay F. | Author of IronRuby Unleashed  
Blog: [http://IronShay.com](http://IronShay.com) | Twitter: [http://twitter.com/ironshay](http://twitter.com/ironshay)

On Wed, Mar 24, 2010 at 9:50 AM, Ivan Porto C. \<

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [May 3, 2010, 8:01pm UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/12 "2010-05-03T20:01:41Z")

</div>

When using IronRuby in a Silverlight app where the main language is C#  
or VB, then you wouldn’t be using Chiron at all. You’d add the script  
files to your Silverlight project, and use the DLR hosting API to run  
them.

You could still use script-tags in this scenario as well; you’d need to  
look at the source for  
Microsoft.Scripting.Silverlight.DynamicApplication and call into its  
initialization logic from your app.

From: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Miguel Madero  
Sent: Sunday, May 02, 2010 8:18 PM  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Ironruby-core] Using Ruby’s standard libraries in  
Silverlight

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 S.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
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](http://ironpython.net/browser/docs.html#zip-files). Basically you must  
have a script-tag like this: . Then you can reference the “lib” directory in  
your scripts, including adding it to the path: .

You can also just list out each Ruby file used:

# foo.rb

require ‘bar’

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.

> 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](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](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/](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](http://visitmix.com/labs)[http://visitmix.com/labs](http://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](http://gestalt.codeplex.com)[http://gestalt.codeplex.com/](http://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

---

<div class="post-metadata">

**Author:** ![shayfriedman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shayfriedman](https://www.ruby-forum.com/u/shayfriedman)\
**Post date:** [May 5, 2010, 2:12am UTC](https://www.ruby-forum.com/t/using-rubys-standard-libraries-in-silverlight/185601/13 "2010-05-05T02:12:04Z")

</div>

Jimmy,

I was thinking more of an scenario where one of the teams in a project  
do  
one of the modules in IronRuby that would be downloaded on demand.

I guess one option would be for them to create a C# project and package  
their IR code in there. That project could also have the hosting and  
bootstrapping logic to hooked that module into the rest of the app.  
That’s  
certainly the simplest way. I was thinking to use Chiron to download the  
XAP  
and let a “ModuleLoader” worry about how hosting it. Now that I  
mentioned it  
I guess we could do something similar with Gestalt.

I will play a bit with both options on the weekend.

Miguel  
On Tue, May 4, 2010 at 3:59 AM, Jimmy S. \<
