<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>RubyDoes.NET</title>
	
	<link>http://rubydoes.net</link>
	<description>and we love it!</description>
	<lastBuildDate>Tue, 15 Dec 2009 12:04:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rubydoesnet" /><feedburner:info uri="rubydoesnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Ninject knows a new trick</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/DrDTmpkgkvE/</link>
		<comments>http://rubydoes.net/2009/03/14/ninject-knows-a-new-trick/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 00:35:07 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2009/03/14/ninject-knows-a-new-trick/</guid>
		<description><![CDATA[Earlier this week Nate already said that I was doing some work on Ninject, now I have it working :)
Everything I’m about to talk about is currently in the master tree of the ninject github repository.  
Getting IronRuby to play nice with Ninject was surprisingly easy :)]]></description>
			<content:encoded><![CDATA[<p>Earlier this week Nate <a href="http://kohari.org/2009/03/13/ninject-github-crazy-delicious/" target="_blank">already said</a> that I was doing some work on <a href="http://ninject.org" target="_blank">Ninject</a>, now I have it working :)</p>
<p>Everything I&#8217;m about to talk about is currently in the master tree of the <a href="http://github.com/enkari/ninject" target="_blank">ninject github</a> repository.  Getting <a href="http://ironruby.net" target="_blank">IronRuby</a> to play nice with <a href="http://ninject.org" target="_blank">Ninject</a> was surprisingly easy :),</p>
<p><span id="more-110"></span></p>
<p>There was only one place that required some kind of weird workaround and from that workaround I&#8217;m entirely sure that it will go away by the time .NET 4.0 will be here.  The DLR duplicates a number of delegates from .NET 4.0 but .NET 3.5 also defines them (i.e. System.Func&lt;T, TT&gt;) and then you get great exception messages like: System.Func is not of type System.Func. The solution is to not reference System.Core in your project. Except that Ninject expects the System.Core variant at some point and that was solved by aliasing the System.Core assembly and talking to the types in that assembly by their alias.</p>
<p>Anyway the juicy stuff :) How can you take advantage of Ninjects newly found friendship with <a href="http://ironruby.net" target="_blank">IronRuby</a>.</p>
<p><a href="http://ninject.org" target="_blank">Ninject</a> now has 2 flavors of Kernels. We have a StandardKernel that knows how to deal with the module configuration system that uses a fluent interface defined in C#.  And now we also have a DlrKernel that extends the StandardKernel with a RubyModuleLoader plugin. If you tell the DlrKernel to look inside a path for configuration files it will scan those folders for *.dll or *.rb files. Those files should contain the configuration for the ninject bindings.</p>
<p>So to create a Kernel that is ruby enabled you would use the following code:</p>
<pre class="code"><span style="color: #2b91af">IKernel </span>kernel = <span style="color: blue">new </span><span style="color: #2b91af">DlrKernel</span>();
kernel.AutoLoadModulesRecursively();

<span style="color: blue">var </span>samurai = kernel.Get&lt;<span style="color: #2b91af">IWarrior</span>&gt;();
System.<span style="color: #2b91af">Console</span>.WriteLine(samurai.Weapon.Name);</pre>
<p>The above snippet could then for example load a configuration file that has been defined like this:</p>
<pre class="code">require <span style="color: gray">File</span>.<span style="color: #8f20ff">dirname</span><span style="color: gray">(</span><span style="color: blue">__FILE__</span><span style="color: gray">) </span>+ <span style="color: #a31515">'/../Ninject.Tests.dll'
</span>include <span style="color: gray">Ninject</span>::<span style="color: gray">Tests</span>::<span style="color: gray">Fakes

</span>to_configure_ninject <span style="color: blue">do </span>|ninject|
  ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IWeapon</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">Sword
  </span>ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IWarrior</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">Samurai
</span><span style="color: blue">end</span></pre>
<p><a href="http://11011.net/software/vspaste"></a>The configuration above shows how most of a typical configuration would be defined by you the full configuration API at your disposal. All the options for the configuration can be specified in 2 ways. The first way is in a hash like syntax and the second way uses a more fluent syntax.</p>
<pre>to_configure_ninject do |ninject|
ninject.bind IServiceA, :to =&gt; ServiceA, :as =&gt; :singleton,
:meta =&gt; { :type =&gt; "superservice" },
:name =&gt; "aaaaa",
:with =&gt; {
:parameter =&gt; { :my_param =&gt; lambda { |context| "param_value" } },
:constructor_arguments =&gt; {:const_arg =&gt; 56 },
:property_values =&gt; {:property_name =&gt; 94 },
},
:on_activation =&gt; lambda { |obj| obj.do_some_work },
:on_deativated =&gt; lambda { |obj| obj.do_some_cleanup },
:when =&gt; lambda { |context| "a value" } or
:when =&gt; { :injected_into =&gt; ServiceB } or
:when =&gt; { :target_has =&gt; AnAttribute } or
:when =&gt; { :member_has =&gt; AnAttribute } or
:when =&gt; { :class_has =&gt; AnAttribute }
}
end</pre>
<p>Or</p>
<pre>to_configure_ninject do |ninject|
ninject.bind IServiceA, :to =&gt; ServiceA, :as =&gt; :singleton do
meta :type =&gt; "superservice"
name "aaaaa"
with :parameter =&gt; { :my_param =&gt; lambda { |context| "param_value" } }
with :constructor_arguments =&gt; { :const_arg =&gt; 56 }
with :property_values =&gt; { property_name =&gt; 94 }
on_activation do |obj|
obj.do_some_work
end
on_deativation { |obj| obj.do_some_cleanup }
condition do |context|
true
end or
condition :injected_into =&gt; SomeClass or ...
end
end</pre>
<p>Some of the nicer consequences of using Ruby as a configuration language is the syntax for open generics. The example below shows how to configure types with open generics.</p>
<pre class="code">require <span style="color: gray">File</span>.<span style="color: #8f20ff">dirname</span><span style="color: gray">(</span><span style="color: blue">__FILE__</span><span style="color: gray">) </span>+ <span style="color: #a31515">'/../Ninject.Tests.dll'
</span>include <span style="color: gray">Ninject</span>::<span style="color: gray">Tests</span>::<span style="color: gray">Fakes
</span>include <span style="color: gray">Ninject</span>::<span style="color: gray">Tests</span>::<span style="color: gray">Integration</span>::<span style="color: gray">StandardKernelTests

