SlideShare a Scribd company logo
+                   +

   =

        IronRuby for the
         .NET Developer
Cory Foy - Cory Foy, LLC
foyc@coryfoy.com - @cory_foy
Hello, IronRuby!
History

Ruby and .NET

  Ruby to .NET

  Ruby CLR Project

  RubyCLR

All attempted to run Ruby on top of the CLR
History

 CLR 2.0

  (.NET 3.0 and 3.5 were still CLR 2.0)

  No dynamic dispatch

  Everything had to be compiled

  Lots of magic, and shims
History

 CLR 2.0

  (.NET 3.0 and 3.5 were still CLR 2.0)

  No dynamic dispatch

  Everything had to be compiled

  Lots of magic, and shims

    CREDIT: HTTP://WWW.FLICKR.COM/PHOTOS/37341680@N04/4278580062
History
alias alias_method_missing method_missing

def method_missing(name, *params)
   alias_method_missing(name, *params)
      unless name == :Count
   create_ruby_instance_method(self.class, 'Count') do
      include 'System.Collections'
      ldarg_2
      call     'static Marshal::ToClrObject(VALUE)'
      call     'ArrayList::get_Count()'
      call     'static Marshal::ToRubyNumber(Int32)'
      ret
   end
   self.Count
end
History
 CLR 4.0

  Dynamic keyword (C#)
History
 CLR 4.0

  Dynamic keyword (C#)

Calculator calc = GetCalculator();
int sum = calc.Add(1, 3);
History
 CLR 4.0

  Dynamic keyword (C#)

var calc = GetCalculator();
int sum = calc.Add(1, 3);
History
 CLR 4.0

  Dynamic keyword (C#)
object calc = GetCalculator();
Type calcType = calc.GetType();
object res =
calcType.InvokeMember("Add",
    BindingFlags.InvokeMethod, null,
    new object[] { 10, 20 });
int sum = Convert.ToInt32(res);
History
 CLR 4.0

  Dynamic keyword (C#)

dynamic calc = GetCalculator();
int sum = calc.Add(1, 3);
History
 DLR

  Introduced in 2007

  Set of libraries to assist language developers

  Still runs on the CLI, and can access the CLR

  Standardizes the implementation of dynamic
  languages on the CLI/CLR
History
IronRuby

 John Lam hired by Microsoft in 2006

 Announced in 2007 at MIX7

 Goal to make Ruby a first-class citizen

 Completely rewritten to take advantage of the
 DLR
History
 DLR

       Dynamic Language Runtime (DLR)




       Common Language Runtime (CLR)
History
 DLR

          Dynamic Language Runtime (DLR)

   Common
 Hosting Model




         Common Language Runtime (CLR)
History
 DLR

          Dynamic Language Runtime (DLR)

   Common
                     Runtime
 Hosting Model




         Common Language Runtime (CLR)
History
 DLR

          Dynamic Language Runtime (DLR)

   Common                            Language
                     Runtime
 Hosting Model                     Implementation




         Common Language Runtime (CLR)
History

                                Ruby




              Dynamic Language Runtime




      Common Language Runtime
History

                                Ruby




              Dynamic Language Runtime




      Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
History

                                    Ruby


     VB
C#                Dynamic Language Runtime




          Common Language Runtime
IronRuby for the .NET Developer
WHY RUBY?
RUBY IS LOVE!
CREDIT: HTTP://WWW.FLICKR.COM/
                                                  PHOTOS/19684903@N00/317182464




CREDIT: HTTP://WWW.FLICKR.COM/
 PHOTOS/WWWORKS/3800306463
                                 RUBY IS LOVE!


                                                        CREDIT: HTTP://WWW.FLICKR.COM/
                                                      PHOTOS/STUCKINCUSTOMS/2366980580


                CREDIT: HTTP://WWW.FLICKR.COM/
              PHOTOS/EXPRESSMONORAIL/2631659122
CREDIT: HTTP://WWW.FLICKR.COM/PHOTOS/BILLBURRIS/2822607830
IronRuby for the .NET Developer
TYPE SAFETY
                                    CODE SAFETY


                  OBJECT GRAPHS

    DEBUGGING
                        STATIC CODE ANALYSIS


                SEALED TYPES
INTELLISENSE
                             COMPILER CATCHES ERRORS
TYPE SAFETY
                                    CODE SAFETY


                  OBJECT GRAPHS

    DEBUGGING
                        STATIC CODE ANALYSIS


                SEALED TYPES
INTELLISENSE
                             COMPILER CATCHES ERRORS
IronRuby for the .NET Developer
TEST
ALL
THE
FRICKIN’
TIME
CREDIT: HTTP://WWW.FLICKR.COM/PHOTOS/FATBOYKE/2668411239
Metaprogramming
                                   CREDIT: HTTP://WWW.FLICKR.COM/
                                   PHOTOS/CHOCONANCY/2470073711




All Classes Are Open

Definitions are active

All method calls have a receiver

Classes are objects
WHAT IS THIS?
AND WHY IS IT HERE?
WHAT IS THIS?
AND WHY IS IT HERE?
WHAT IS THIS?
AND WHY IS IT HERE?
WHAT IS THIS?
AND WHY IS IT HERE?
Duck Typing
Open Classes

               CREDIT: HTTP://COMMONS.WIKIMEDIA.ORG/WIKI/
                         FILE:NEON_OPEN_SIGN.JPG
Monkey Patching
method_missing

                 CREDIT: HTTP://WWW.FLICKR.COM/
                   PHOTOS/TAITOH/3029653729/
Dynamism
           CREDIT: HTTP://WWW.FLICKR.COM/PHOTOS/
                    LABGUEST/3510995344/
RubyGems

Standardized Packaging System

Central Repository for hosting packages

Allows for installation and management of
multiple installed versions
RubyGems
RubyGems


    THAT’S IT!
IronRuby Basics
IronRuby Basics

Installing
IronRuby Basics

Installing

  http://ironruby.net/Download
IronRuby Basics

Installing

  http://ironruby.net/Download

  Download Windows Installer
IronRuby Basics

Installing

  http://ironruby.net/Download

  Download Windows Installer

  ???
IronRuby Basics

Installing

  http://ironruby.net/Download

  Download Windows Installer

  ???

  Profit!!!
IronRuby Basics
IronRuby Basics
..and what did we just install?
IronRuby Basics
..and what did we just install?

  bin - IronRuby executables (ir.exe, etc)
IronRuby Basics
..and what did we just install?

  bin - IronRuby executables (ir.exe, etc)

  lib - Helpers for including assemblies and other
  common tasks
IronRuby Basics
..and what did we just install?

  bin - IronRuby executables (ir.exe, etc)

  lib - Helpers for including assemblies and other
  common tasks

  samples - Contains the Tutorial app and others
IronRuby Basics
..and what did we just install?

  bin - IronRuby executables (ir.exe, etc)

  lib - Helpers for including assemblies and other
  common tasks

  samples - Contains the Tutorial app and others

  silverlight - Contains the Silverlight Dynamic
  Languages SDK
IronRuby Basics
..and, how the heck did it just do that?

            Dynamic Language Runtime (DLR)

     Common                            Language
                       Runtime
   Hosting Model                     Implementation




           Common Language Runtime (CLR)
IronRuby Basics
..and, how the heck did it just do that?

                       Runtime

     Call sites        Binders             Rules




            Common Language Runtime (CLR)
IronRuby Basics
..and, how the heck did it just do that?

                 Language Implementation

                        Language
       ASTs                                Compiler
                         Context




              Common Language Runtime (CLR)
IronRuby Basics
..and, how the heck did it just do that?

                Common Hosting Model

 ScriptRuntime ScriptEngine ScriptScope    ScriptSource




           Common Language Runtime (CLR)
Integration

Calling .NET from IronRuby

Calling IronRuby from .NET

WinForms / WPF / Silverlight

Cucumber / RSpec
Get Involved!
Website - http://ironruby.net

  http://ironruby.codeplex.com/

  http://github.com/ironruby

Mailing List - http://rubyforge.org/mailman/listinfo/
ironruby-core

foyc@coryfoy.com | @cory_foy
Slides @ http://blog.coryfoy.com
IronRuby for the .NET Developer

More Related Content

What's hot (18)

PDF
ruby-cocoa
tutorialsruby
 
PPT
Intro for RoR
Vigneshwaran Seetharaman
 
PDF
Ruby Presentation
platico_dev
 
KEY
Using Aspects for Language Portability (SCAM 2010)
lennartkats
 
PDF
Por que Rails?
Marcelo Boeira
 
PPTX
Extending Ruby using C++
Tristan Penman
 
PDF
Go Programming Language by Google
Uttam Gandhi
 
PDF
Pharo Arm Status
ESUG
 
PDF
[LibreOffice Asia Conference 2019] CJK Issues on LibreOffice(based on Korean ...
DaeHyun Sung
 
PDF
Perl::Lint - Yet Another Perl Source Code Linter
moznion
 
PDF
Jython
Robert Bachmann
 
PPTX
Semana Interop: Trabalhando com IronPython e com Ironruby
Alessandro Binhara
 
PDF
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
DaeHyun Sung
 
PPTX
Go for Rubyists. August 2018. RUG-B Meetup
Kirill Zonov
 
PDF
Kotlin from-scratch
Franco Lombardo
 
PDF
FOSDEM 2020 Presentation : Precise, cross-project code navigation at GitHub s...
Fasten Project
 
PPT
Python Intro For Managers
Atul Shridhar
 
ruby-cocoa
tutorialsruby
 
Ruby Presentation
platico_dev
 
Using Aspects for Language Portability (SCAM 2010)
lennartkats
 
Por que Rails?
Marcelo Boeira
 
Extending Ruby using C++
Tristan Penman
 
Go Programming Language by Google
Uttam Gandhi
 
Pharo Arm Status
ESUG
 
[LibreOffice Asia Conference 2019] CJK Issues on LibreOffice(based on Korean ...
DaeHyun Sung
 
Perl::Lint - Yet Another Perl Source Code Linter
moznion
 
Semana Interop: Trabalhando com IronPython e com Ironruby
Alessandro Binhara
 
[LibreOffice Korea-Japan online Seminar] Introduce to LibreOffice & Korean Is...
DaeHyun Sung
 
Go for Rubyists. August 2018. RUG-B Meetup
Kirill Zonov
 
Kotlin from-scratch
Franco Lombardo
 
FOSDEM 2020 Presentation : Precise, cross-project code navigation at GitHub s...
Fasten Project
 
Python Intro For Managers
Atul Shridhar
 

Similar to IronRuby for the .NET Developer (20)

PDF
Ruby an overall approach
Felipe Schmitt
 
PPTX
Dynamic languages for .NET CLR
py_sunil
 
PPTX
Ruby for .NET developers
Max Titov
 
PDF
Dynamic Binding in C# 4.0
Buu Nguyen
 
KEY
Introduction to Ruby
Mark Menard
 
PDF
dotnet-ug-iron-ruby
Amir Barylko
 
PPTX
Iron Sprog Tech Talk
Kristian Kristensen
 
PDF
Web Development With Ruby - From Simple To Complex
Brian Hogan
 
PDF
Codemash-iron-ruby-match-made-in-heaven
Amir Barylko
 
PPTX
Ruby Loves Dot Net
Ivan Porto Carrero
 
ZIP
Meta Programming in Ruby - Code Camp 2010
ssoroka
 
KEY
Ruby on Rails Training - Module 1
Mark Menard
 
PDF
IJTC%202009%20JRuby
tutorialsruby
 
PDF
IJTC%202009%20JRuby
tutorialsruby
 
PPTX
Dynamic Ranguage Runtime (DLR)
Sarmad Sadeed Nizami
 
PDF
Ruby Metaprogramming 08
Brian Sam-Bodden
 
PDF
Ruby tutorial
knoppix
 
PPTX
Dynamic C#
Antya Dev
 
PDF
New c sharp4_features_part_vi
Nico Ludwig
 
PPTX
Ruby for PHP developers
Max Titov
 
Ruby an overall approach
Felipe Schmitt
 
Dynamic languages for .NET CLR
py_sunil
 
Ruby for .NET developers
Max Titov
 
Dynamic Binding in C# 4.0
Buu Nguyen
 
Introduction to Ruby
Mark Menard
 
dotnet-ug-iron-ruby
Amir Barylko
 
Iron Sprog Tech Talk
Kristian Kristensen
 
Web Development With Ruby - From Simple To Complex
Brian Hogan
 
Codemash-iron-ruby-match-made-in-heaven
Amir Barylko
 
Ruby Loves Dot Net
Ivan Porto Carrero
 
Meta Programming in Ruby - Code Camp 2010
ssoroka
 
Ruby on Rails Training - Module 1
Mark Menard
 
IJTC%202009%20JRuby
tutorialsruby
 
IJTC%202009%20JRuby
tutorialsruby
 
Dynamic Ranguage Runtime (DLR)
Sarmad Sadeed Nizami
 
Ruby Metaprogramming 08
Brian Sam-Bodden
 
Ruby tutorial
knoppix
 
Dynamic C#
Antya Dev
 
New c sharp4_features_part_vi
Nico Ludwig
 
Ruby for PHP developers
Max Titov
 
Ad

More from Cory Foy (20)

PDF
Defending Commoditization: Mapping Gameplays and Strategies to Stay Ahead in ...
Cory Foy
 
PDF
Stratgic Play - Doing the Right Thing at the Right Time
Cory Foy
 
PDF
Continuous Deployment and Testing Workshop from Better Software West
Cory Foy
 
PDF
Choosing Between Scrum and Kanban - TriAgile 2015
Cory Foy
 
PDF
Code Katas
Cory Foy
 
PDF
Distributed Agility
Cory Foy
 
PDF
Scaling Agility
Cory Foy
 
PDF
Kanban for DevOps
Cory Foy
 
PDF
Ruby and OO for Beginners
Cory Foy
 
PDF
Agile Roots: The Agile Mindset - Agility Across the Organization
Cory Foy
 
PDF
Triangle.rb - How Secure is Your Rails Site, Anyway?
Cory Foy
 
PDF
Scrum vs Kanban - Implementing Agility at Scale
Cory Foy
 
PDF
SQE Boston - When Code Cries
Cory Foy
 
PDF
GOTO Berlin - When Code Cries
Cory Foy
 
PDF
Rails as a Pattern Language
Cory Foy
 
PDF
Patterns in Rails
Cory Foy
 
PDF
Agile Demystified
Cory Foy
 
KEY
When Code Cries
Cory Foy
 
PPT
Ruby for C# Developers
Cory Foy
 
PPT
Getting Unstuck: Working with Legacy Code and Data
Cory Foy
 
Defending Commoditization: Mapping Gameplays and Strategies to Stay Ahead in ...
Cory Foy
 
Stratgic Play - Doing the Right Thing at the Right Time
Cory Foy
 
Continuous Deployment and Testing Workshop from Better Software West
Cory Foy
 
Choosing Between Scrum and Kanban - TriAgile 2015
Cory Foy
 
Code Katas
Cory Foy
 
Distributed Agility
Cory Foy
 
Scaling Agility
Cory Foy
 
Kanban for DevOps
Cory Foy
 
Ruby and OO for Beginners
Cory Foy
 
Agile Roots: The Agile Mindset - Agility Across the Organization
Cory Foy
 
Triangle.rb - How Secure is Your Rails Site, Anyway?
Cory Foy
 
Scrum vs Kanban - Implementing Agility at Scale
Cory Foy
 
SQE Boston - When Code Cries
Cory Foy
 
GOTO Berlin - When Code Cries
Cory Foy
 
Rails as a Pattern Language
Cory Foy
 
Patterns in Rails
Cory Foy
 
Agile Demystified
Cory Foy
 
When Code Cries
Cory Foy
 
Ruby for C# Developers
Cory Foy
 
Getting Unstuck: Working with Legacy Code and Data
Cory Foy
 
Ad

Recently uploaded (20)

PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 

IronRuby for the .NET Developer

  • 1. + + = IronRuby for the .NET Developer Cory Foy - Cory Foy, LLC [email protected] - @cory_foy
  • 3. History Ruby and .NET Ruby to .NET Ruby CLR Project RubyCLR All attempted to run Ruby on top of the CLR
  • 4. History CLR 2.0 (.NET 3.0 and 3.5 were still CLR 2.0) No dynamic dispatch Everything had to be compiled Lots of magic, and shims
  • 5. History CLR 2.0 (.NET 3.0 and 3.5 were still CLR 2.0) No dynamic dispatch Everything had to be compiled Lots of magic, and shims CREDIT: HTTP://WWW.FLICKR.COM/PHOTOS/37341680@N04/4278580062
  • 6. History alias alias_method_missing method_missing def method_missing(name, *params) alias_method_missing(name, *params) unless name == :Count create_ruby_instance_method(self.class, 'Count') do include 'System.Collections' ldarg_2 call 'static Marshal::ToClrObject(VALUE)' call 'ArrayList::get_Count()' call 'static Marshal::ToRubyNumber(Int32)' ret end self.Count end
  • 7. History CLR 4.0 Dynamic keyword (C#)
  • 8. History CLR 4.0 Dynamic keyword (C#) Calculator calc = GetCalculator(); int sum = calc.Add(1, 3);
  • 9. History CLR 4.0 Dynamic keyword (C#) var calc = GetCalculator(); int sum = calc.Add(1, 3);
  • 10. History CLR 4.0 Dynamic keyword (C#) object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res);
  • 11. History CLR 4.0 Dynamic keyword (C#) dynamic calc = GetCalculator(); int sum = calc.Add(1, 3);
  • 12. History DLR Introduced in 2007 Set of libraries to assist language developers Still runs on the CLI, and can access the CLR Standardizes the implementation of dynamic languages on the CLI/CLR
  • 13. History IronRuby John Lam hired by Microsoft in 2006 Announced in 2007 at MIX7 Goal to make Ruby a first-class citizen Completely rewritten to take advantage of the DLR
  • 14. History DLR Dynamic Language Runtime (DLR) Common Language Runtime (CLR)
  • 15. History DLR Dynamic Language Runtime (DLR) Common Hosting Model Common Language Runtime (CLR)
  • 16. History DLR Dynamic Language Runtime (DLR) Common Runtime Hosting Model Common Language Runtime (CLR)
  • 17. History DLR Dynamic Language Runtime (DLR) Common Language Runtime Hosting Model Implementation Common Language Runtime (CLR)
  • 18. History Ruby Dynamic Language Runtime Common Language Runtime
  • 19. History Ruby Dynamic Language Runtime Common Language Runtime
  • 20. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 21. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 22. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 23. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 24. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 25. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 26. History Ruby VB C# Dynamic Language Runtime Common Language Runtime
  • 30. CREDIT: HTTP://WWW.FLICKR.COM/ PHOTOS/19684903@N00/317182464 CREDIT: HTTP://WWW.FLICKR.COM/ PHOTOS/WWWORKS/3800306463 RUBY IS LOVE! CREDIT: HTTP://WWW.FLICKR.COM/ PHOTOS/STUCKINCUSTOMS/2366980580 CREDIT: HTTP://WWW.FLICKR.COM/ PHOTOS/EXPRESSMONORAIL/2631659122
  • 33. TYPE SAFETY CODE SAFETY OBJECT GRAPHS DEBUGGING STATIC CODE ANALYSIS SEALED TYPES INTELLISENSE COMPILER CATCHES ERRORS
  • 34. TYPE SAFETY CODE SAFETY OBJECT GRAPHS DEBUGGING STATIC CODE ANALYSIS SEALED TYPES INTELLISENSE COMPILER CATCHES ERRORS
  • 38. Metaprogramming CREDIT: HTTP://WWW.FLICKR.COM/ PHOTOS/CHOCONANCY/2470073711 All Classes Are Open Definitions are active All method calls have a receiver Classes are objects
  • 39. WHAT IS THIS? AND WHY IS IT HERE?
  • 40. WHAT IS THIS? AND WHY IS IT HERE?
  • 41. WHAT IS THIS? AND WHY IS IT HERE?
  • 42. WHAT IS THIS? AND WHY IS IT HERE?
  • 44. Open Classes CREDIT: HTTP://COMMONS.WIKIMEDIA.ORG/WIKI/ FILE:NEON_OPEN_SIGN.JPG
  • 46. method_missing CREDIT: HTTP://WWW.FLICKR.COM/ PHOTOS/TAITOH/3029653729/
  • 47. Dynamism CREDIT: HTTP://WWW.FLICKR.COM/PHOTOS/ LABGUEST/3510995344/
  • 48. RubyGems Standardized Packaging System Central Repository for hosting packages Allows for installation and management of multiple installed versions
  • 50. RubyGems THAT’S IT!
  • 53. IronRuby Basics Installing http://ironruby.net/Download
  • 54. IronRuby Basics Installing http://ironruby.net/Download Download Windows Installer
  • 55. IronRuby Basics Installing http://ironruby.net/Download Download Windows Installer ???
  • 56. IronRuby Basics Installing http://ironruby.net/Download Download Windows Installer ??? Profit!!!
  • 58. IronRuby Basics ..and what did we just install?
  • 59. IronRuby Basics ..and what did we just install? bin - IronRuby executables (ir.exe, etc)
  • 60. IronRuby Basics ..and what did we just install? bin - IronRuby executables (ir.exe, etc) lib - Helpers for including assemblies and other common tasks
  • 61. IronRuby Basics ..and what did we just install? bin - IronRuby executables (ir.exe, etc) lib - Helpers for including assemblies and other common tasks samples - Contains the Tutorial app and others
  • 62. IronRuby Basics ..and what did we just install? bin - IronRuby executables (ir.exe, etc) lib - Helpers for including assemblies and other common tasks samples - Contains the Tutorial app and others silverlight - Contains the Silverlight Dynamic Languages SDK
  • 63. IronRuby Basics ..and, how the heck did it just do that? Dynamic Language Runtime (DLR) Common Language Runtime Hosting Model Implementation Common Language Runtime (CLR)
  • 64. IronRuby Basics ..and, how the heck did it just do that? Runtime Call sites Binders Rules Common Language Runtime (CLR)
  • 65. IronRuby Basics ..and, how the heck did it just do that? Language Implementation Language ASTs Compiler Context Common Language Runtime (CLR)
  • 66. IronRuby Basics ..and, how the heck did it just do that? Common Hosting Model ScriptRuntime ScriptEngine ScriptScope ScriptSource Common Language Runtime (CLR)
  • 67. Integration Calling .NET from IronRuby Calling IronRuby from .NET WinForms / WPF / Silverlight Cucumber / RSpec
  • 68. Get Involved! Website - http://ironruby.net http://ironruby.codeplex.com/ http://github.com/ironruby Mailing List - http://rubyforge.org/mailman/listinfo/ ironruby-core [email protected] | @cory_foy Slides @ http://blog.coryfoy.com

Editor's Notes

  • #3: Sample Ruby App, Extend Access to .NET Object, Extend to pop up a WinForms MessageBox, Extend to do a 3D WPF “Hello MIX10!”
  • #8: Ruby to .NET - Thomas Sondergaard - 2003 Ruby CLR Project - Funded by Microsoft / Queensland Univ of Tech RubyCLR - John Lam’s first attempt
  • #9: Yep, it’s all about the magic. What kind of magic?
  • #10: Yep, it’s all about the magic. What kind of magic?
  • #11: This kind of magic
  • #40: So, Why Ruby? What’s so great about Ruby?
  • #41: So, Why Ruby? What’s so great about Ruby?
  • #42: So, Why Ruby? What’s so great about Ruby?
  • #43: So, Why Ruby? What’s so great about Ruby?
  • #44: So, Why Ruby? What’s so great about Ruby?
  • #45: So, Why Ruby? What’s so great about Ruby?
  • #46: So, Why Ruby? What’s so great about Ruby?
  • #47: So, Why Ruby? What’s so great about Ruby?
  • #48: So, Why Ruby? What’s so great about Ruby?
  • #49: But I hear many of you are quite skeptical.
  • #50: But I’m going to sidestep all of these with one statement
  • #51: But I’m going to sidestep all of these with one statement
  • #52: But I’m going to sidestep all of these with one statement
  • #53: But I’m going to sidestep all of these with one statement
  • #54: But I’m going to sidestep all of these with one statement
  • #55: But I’m going to sidestep all of these with one statement
  • #56: But I’m going to sidestep all of these with one statement
  • #57: But I’m going to sidestep all of these with one statement
  • #58: But I’m going to sidestep all of these with one statement
  • #59: Performance Implications next
  • #60: Nor am I going to dive into performance implications. Compiled code is going to be faster. But I am going to talk about something very cool in Ruby
  • #68: This allows us to build DSLs. If we think about what we use on a daily basis, it equates to lots of DSLs - MSBuild scripts, proj files, SQL Queries.
  • #72: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #73: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #74: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #75: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #76: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #77: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #78: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #79: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #80: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.
  • #81: Discuss installing, and the layout of the project, then show a simple IronRuby form and talk about how the request was processed through the system.