</span><span style="color: green"># IGeneric is a generic interface and GenericService is a generic type
# we don't have to specify any special notation for open generics

</span>to_configure_ninject <span style="color: blue">do </span>|ninject|
  ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IGeneric</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">GenericService, <span style="color: #c60000">:as </span>=&gt; <span style="color: #c60000">:transient </span>
  </span>ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IGeneric</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">GenericService2
</span><span style="color: blue">end</span></pre>
<p>To specify a condition the syntax would look like this</p>
<pre class="code">require <span style="color: gray">File</span>.<span style="color: #8f20ff">dirname</span><span style="color: gray">(</span><span style="color: blue">__FILE__</span><span style="color: gray">) </span>+ <span style="color: #a31515">'/../Ninject.Tests.dll'
</span>include <span style="color: gray">Ninject</span>::<span style="color: gray">Tests</span>::<span style="color: gray">Fakes

</span>to_configure_ninject <span style="color: blue">do </span>|ninject|
  ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IWeapon</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">Shuriken </span><span style="color: blue">do
    </span>condition <span style="color: blue">do </span>|request|
        request.<span style="color: #8f20ff">target</span>.<span style="color: #8f20ff">nil? </span></pre>
<pre class="code"><span style="color: #8f20ff">             </span>? <span style="color: blue">false </span></pre>
<pre class="code"><span style="color: blue">             </span>: request.<span style="color: #8f20ff">target</span>.<span style="color: #8f20ff">member</span>.<span style="color: #8f20ff">reflected_type </span>== <span style="color: gray">Samurai</span>.<span style="color: #8f20ff">to_clr_type
      </span><span style="color: blue">end
  end
  </span>ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IWeapon</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">Sword
  </span>ninject.<span style="color: #8f20ff">bind </span><span style="color: gray">IWarrior</span>, <span style="color: #c60000">:to </span>=&gt; <span style="color: gray">Samurai
</span><span style="color: blue">end</span></pre>
<p>Well that&#8217;s all. I hope you like it. I will be looking into more ways to integrate DLR stuff into <a href="http://ninject.org" target="_blank">Ninject</a> the most obvious is allowing you to inject dynamic types into static classes.</p>
<p><strong>Note</strong>: this entry <a title="Cross posted from flanders.co.nz" href="http://flanders.co.nz/2009/03/15/ninject-knows-a-new-trick/">was cross-posted from flanders.co.nz</a></p>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/DrDTmpkgkvE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2009/03/14/ninject-knows-a-new-trick/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2009/03/14/ninject-knows-a-new-trick/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ninject-knows-a-new-trick</feedburner:origLink></item>
		<item>
		<title>IronRuby MVC progress</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/LBIdvOlj_fE/</link>
		<comments>http://rubydoes.net/2009/03/09/ironruby-mvc-progress/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:20:31 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IDE]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2009/03/09/ironruby-mvc-progress/</guid>
		<description><![CDATA[
Note: this entry was cross-posted.

If you follow my tweets or the IronRuby mailinglist then you would know that Iâ€™ve been working on taking IronRuby ASP.NET MVC from the prototype stages to a more complete application. For me this has been a great experience getting familiar with the insides of ASP.NET MVC as well as playing [...]]]></description>
			<content:encoded><![CDATA[</p>
<p><b>Note</b>: this entry <a title="Cross posted from flanders.co.nz" href="http://flanders.co.nz/2009/03/09/ironruby-mvc-progress/" alt="Cross posted from flanders.co.nz">was cross-posted</a>.</p>
</p>
<p>If you follow my tweets or the <a href="http://ironruby.net" target="_blank">IronRuby</a> mailinglist then you would know that Iâ€™ve been working on taking <a href="http://ironruby.net" target="_blank">IronRuby</a> ASP.NET MVC from the prototype stages to a more complete application. For me this has been a great experience getting familiar with the insides of ASP.NET MVC as well as playing around with integrating <a href="http://ironruby.net" target="_blank">IronRuby</a> in an existing C# application.&#160;&#160; </p>
<p><span id="more-109"></span></p>
<p>The guys over at MSFT (<a href="http://www.iunknown.com" target="_blank">John Lam</a>, <a href="http://blog.jimmy.schementi.com" target="_blank">Jimmy Schementi</a> and <a href="http://haacked.com" target="_blank">Phil Haack</a>) had previously created a prototype and I built upon their work. You can read more about the previous versions of the prototype.     <br /><a title="http://www.iunknown.com/2008/06/ironruby-and-aspnet-mvc.html" href="http://www.iunknown.com/2008/06/ironruby-and-aspnet-mvc.html">http://www.iunknown.com/2008/06/ironruby-and-aspnet-mvc.html</a>     <br /><a title="http://blog.jimmy.schementi.com/2008/07/aspnet-and-dynamic-languages.html" href="http://blog.jimmy.schementi.com/2008/07/aspnet-and-dynamic-languages.html">http://blog.jimmy.schementi.com/2008/07/aspnet-and-dynamic-languages.html</a>     <br /><a title="http://haacked.com/archive/2008/06/12/ironruby-and-asp.net-bffs-forever.aspx" href="http://haacked.com/archive/2008/06/12/ironruby-and-asp.net-bffs-forever.aspx">http://haacked.com/archive/2008/06/12/ironruby-and-asp.net-bffs-forever.aspx</a>     <br /><a title="http://haacked.com/archive/2008/07/20/ironruby-aspnetmvc-prototype.aspx" href="http://haacked.com/archive/2008/07/20/ironruby-aspnetmvc-prototype.aspx">http://haacked.com/archive/2008/07/20/ironruby-aspnetmvc-prototype.aspx      <br /></a><a title="http://haacked.com/archive/2009/02/17/aspnetmvc-ironruby-with-filters.aspx" href="http://haacked.com/archive/2009/02/17/aspnetmvc-ironruby-with-filters.aspx">http://haacked.com/archive/2009/02/17/aspnetmvc-ironruby-with-filters.aspx</a></a></p>
<p>In a previous post I explained what I had done I explained how I found an entry point and how to get started building your own mvc framework on top of asp.net MVC.</p>
<p><a title="http://flanders.co.nz/2009/01/25/created-a-basic-integration-for-ironruby-and-aspnet-mvc/" href="http://flanders.co.nz/2009/01/25/created-a-basic-integration-for-ironruby-and-aspnet-mvc/">http://flanders.co.nz/2009/01/25/created-a-basic-integration-for-ironruby-and-aspnet-mvc/</a></p>
<p>How far am I now since my last post? Well weâ€™ve got action filters, result filters, exception filters and authorization filters.&#160; We have an IronRubyMvcApplication as a base HttpApplication. Which should get you pretty far when building apps with <a href="http://github.com/casualjim/ironrubymvc" target="_blank">IronRuby MVC</a>. </p>
<p>Iâ€™m currently looking at implementing selectors and aliased actions. When Iâ€™m done with that I guess Iâ€™ve got a fairly working implementation of asp.net MVC and Iâ€™ll start developing a sample with it. </p>
<p>Iâ€™ve actually started building the sample to find out if Iâ€™ve missed something. The sample will be using <a href="http://www.mindscape.co.nz/products/LightSpeed/default.aspx" target="_blank">LightSpeed</a>, <a href="http://github.com/jschementi/ironrubymvc" target="_blank">IronRubyMVC</a> as well as youtube and flickr.</p>
<p>I would love to hear from people that submit bugs or even patches. Iâ€™d also like to get some discussion going on what is going to happen to it in the future :)</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c97f82ba-92a9-4ed0-b47b-856573e898c7" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/IronRuby" rel="tag">IronRuby</a>,<a href="http://technorati.com/tags/ASP.NET+MVC" rel="tag">ASP.NET MVC</a>,<a href="http://technorati.com/tags/IronRuby+MVC" rel="tag">IronRuby MVC</a></div>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/LBIdvOlj_fE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2009/03/09/ironruby-mvc-progress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2009/03/09/ironruby-mvc-progress/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ironruby-mvc-progress</feedburner:origLink></item>
		<item>
		<title>IronRuby DBI: Connecting to ADO.NET datasources</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/eLg_n66qC1A/</link>
		<comments>http://rubydoes.net/2009/01/06/ironruby-dbi-connecting-to-adonet-datasources/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 18:13:55 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[Source]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2009/01/06/ironruby-dbi-connecting-to-adonet-datasources/</guid>
		<description><![CDATA[Because I needed to do some data access and i want to create some adapters for adonet and rails activerecord. I thought it&#8217;d be a good idea to start with a DBI implementation for IronRuby.
You can find it at http://github.com/casualjim/ironruby-dbi or http://code.google.com/p/ironruby-dbi
I packaged the current version up in a zip
To install ironruby-dbi it should should [...]]]></description>
			<content:encoded><![CDATA[<p>Because I needed to do some data access and i want to create some adapters for adonet and rails activerecord. I thought it&#8217;d be a good idea to start with a DBI implementation for IronRuby.</p>
<p>You can find it at http://github.com/casualjim/ironruby-dbi or http://code.google.com/p/ironruby-dbi</p>
<p>I packaged the current version up in a <a href="http://ironruby-dbi.googlecode.com/files/ironruby-dbi.zip" target="_blank">zip</a></p>
<p><a title="Details" name="Details"></a>To install ironruby-dbi it should should suffice to extract the files you find in the ironruby-dbi archive to the libs folder of your ironruby installation.</p>
<p><a title="Details" name="Details"></a>For example I track the git repository for updates to ironruby and the git repository is cloned into <strong>C:\tools\ironruby</strong></p>
<p><a title="Details" name="Details"></a>To install ironruby-dbi these are the steps you need to take:</p>
<ul>
<li><a title="Details" name="Details"></a>Extract the archive</li>
<li><a title="Details" name="Details"></a>Copy the files to ruby/site_ruby/1.8</li>
</ul>
<p><a title="Details" name="Details"></a>(on my machine the full path is: <em>C:\tools\ironruby\merlin\external\languages\ruby\redist-libs\ruby\site_ruby\1.8</em>)<a title="Details" name="Details"></a>Start accessing databases :)</p>
<p>To do that start up an ironruby console</p>
<pre class="prettyprint">require 'dbi' 

conn = DBI.connect('DBI:ADONET:MSSQL:data source=(local);initial catalog=MyDatabase;user id=user;password=password')

statement = conn.execute "Select * from Users" 

while row=statement.fetch
  puts row
end

statement.finish</pre>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/eLg_n66qC1A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2009/01/06/ironruby-dbi-connecting-to-adonet-datasources/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2009/01/06/ironruby-dbi-connecting-to-adonet-datasources/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ironruby-dbi-connecting-to-adonet-datasources</feedburner:origLink></item>
		<item>
		<title>Building IronRuby with Mono</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/PJ591eqOMVg/</link>
		<comments>http://rubydoes.net/2008/12/30/building-ironruby-with-mono/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 13:42:09 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[Setup]]></category>
		<category><![CDATA[Source]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/12/30/building-ironruby-with-mono/</guid>
		<description><![CDATA[IronRuby comes in 2 flavours of SCM and apparently also with 2 flavours of project layout.
I spend most of my time on the mac and I wanted to be able to test ironruby stuff on it too. I tried to build IronRuby on my mac which doesn&#8217;t work straight away you have to patch it [...]]]></description>
			<content:encoded><![CDATA[<p>IronRuby comes in 2 flavours of SCM and apparently also with 2 flavours of project layout.</p>
<p>I spend most of my time on the mac and I wanted to be able to test ironruby stuff on it too. I tried to build IronRuby on my mac which doesn&#8217;t work straight away you have to patch it a little to make it work.</p>
<p>If you&#8217;re using the svn version then you can use the <a href="http://sparcs.kaist.ac.kr/~tinuviel/download/IronRuby/" title="SVN patch for ironruby and mono" target="_blank">patch</a> created by Seo Sanghyeon.<br />
<a href="http://blog.prokrams.com/" title="Michael Letterle's blog" target="_blank">Michael Letterle</a> has forked the ironruby git repository and created a branch called <strong>linux</strong>. You can find it on <a href="http://github.com/TheProkrammer/ironruby" title="The linux branch of ironruby" target="_blank">github</a>.<br />
For me the linux branch didn&#8217;t want to work and so I forked the ironruby repository too, created a branch called <strong>mono</strong>. My version is also up on <a href="http://github.com/casualjim/ironruby" title="Mono branch of Ironruby" target="_blank">github</a>.</p>
<p>If you&#8217;re going to use the git layout of IronRuby, which is practically the same as what the IronRuby team uses at Microsoft. You&#8217;ll have to set an environment variable <em>MERLIN_ROOT</em> . I use a .bashrc file and added the following line to it:</p>
<p>export MERLIN_ROOT=&#8217;/Users/ivan/src/ironruby/merlin/main&#8217;</p>
<p>Now how do you get to those git branches?</p>
<p>Start a terminal session.</p>
<p>I have a directory src in which i download and compile sources. So I navigated into that directory src.</p>
<p>cd src</p>
<p>git clone git://<a href="http://github.com/casualjim/ironruby.git" target="_blank">github.com/casualjim/<wbr></wbr>ironruby.git</a><br />
cd ironruby<br />
git checkout -b mono<br />
git pull origin mono</p>
<p>Compiling IronRuby</p>
<p>cd merlin/main/Languages/Ruby<br />
rake compile mono=1</p>
<p>Update:</p>
<p>You will also need a version of ruby installed, rake and the pathname2 gem</p>
<p>It won&#8217;t work with the latest release of mono. I&#8217;m using the trunk version of mono to build ironruby.<br />
I&#8217;ve got instructions that could show you how to compile mono <a href="http://flanders.co.nz/2008/02/05/compiling-mono-and-ironruby-on-osx-leopard/" title="Compiling mono on OSX" target="_blank">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/PJ591eqOMVg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/12/30/building-ironruby-with-mono/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/12/30/building-ironruby-with-mono/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=building-ironruby-with-mono</feedburner:origLink></item>
		<item>
		<title>Code camp IronRuby presentation materials</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/P16wG-cyrK4/</link>
		<comments>http://rubydoes.net/2008/08/27/code-camp-ironruby-presentation-materials/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 12:16:51 +0000</pubDate>
		<dc:creator>Aaron Junod</dc:creator>
				<category><![CDATA[CodeCamp]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[IronRuby]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/08/27/code-camp-ironruby-presentation-materials/</guid>
		<description><![CDATA[For those of you that were able to come see me ramble on about IronRuby thanks, and I hope you didn&#8217;t get bored to sleep. As promised, here are the presentation materials. Of course I said they would be up by the end of the day, I just didn&#8217;t say which day.
Code
PDF of slides
]]></description>
			<content:encoded><![CDATA[<p>For those of you that were able to come see me ramble on about IronRuby thanks, and I hope you didn&#8217;t get bored to sleep. As promised, here are the presentation materials. Of course I said they would be up by the end of the day, I just didn&#8217;t say which day.</p>
<p><a href="http://rubydoes.net/attach/ct_code_camp_code.zip">Code</a></p>
<p><a href="http://rubydoes.net/attach/ironruby_presentation.pdf">PDF of slides</a></p>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/P16wG-cyrK4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/08/27/code-camp-ironruby-presentation-materials/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/08/27/code-camp-ironruby-presentation-materials/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=code-camp-ironruby-presentation-materials</feedburner:origLink></item>
		<item>
		<title>White paper on IronRuby published</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/8kTGUVeDXZI/</link>
		<comments>http://rubydoes.net/2008/08/25/white-paper-on-ironruby-published/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 05:14:51 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/08/25/white-paper-on-ironruby-published/</guid>
		<description><![CDATA[Manning published my white paper &#8212; or green paper as they call it &#8212; on IronRuby. 
You can find it here: http://manning.com/free/green_carrero.html
This paper tries to give you an introduction on what the ruby language is and how it could work for you. If you want to know more than what&#8217;s on those pages there is [...]]]></description>
			<content:encoded><![CDATA[<p>Manning published my white paper &#8212; or green paper as they call it &#8212; on IronRuby. </p>
<p>You can find it here: <a title="http://manning.com/free/green_carrero.html" href="http://manning.com/free/green_carrero.html">http://manning.com/free/green_carrero.html</a></p>
<p>This paper tries to give you an introduction on what the ruby language is and how it could work for you. If you want to know more than what&#8217;s on those pages there is always the book: <a href="http://manning.com/carrero">http://manning.com/carrero</a></p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:493a5def-c776-4df6-ae3c-eec188c7bced" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/IronRuby" rel="tag">IronRuby</a></div>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/8kTGUVeDXZI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/08/25/white-paper-on-ironruby-published/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/08/25/white-paper-on-ironruby-published/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=white-paper-on-ironruby-published</feedburner:origLink></item>
		<item>
		<title>IronNails: Rails like development for IronRuby with WPF/Silverlight</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/7bOO9DCK0KI/</link>
		<comments>http://rubydoes.net/2008/08/07/ironnails-rails-like-development-for-ironruby-with-wpfsilverlight/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 14:55:22 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/08/07/ironnails-rails-like-development-for-ironruby-with-wpfsilverlight/</guid>
		<description><![CDATA[Whilst writing my book I stumbled upon a way to write WPF applications with an MVC paradigm.
You can read more about it on my blog: http://flanders.co.nz/2008/08/07/ironnails-introduction/
It&#8217;s still very early days for this project but if you like the concept and you have some free time please feel free to contribute. You can contact me through [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst writing my book I stumbled upon a way to write WPF applications with an MVC paradigm.</p>
<p>You can read more about it on my blog: <a title="http://flanders.co.nz/2008/08/07/ironnails-introduction/" href="http://flanders.co.nz/2008/08/07/ironnails-introduction/">http://flanders.co.nz/2008/08/07/ironnails-introduction/</a></p>
<p>It&#8217;s still very early days for this project but if you like the concept and you have some free time please feel free to contribute. You can contact me through my blog or through github.</p>
<p>The github project can be found here: <a href="http://github.com/casualjim/ironnails">http://github.com/casualjim/ironnails</a></p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:438f9384-77ab-4fd5-805e-a24537a7afa7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/IronRubyInAction" rel="tag">IronRubyInAction</a>,<a href="http://technorati.com/tags/IronRuby" rel="tag">IronRuby</a>,<a href="http://technorati.com/tags/ironnails" rel="tag">ironnails</a>,<a href="http://technorati.com/tags/WPF" rel="tag">WPF</a></div>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/7bOO9DCK0KI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/08/07/ironnails-rails-like-development-for-ironruby-with-wpfsilverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/08/07/ironnails-rails-like-development-for-ironruby-with-wpfsilverlight/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ironnails-rails-like-development-for-ironruby-with-wpfsilverlight</feedburner:origLink></item>
		<item>
		<title>Dynamic Script Control</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/FXDVOiZEIrw/</link>
		<comments>http://rubydoes.net/2008/06/11/dynamic-script-control/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 05:12:41 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronPython]]></category>
		<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/06/11/dynamic-script-control/</guid>
		<description><![CDATA[Both Silverlight and WPF use XAML markup to describe their user interface.&#160; As I&#8217;m currently writing my chapter on WPF for my book IronRuby In Action and I want to use some xaml that has been generated before for a different project but with an IronRuby class to load the xaml I&#8217;m in trouble. This [...]]]></description>
			<content:encoded><![CDATA[<p>Both Silverlight and WPF use XAML markup to describe their user interface.&#160; As I&#8217;m currently writing my chapter on WPF for my book IronRuby In Action and I want to use some xaml that has been generated before for a different project but with an IronRuby class to load the xaml I&#8217;m in trouble. This is because you can declare assembly references in the xml namespace declarations so you can use the types in that assembly from xaml.&#160; </p>
<p>The DLR based languages don&#8217;t compile into static assemblies and this means that you can&#8217;t use those xml namespace definitons to reference your assemblies.&#160; I wrote a fairly trivial control that acts like a hook for DLR based controls in the XAML tree.</p>
<p>You can check it out at codeplex.   <br /><a href="http://codeplex.com/dynamicscriptcontrol" target="_blank">http://codeplex.com/dynamicscriptcontrol</a></p>
<p>The idea behind this control is that you can &quot;hook&quot; your DLR based control into the visual tree by setting some properties.&#160; You can set properties on the DLR based control by setting the Attributes property on the DynamicScriptControl</p>
<p>Let&#8217;s look at a quick example:</p>
<p>1. The ruby file defining a custom TextBox. But you can do whatever&#160; you want in that ruby file of course.</p>
<p><a href="http://rubydoes.net/wp-content/uploads/2008/06/dynamic-script-control-rubyscript.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="120" alt="dynamic_script_control_rubyscript" src="http://rubydoes.net/wp-content/uploads/2008/06/dynamic-script-control-rubyscript-thumb.png" width="327" border="0" /></a> </p>
<p>All this textbox does is preset it&#8217;s text property to &quot;I&#8217;m prefilled&quot; </p>
<p>2. The xaml for the window</p>
<p><a href="http://rubydoes.net/wp-content/uploads/2008/06/dynamic-script-control-window-xaml.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="265" alt="dynamic_script_control_window_xaml" src="http://rubydoes.net/wp-content/uploads/2008/06/dynamic-script-control-window-xaml-thumb.png" width="504" border="0" /></a>&#160;</p>
<p>You first declare a namespace for the assembly that has the DynamicScriptControl. Next I have a StackPanel that contains 2 DynamicScriptControls. The first just contains the 2 mandatory properties. We need to know which class you want to instantiate in the file you provide by setting the ScriptFile property. This script file property is a path to your ruby file in my case prefilled_text_box.rb.   <br />The second DynamicScriptControl is one where I want to initialize the control with my own text property. To declare those properties you have to add them to the Attributes collection of the DynamicScriptControl. At this moment it&#8217;s not smart enough to know which datatype you give it so you can specify a format string which was necessary in this case because text is a string.</p>
<p>3. The result</p>
<p><a href="http://rubydoes.net/wp-content/uploads/2008/06/dynamic-script-control-window.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="309" alt="dynamic_script_control_window" src="http://rubydoes.net/wp-content/uploads/2008/06/dynamic-script-control-window-thumb.png" width="305" border="0" /></a> </p>
<p>Michael Foord the author of IronPython In Action will provide the python integration in this control. </p>
<p>There was a release of the Dynamic Silverlight SDK earlier this week which contained the necessary source code files to compile a common DLR for both IronRuby and IronPython.&#160; That is what makes it possible to support multiple scripting languages from the start.&#160; </p>
<p>I&#8217;ve hosted the source code on google and you can find that at:</p>
<p><a title="The google code project" href="http://code.google.com/p/dynamic-script-control" target="_blank">http://code.google.com/p/dynamic-script-control</a></p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4015ed95-7a36-4820-ac0b-6344a61307ee" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/ironruby" rel="tag">ironruby</a>,<a href="http://technorati.com/tags/WPF" rel="tag">WPF</a>,<a href="http://technorati.com/tags/DLR" rel="tag">DLR</a>,<a href="http://technorati.com/tags/ironpython" rel="tag">ironpython</a>,<a href="http://technorati.com/tags/Silverlight" rel="tag">Silverlight</a></div>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/FXDVOiZEIrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/06/11/dynamic-script-control/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/06/11/dynamic-script-control/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dynamic-script-control</feedburner:origLink></item>
		<item>
		<title>The IronRuby in Action book went into EAP today</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/iefoXGnuIZw/</link>
		<comments>http://rubydoes.net/2008/05/15/the-ironruby-in-action-book-went-into-eap-today/#comments</comments>
		<pubDate>Thu, 15 May 2008 21:40:30 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/05/15/the-ironruby-in-action-book-went-into-eap-today/</guid>
		<description><![CDATA[It&#8217;s been a bit of journey but my IronRuby in Action book finally went into EAP today. EAP means exactly what it means in the software world, still very much subject to change. This could be seen as a public review :)&#160; I welcome any suggestions you may have.
You can find the book at http://manning.com/carrero [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a bit of journey but my <a title="IronRuby in Action manning site" href="http://manning.com/carrero" target="_blank">IronRuby in Action</a> book finally went into EAP today. EAP means exactly what it means in the software world, still very much subject to change. This could be seen as a public review :)&#160; I welcome any suggestions you may have.</p>
<p>You can find the book at <a href="http://manning.com/carrero">http://manning.com/carrero</a>     <br />There is also a forum there where you can post suggestions and/or problems you may encounter when running the code samples. I look at it as my issue tracker :)</p>
<p>I&#8217;m currently working on a chapter where I build a complete twitter client with IronRuby and WPF (not silverlight as indicated on the current TOC). It is based on Witty but uses IronRuby instead of C# to drive the xaml. Also some storyboards have been replaced by IronRuby instead of by xaml stuff. It&#8217;s also not a straight port of Witty because I haven&#8217;t really looked at their code apart from the xaml that is.</p>
<p>Happy reading :)</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:84f000d4-7f8c-4995-acfa-704bcc4023eb" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/IronRuby" rel="tag">IronRuby</a>,<a href="http://technorati.com/tags/IronRubyInAction" rel="tag">IronRubyInAction</a></div>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/iefoXGnuIZw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/05/15/the-ironruby-in-action-book-went-into-eap-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/05/15/the-ironruby-in-action-book-went-into-eap-today/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-ironruby-in-action-book-went-into-eap-today</feedburner:origLink></item>
		<item>
		<title>Silverlight / IronRuby using controls (Part 2)</title>
		<link>http://feedproxy.google.com/~r/rubydoesnet/~3/VfRvaOvWNAI/</link>
		<comments>http://rubydoes.net/2008/04/17/silverlight-ironruby-using-controls-part-2/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 04:43:36 +0000</pubDate>
		<dc:creator>Ivan Porto Carrero</dc:creator>
				<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://rubydoes.net/2008/04/17/silverlight-ironruby-using-controls-part-2/</guid>
		<description><![CDATA[I&#8217;m sorry I didn&#8217;t post the last 2 days, but we&#8217;re back with a new post. In my previous posts (1, 2) we didn&#8217;t use the files as they are generated by the little DSL script, this was chosen purposely so you would know that you don&#8217;t really need those files.
Today we are going to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sorry I didn&#8217;t post the last 2 days, but we&#8217;re back with a new post. In my <a href="http://rubydoes.net/2008/04/15/silverlight-ironruby-using-controls/" target="_blank">previous post</a>s (<a href="http://rubydoes.net/2008/04/14/silverlight-minimal-examples/" target="_blank">1</a>, <a href="http://rubydoes.net/2008/04/15/silverlight-ironruby-using-controls/" target="_blank">2</a>) we didn&#8217;t use the files as they are generated by the little DSL script, this was chosen purposely so you would know that you don&#8217;t really need those files.</p>
<p>Today we are going to use the files that get generated by the DSL script. We&#8217;re going to add some classes to silverlight.rb to enable a nicer api for generating elements from ruby.  We left off last time with some code to generate 3 elements. That code wasn&#8217;t the prettiest code I&#8217;ve ever seen, apparently John Lam agrees and he has written a little DSL script for generating those elements. In today&#8217;s post we&#8217;ll be using that little script to generate the StackPanel etc.</p>
<p><a href="http://rubydoes.net/wp-content/uploads/2008/04/controlsdemo3.zip" title="Download the completed code">Download the completed code</a></p>
<p>Just a refresher, here&#8217;s the code we ended up with the last time.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">require</span> <span class="st0">&#8216;System.Windows.Controls,&#8217;</span> +</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&#8216; Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&#8242;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">require</span> <span class="st0">&#8216;System.Windows.Controls.Extended, &#8216;</span>+</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&#8216;Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&#8242;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">include</span> <span class="re2">System::Windows</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">include</span> <span class="re2">System::Windows::Controls</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> FrameworkElement</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">def</span> method_missing<span class="br0">&#40;</span>m<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; find_name<span class="br0">&#40;</span>m.<span class="me1">to_s</span>.<span class="me1">to_clr_string</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">xaml = Application.<span class="me1">current</span>.<span class="me1">load_root_visual</span><span class="br0">&#40;</span>Canvas.<span class="me1">new</span>, <span class="st0">&quot;app.xaml&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">textblock = xaml.<span class="me1">my_textblock</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">panel = StackPanel.<span class="me1">new</span></div>
</li>
<li class="li1">
<div class="de1">panel.<span class="me1">margin</span> = Thickness.<span class="me1">new</span> <span class="nu0">50</span></div>
</li>
<li class="li2">
<div class="de2">panel.<span class="me1">orientation</span> = Orientation.<span class="me1">horizontal</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">button = Button.<span class="me1">new</span></div>
</li>
<li class="li1">
<div class="de1">button.<span class="me1">content</span> = <span class="st0">&#8216;Push Me&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">button.<span class="me1">font_size</span> = <span class="nu0">18</span></div>
</li>
<li class="li2">
<div class="de2">button.<span class="me1">margin</span> = Thickness.<span class="me1">new</span> <span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">waterbox = WatermarkedTextBox.<span class="me1">new</span></div>
</li>
<li class="li1">
<div class="de1">waterbox.<span class="me1">font_size</span> = <span class="nu0">18</span></div>
</li>
<li class="li1">
<div class="de1">waterbox.<span class="me1">margin</span> = Thickness.<span class="me1">new</span> <span class="nu0">10</span></div>
</li>
<li class="li2">
<div class="de2">waterbox.<span class="me1">width</span> = <span class="nu0">200</span></div>
</li>
<li class="li1">
<div class="de1">waterbox.<span class="me1">watermark</span> = <span class="st0">&#8216;Type Something Here&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">panel.<span class="me1">children</span>.<span class="me1">add</span><span class="br0">&#40;</span>button<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">panel.<span class="me1">children</span>.<span class="me1">add</span><span class="br0">&#40;</span>waterbox<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">xaml.<span class="me1">children</span>.<span class="me1">add</span><span class="br0">&#40;</span>panel<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">button.<span class="me1">click</span> <span class="kw1">do</span> |sender, e|</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; textblock.<span class="me1">text</span> = waterbox.<span class="me1">text</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>Let&#8217;s start replacing that code with something a little nicer. Open up the silverlight.rb file in your app folder and add the require directives at the top of your file. Next we&#8217;re going to need the Wpf::Builders module created by <a href="http://www.iunknown.com/2008/03/dynamic-silve-1.html" target="_blank">John Lam</a> it&#8217;s included in the download.  We&#8217;re going to need to add the following code in the silverlight.rb file:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">module</span> Wpf</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">module</span> Builders</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> name_collector</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">@___name_collector_</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#40;</span>name<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; name_collector<span class="br0">&#91;</span>name<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> inject_names<span class="br0">&#40;</span>obj<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; name_collector.<span class="me1">each_pair</span> <span class="kw1">do</span> |k, v|</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">instance_variable_set</span><span class="br0">&#40;</span><span class="st0">&quot;@#{k}&quot;</span>.<span class="me1">to_sym</span>, v<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> evaluate_properties<span class="br0">&#40;</span>obj, args, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj.<span class="me1">instance_variable_set</span><span class="br0">&#40;</span>:@___name_collector_, name_collector<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; args.<span class="me1">each_pair</span> <span class="kw1">do</span> |k, v|</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> k == <span class="re3">:name</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name_collector<span class="br0">&#91;</span>v<span class="br0">&#93;</span> = obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">send</span> :<span class="st0">&quot;#{k.to_s}=&quot;</span>, v</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> obj.<span class="me1">respond_to</span>? <span class="re3">:name</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; name_collector<span class="br0">&#91;</span>obj.<span class="me1">name</span><span class="br0">&#93;</span> = obj <span class="kw1">unless</span> obj.<span class="me1">name</span>.<span class="kw2">nil</span>?</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> add_object_to_name_collector<span class="br0">&#40;</span>collection, obj, args = <span class="br0">&#123;</span><span class="br0">&#125;</span>, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; obj = evaluate_properties<span class="br0">&#40;</span>obj, args, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj.<span class="me1">instance_eval</span><span class="br0">&#40;</span>&amp;amp;b<span class="br0">&#41;</span> <span class="kw1">unless</span> b.<span class="kw2">nil</span>?</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; collection.<span class="me1">add</span> obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> add_class_to_name_collector<span class="br0">&#40;</span>collection, klass, args = <span class="br0">&#123;</span><span class="br0">&#125;</span>, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj = evaluate_properties<span class="br0">&#40;</span>klass.<span class="me1">new</span>, args, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj.<span class="me1">instance_eval</span><span class="br0">&#40;</span>&amp;amp;b<span class="br0">&#41;</span> <span class="kw1">unless</span> b.<span class="kw2">nil</span>?</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; collection.<span class="me1">add</span> obj</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> assign_to_name_collector<span class="br0">&#40;</span>property, klass, args = <span class="br0">&#123;</span><span class="br0">&#125;</span>, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj = evaluate_properties<span class="br0">&#40;</span>klass.<span class="me1">new</span>, args, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; obj.<span class="me1">instance_eval</span><span class="br0">&#40;</span>&amp;amp;b<span class="br0">&#41;</span> <span class="kw1">unless</span> b.<span class="kw2">nil</span>?</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">send</span> property, obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> <span class="kw2">self</span>.<span class="me1">build</span><span class="br0">&#40;</span>klass, args = <span class="br0">&#123;</span><span class="br0">&#125;</span>, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj = klass.<span class="me1">new</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj.<span class="me1">instance_variable_set</span><span class="br0">&#40;</span>:@___name_collector_, <span class="br0">&#123;</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; args.<span class="me1">each_pair</span> <span class="kw1">do</span> |k, v|</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> k == <span class="re3">:name</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">name_collector</span><span class="br0">&#91;</span>v<span class="br0">&#93;</span> = obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj.<span class="me1">send</span> :<span class="st0">&quot;#{k.to_s}=&quot;</span>, v</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj.<span class="me1">instance_eval</span><span class="br0">&#40;</span>&amp;amp;b<span class="br0">&#41;</span> <span class="kw1">if</span> b != <span class="kw2">nil</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>That module takes care of dispatching the correct property names etc. Now that we have the module we can alter the SilverlightApplication a little bit. Let&#8217;s add a method add to that class that will be our entry point into the Wpf::Builders dsl.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">class</span> SilverlightApplication</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> add<span class="br0">&#40;</span>klass, args = <span class="br0">&#123;</span><span class="br0">&#125;</span>, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj = Wpf.<span class="me1">build</span> klass, args, &amp;amp;b</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; children.<span class="me1">add</span> obj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>Ok we still need to monkey patch a couple other classes before we&#8217;re ready to go. The first thing we see is that StackPanel has a setter method for Margin that takes an instance of Thickness. The property margin is defined on FrameworkElement, so that we can use it on every object that inherits of FrameworkElement. We&#8217;re also going to be addressing objects by their name. Not all of them have a name setter method so we&#8217;re going to ensure that all of them have one by monkey patching DependencyObject</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">class</span> FrameworkElement</div>
</li>
<li class="li1">
<div class="de1">&nbsp; alias_method <span class="re3">:old_margin</span>=, <span class="re3">:margin</span>=</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> margin=<span class="br0">&#40;</span>value<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">old_margin</span> = Thickness.<span class="me1">new</span> *value</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> method_missing<span class="br0">&#40;</span>m<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; find_name<span class="br0">&#40;</span>m.<span class="me1">to_s</span>.<span class="me1">to_clr_string</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> DependencyObject</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> name=<span class="br0">&#40;</span>value<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">set_value</span><span class="br0">&#40;</span>FrameworkElement.<span class="me1">NameProperty</span>, value.<span class="me1">to_clr_string</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>This gives us the ability to set margins as if it were normal integer values.</p>
<p>The next thing we see is that there is an Orientation property that we&#8217;re going to set and that seems to take an enumeration of some sort. To accomplish this we&#8217;re going to monkey patch StackPanel.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">class</span> StackPanel</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; alias_method <span class="re3">:old_orientation</span>= , <span class="re3">:orientation</span>=</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">def</span> orientation=<span class="br0">&#40;</span>value<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">old_orientation</span>= <span class="kw1">case</span> value</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">when</span> <span class="re3">:horizontal</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; Orientation.<span class="me1">horizontal</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">when</span> <span class="re3">:vertical</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; Orientation.<span class="me1">vertical</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>We&#8217;re almost there don&#8217;t worry :). The next thing we see is that we need to be able to add child elements to that element. A StackPanel, DockPanel and so forth are all children of Panel so let&#8217;s patch Panel and enable this for more containers. To do this we need to include the module Wpf::Builders in the Panel class and we need to make sure we have all the necessary methods in there that will allow us to add children to that Panel.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Panel</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">include</span> <span class="re2">Wpf::Builders</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> add<span class="br0">&#40;</span>klass, args = <span class="br0">&#123;</span><span class="br0">&#125;</span>, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; add_class_to_name_collector<span class="br0">&#40;</span>children, klass, args, &amp;amp;b<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> add_name<span class="br0">&#40;</span>name, obj<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; name_collector<span class="br0">&#91;</span>name<span class="br0">&#93;</span> = obj</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> add_obj<span class="br0">&#40;</span>obj<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; add_object_to_name_collector<span class="br0">&#40;</span>children, obj<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>We&#8217;ve now got us a little DSL for generating the necessary elements for this demo. All that is left to do now is write the initialize method in app.rb so that we get the same result as the last demo. Below we&#8217;ve got the content of the app.rb file</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">require</span> <span class="st0">&quot;Silverlight&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> App &lt; SilverlightApplication</div>
</li>
<li class="li1">
<div class="de1">&nbsp; use_xaml</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> initialize</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; add StackPanel, <span class="re3">:margin</span> =&gt; <span class="nu0">50</span>, <span class="re3">:orientation</span> =&gt; <span class="re3">:horizontal</span> <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; add Button, <span class="re3">:content</span> =&gt; <span class="st0">&#8216;push me&#8217;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:name</span> =&gt; <span class="st0">&#8216;my_button&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:font_size</span> =&gt; <span class="nu0">18</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; add WatermarkedTextBox,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:font_size</span> =&gt; <span class="nu0">18</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:margin</span> =&gt; <span class="nu0">10</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:name</span> =&gt; <span class="st0">&#8216;my_waterbox&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:width</span> =&gt; <span class="nu0">200</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">:watermark</span> =&gt; <span class="st0">&#8216;Type something here&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; my_button.<span class="me1">click</span> <span class="kw1">do</span> |sender, e|</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; my_textblock.<span class="me1">text</span> = my_waterbox.<span class="me1">text</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">end</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">App.<span class="me1">new</span></div>
</li>
</ol>
</div>
<p>I hope you can see that Silverlight and IronRuby can really work together to help you build some cool things easily. The next post will deal with some animation, hope to see you there ;)</p>
<p class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5d5746be-3145-4909-a33f-44e01aeac9ad" style="margin: 0px; padding: 0px; display: inline">del.icio.us Tags: <a href="http://del.icio.us/popular/IronRuby" rel="tag">IronRuby</a>,<a href="http://del.icio.us/popular/Silverlight" rel="tag">Silverlight</a></p>
<p class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6c4658b3-8c4a-456c-93dd-95aedd026b22" style="margin: 0px; padding: 0px; display: inline">Technorati Tags: <a href="http://technorati.com/tags/IronRuby" rel="tag">IronRuby</a>,<a href="http://technorati.com/tags/Silverlight" rel="tag">Silverlight</a></p>
<img src="http://feeds.feedburner.com/~r/rubydoesnet/~4/VfRvaOvWNAI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rubydoes.net/2008/04/17/silverlight-ironruby-using-controls-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rubydoes.net/2008/04/17/silverlight-ironruby-using-controls-part-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=silverlight-ironruby-using-controls-part-2</feedburner:origLink></item>
	</channel>
</rss><!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
