SlideShare una empresa de Scribd logo
1 de 31
IronRuby – A brave new world! Meerkatalyst @Ben_HallBen@BenHall.me.ukBlog.BenHall.me.ukCodeBetter.com/blogs/BenHall
London (UK) based C# MVPWeb Developer @ 7digital.com Working on a number of Open Source Projects Co-Author of  Testing ASP.net Web Applications http://www.testingaspnet.com
Today... Intro to Ruby IronRuby Taking advantage with existing frameworks 7digital, scripting, DSLs and the real world Embedding IronRuby into C#
Tomorrow... Testing C# and ASP.net Applications using Ruby Track 6 (Here) 13:40 Lunch-time Ruby meet-up
Why are we here? http://www.flickr.com/photos/wwworks/2222523486/sizes/l/
Ruby implementation on top of .NET
The right language for the right job
Don’t think of this as a replacement
DEMO RUBY RUBYRUBY => IRONRUBY
http://www.flickr.com/photos/vhanes/3053401272/
Community http://www.flickr.com/photos/tjflex/233574885/
Learn at least one new language every year The Pragmatic ProgrammerAndrew Hunt David Thomas Invest Regularly in Your Knowledge Portfolio
via @danrough Continuous Improvement
http://nickolai.tumblr.com/post/159823820/dilbert-cobol-programming-dinosaur Programming Dinosaur
Remote server setup and configuration Real world example
ir.exe installed onto every server via svn+teamcity consts = “dns = 'ec2-127.0.0.1.amazon.com‘; file = ‘app.config’” command = “contents = System::IO::File.read_all_text(file); " +   "contents = contents.replace(‘$(MACHINE_DNS)', dns); " +    "System::IO::File.write_all_text(file, contents)"ir.exe -e ”#{consts}” -e ”#{command}”
Ruby as a scripting language
require 'win32ole'excel = WIN32OLE.new("excel.application")excel['Visible'] = true#Create a new sheetworkbook = excel.Workbooks.Addexcel.Range("a1")['Value'] = 3excel.Range("a2")['Value'] = 2excel.Range("a3")['Value'] = 1excel.Range("a1:a3").Select# Add a chartexcelchart = workbook.Charts.AddXL3D_COLUMN_CHART_TYPE = -4100excelchart['Type'] = XL3D_COLUMN_CHART_TYPE  Built-in to IronRuby & Excel
DEMO ADVANCED RUBYRONRUBY
Internal DSLs (Domain Specific Language)
kill ‘ps aux | grepmongrel_rails | grep -v grep | cut -c 10-20’ Rush.processes.filter(:cmdline => /mongrel_rails/).kill Created using Rush Bash Ruby
Created using Rudy defaults do   color true   environment :test   role :windows   zone :'eu-west-1b'   bucket 'rudy-ami-eu' end machines do   region :'us-east-1' do     ami 'ami-de4daab7' # Amazon Windows Server 2003 (US)     size 'm1.small'   end   region :'eu-west-1' do     ami 'ami-8696bef2' # Rudy Windows 2009-08-24 (EU)   end end
@hourly cd C:/temp/ && script/runner -e production "SomeModel.ladeeda" >> C:/temp/cron_log.log 2>&10 0,3,6,9,12,15,18,21 * * * cd C:/temp/ && script/runner -e production "MyModel.some_process" >> C:/temp/cron_log.log 2>&10 0,3,6,9,12,15,18,21 * * * cd C:/temp/ && RAILS_ENV=production /usr/bin/env rake my:rake:task >> C:/temp/cron_log.log 2>&10 0,3,6,9,12,15,18,21 * * * /usr/bin/my_great_command >> C:/temp/cron_log.log 2>&130 4 * * * cd C:/temp/ && script/runner -e production "MyModel.task_to_run_at_four_thirty_in_the_morning" >> C:/temp/cron_log.log 2>&10 12 * * 0 cd C:/temp/ && script/runner -e production "Task.do_something_great" >> C:/temp/cron_log.log 2>&1 Corn jobask
set :path, 'C:/temp/‘set :output, "C:/temp/cron_log.log"every 3.hours do  runner "MyModel.some_process"  rake "my:rake:task"  command "/usr/bin/my_great_command“endevery 1.day, :at => '4:30 am' do  runner "MyModel.task_to_run_at_four_thirty_in_the_morning“endevery :hour do   runner "SomeModel.ladeeda“endevery :sunday, :at => '12pm' do   runner "Task.do_something_great“end Created using Whenever
http://albacorebuild.net/ Created using Albacore desc "Run a sample build using the MSBuildTask" msbuild do |msb| msb.properties :configuration => :Debug msb.targets :Clean, :Build msb.solution = "spec/support/TestSolution/TestSolution.sln" enddesc "NUnit Test Runner Example" nunit do |nunit|nunit.path_to_command = "NUnit/nunit-console.exe" nunit.assemblies "assemblies/TestSolution.Tests.dll" end
desc "Create Website" create_site :create => :delete do |w|  w.name = 'Meerpush_Website' w.home = 'C:netpubwwroot' end desc "Start Website" start_site :start do |w|   w.name = 'Meerpush_Website' end  http://www.github.com/benhall/meerpush Created using Meerpush
DEMO EMBEDDING IRONRUBY
Links http://ironruby.codeplex.com/ http://twitter.com/#/list/casualjim/ironruby-community http://blog.benhall.me.uk
http://www.bennylingbling.com/2009/04/17/i-see-what-you-did-there/ SUMMARY
How will IronRuby change your world?
@Ben_Hall Ben@BenHall.me.uk Blog.BenHall.me.uk http://lolcatgenerator.com/lolcat/120/

Más contenido relacionado

Destacado

Testing your applications with mbunit
Testing your applications with mbunitTesting your applications with mbunit
Testing your applications with mbunitBen Hall
 
Embracing a new world - dynamic languages and .NET
Embracing a new world - dynamic languages and .NETEmbracing a new world - dynamic languages and .NET
Embracing a new world - dynamic languages and .NETBen Hall
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deploymentBen Hall
 
NHibernate - SQLBits IV
NHibernate - SQLBits IVNHibernate - SQLBits IV
NHibernate - SQLBits IVBen Hall
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
 
Testing ASP.net and C# using Ruby (NDC2010)
Testing ASP.net and C# using Ruby (NDC2010)Testing ASP.net and C# using Ruby (NDC2010)
Testing ASP.net and C# using Ruby (NDC2010)Ben Hall
 
TDD Painkillers
TDD PainkillersTDD Painkillers
TDD PainkillersBen Hall
 
Advanced unit testing – real life examples and mistakes
Advanced unit testing – real life examples and mistakesAdvanced unit testing – real life examples and mistakes
Advanced unit testing – real life examples and mistakesMilan Vukoje
 

Destacado (8)

Testing your applications with mbunit
Testing your applications with mbunitTesting your applications with mbunit
Testing your applications with mbunit
 
Embracing a new world - dynamic languages and .NET
Embracing a new world - dynamic languages and .NETEmbracing a new world - dynamic languages and .NET
Embracing a new world - dynamic languages and .NET
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
NHibernate - SQLBits IV
NHibernate - SQLBits IVNHibernate - SQLBits IV
NHibernate - SQLBits IV
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
Testing ASP.net and C# using Ruby (NDC2010)
Testing ASP.net and C# using Ruby (NDC2010)Testing ASP.net and C# using Ruby (NDC2010)
Testing ASP.net and C# using Ruby (NDC2010)
 
TDD Painkillers
TDD PainkillersTDD Painkillers
TDD Painkillers
 
Advanced unit testing – real life examples and mistakes
Advanced unit testing – real life examples and mistakesAdvanced unit testing – real life examples and mistakes
Advanced unit testing – real life examples and mistakes
 

Similar a IronRuby - A brave new world for .Net (NDC2010)

WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?Brainhub
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mrubyHiroshi SHIBATA
 
Fast Slim Correct: The History and Evolution of JavaScript.
Fast Slim Correct: The History and Evolution of JavaScript.Fast Slim Correct: The History and Evolution of JavaScript.
Fast Slim Correct: The History and Evolution of JavaScript.John Dalziel
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails FinalRobert Postill
 
JS Fest 2018. Алексей Волков. Полезные инструменты для JS разработки
JS Fest 2018. Алексей Волков. Полезные инструменты для JS разработкиJS Fest 2018. Алексей Волков. Полезные инструменты для JS разработки
JS Fest 2018. Алексей Волков. Полезные инструменты для JS разработкиJSFestUA
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Codemotion
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUKiwamu Okabe
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby TeamArto Artnik
 
Rapid Prototyping FTW!!!
Rapid Prototyping FTW!!!Rapid Prototyping FTW!!!
Rapid Prototyping FTW!!!cloudbring
 
Migrating To Ruby1.9
Migrating To Ruby1.9Migrating To Ruby1.9
Migrating To Ruby1.9tomaspavelka
 
TestUpload
TestUploadTestUpload
TestUploadZarksaDS
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScriptOleg Podsechin
 
Castles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App EngineCastles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App Enginecatherinewall
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Bastian Grimm
 
Railswaycon 2009 - Summary
Railswaycon 2009 - SummaryRailswaycon 2009 - Summary
Railswaycon 2009 - Summarydaniel.mattes
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for RubyHiroshi SHIBATA
 

Similar a IronRuby - A brave new world for .Net (NDC2010) (20)

Happy Coding with Ruby on Rails
Happy Coding with Ruby on RailsHappy Coding with Ruby on Rails
Happy Coding with Ruby on Rails
 
WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mruby
 
Fast Slim Correct: The History and Evolution of JavaScript.
Fast Slim Correct: The History and Evolution of JavaScript.Fast Slim Correct: The History and Evolution of JavaScript.
Fast Slim Correct: The History and Evolution of JavaScript.
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
JS Fest 2018. Алексей Волков. Полезные инструменты для JS разработки
JS Fest 2018. Алексей Волков. Полезные инструменты для JS разработкиJS Fest 2018. Алексей Волков. Полезные инструменты для JS разработки
JS Fest 2018. Алексей Волков. Полезные инструменты для JS разработки
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Sinatra
SinatraSinatra
Sinatra
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCU
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Rapid Prototyping FTW!!!
Rapid Prototyping FTW!!!Rapid Prototyping FTW!!!
Rapid Prototyping FTW!!!
 
Migrating To Ruby1.9
Migrating To Ruby1.9Migrating To Ruby1.9
Migrating To Ruby1.9
 
TestUpload
TestUploadTestUpload
TestUpload
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
Castles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App EngineCastles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App Engine
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018
 
Web Leaps Forward
Web Leaps ForwardWeb Leaps Forward
Web Leaps Forward
 
Railswaycon 2009 - Summary
Railswaycon 2009 - SummaryRailswaycon 2009 - Summary
Railswaycon 2009 - Summary
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 

Más de Ben Hall

The Art Of Documentation - NDC Porto 2022
The Art Of Documentation - NDC Porto 2022The Art Of Documentation - NDC Porto 2022
The Art Of Documentation - NDC Porto 2022Ben Hall
 
The Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsThe Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsBen Hall
 
Three Years of Lessons Running Potentially Malicious Code Inside Containers
Three Years of Lessons Running Potentially Malicious Code Inside ContainersThree Years of Lessons Running Potentially Malicious Code Inside Containers
Three Years of Lessons Running Potentially Malicious Code Inside ContainersBen Hall
 
Containers without docker
Containers without dockerContainers without docker
Containers without dockerBen Hall
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
The Art of Documentation and Readme.md for Open Source Projects
The Art of Documentation and Readme.md for Open Source ProjectsThe Art of Documentation and Readme.md for Open Source Projects
The Art of Documentation and Readme.md for Open Source ProjectsBen Hall
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?Ben Hall
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeBen Hall
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceBen Hall
 
The art of documentation and readme.md
The art of documentation and readme.mdThe art of documentation and readme.md
The art of documentation and readme.mdBen Hall
 
Experimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and TensorflowExperimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and TensorflowBen Hall
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on DockerBen Hall
 
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationReal World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationBen Hall
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesBen Hall
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersBen Hall
 
The How and Why of Windows containers
The How and Why of Windows containersThe How and Why of Windows containers
The How and Why of Windows containersBen Hall
 
Lessons from running potentially malicious code inside containers
Lessons from running potentially malicious code inside containersLessons from running potentially malicious code inside containers
Lessons from running potentially malicious code inside containersBen Hall
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Ben Hall
 
Learning Patterns for the Overworked Developer
Learning Patterns for the Overworked DeveloperLearning Patterns for the Overworked Developer
Learning Patterns for the Overworked DeveloperBen Hall
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsBen Hall
 

Más de Ben Hall (20)

The Art Of Documentation - NDC Porto 2022
The Art Of Documentation - NDC Porto 2022The Art Of Documentation - NDC Porto 2022
The Art Of Documentation - NDC Porto 2022
 
The Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsThe Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source Projects
 
Three Years of Lessons Running Potentially Malicious Code Inside Containers
Three Years of Lessons Running Potentially Malicious Code Inside ContainersThree Years of Lessons Running Potentially Malicious Code Inside Containers
Three Years of Lessons Running Potentially Malicious Code Inside Containers
 
Containers without docker
Containers without dockerContainers without docker
Containers without docker
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
The Art of Documentation and Readme.md for Open Source Projects
The Art of Documentation and Readme.md for Open Source ProjectsThe Art of Documentation and Readme.md for Open Source Projects
The Art of Documentation and Readme.md for Open Source Projects
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud Native
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
 
The art of documentation and readme.md
The art of documentation and readme.mdThe art of documentation and readme.md
The art of documentation and readme.md
 
Experimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and TensorflowExperimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and Tensorflow
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on Docker
 
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationReal World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS Application
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows Containers
 
The How and Why of Windows containers
The How and Why of Windows containersThe How and Why of Windows containers
The How and Why of Windows containers
 
Lessons from running potentially malicious code inside containers
Lessons from running potentially malicious code inside containersLessons from running potentially malicious code inside containers
Lessons from running potentially malicious code inside containers
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
 
Learning Patterns for the Overworked Developer
Learning Patterns for the Overworked DeveloperLearning Patterns for the Overworked Developer
Learning Patterns for the Overworked Developer
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 

Último

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

IronRuby - A brave new world for .Net (NDC2010)

  • 1. IronRuby – A brave new world! Meerkatalyst @Ben_HallBen@BenHall.me.ukBlog.BenHall.me.ukCodeBetter.com/blogs/BenHall
  • 2. London (UK) based C# MVPWeb Developer @ 7digital.com Working on a number of Open Source Projects Co-Author of Testing ASP.net Web Applications http://www.testingaspnet.com
  • 3. Today... Intro to Ruby IronRuby Taking advantage with existing frameworks 7digital, scripting, DSLs and the real world Embedding IronRuby into C#
  • 4. Tomorrow... Testing C# and ASP.net Applications using Ruby Track 6 (Here) 13:40 Lunch-time Ruby meet-up
  • 5. Why are we here? http://www.flickr.com/photos/wwworks/2222523486/sizes/l/
  • 7. The right language for the right job
  • 8. Don’t think of this as a replacement
  • 9. DEMO RUBY RUBYRUBY => IRONRUBY
  • 12. Learn at least one new language every year The Pragmatic ProgrammerAndrew Hunt David Thomas Invest Regularly in Your Knowledge Portfolio
  • 15. Remote server setup and configuration Real world example
  • 16. ir.exe installed onto every server via svn+teamcity consts = “dns = 'ec2-127.0.0.1.amazon.com‘; file = ‘app.config’” command = “contents = System::IO::File.read_all_text(file); " + "contents = contents.replace(‘$(MACHINE_DNS)', dns); " + "System::IO::File.write_all_text(file, contents)"ir.exe -e ”#{consts}” -e ”#{command}”
  • 17. Ruby as a scripting language
  • 18. require 'win32ole'excel = WIN32OLE.new("excel.application")excel['Visible'] = true#Create a new sheetworkbook = excel.Workbooks.Addexcel.Range("a1")['Value'] = 3excel.Range("a2")['Value'] = 2excel.Range("a3")['Value'] = 1excel.Range("a1:a3").Select# Add a chartexcelchart = workbook.Charts.AddXL3D_COLUMN_CHART_TYPE = -4100excelchart['Type'] = XL3D_COLUMN_CHART_TYPE Built-in to IronRuby & Excel
  • 20. Internal DSLs (Domain Specific Language)
  • 21. kill ‘ps aux | grepmongrel_rails | grep -v grep | cut -c 10-20’ Rush.processes.filter(:cmdline => /mongrel_rails/).kill Created using Rush Bash Ruby
  • 22. Created using Rudy defaults do   color true   environment :test   role :windows   zone :'eu-west-1b'   bucket 'rudy-ami-eu' end machines do   region :'us-east-1' do     ami 'ami-de4daab7' # Amazon Windows Server 2003 (US)     size 'm1.small'   end   region :'eu-west-1' do     ami 'ami-8696bef2' # Rudy Windows 2009-08-24 (EU)   end end
  • 23. @hourly cd C:/temp/ && script/runner -e production "SomeModel.ladeeda" >> C:/temp/cron_log.log 2>&10 0,3,6,9,12,15,18,21 * * * cd C:/temp/ && script/runner -e production "MyModel.some_process" >> C:/temp/cron_log.log 2>&10 0,3,6,9,12,15,18,21 * * * cd C:/temp/ && RAILS_ENV=production /usr/bin/env rake my:rake:task >> C:/temp/cron_log.log 2>&10 0,3,6,9,12,15,18,21 * * * /usr/bin/my_great_command >> C:/temp/cron_log.log 2>&130 4 * * * cd C:/temp/ && script/runner -e production "MyModel.task_to_run_at_four_thirty_in_the_morning" >> C:/temp/cron_log.log 2>&10 12 * * 0 cd C:/temp/ && script/runner -e production "Task.do_something_great" >> C:/temp/cron_log.log 2>&1 Corn jobask
  • 24. set :path, 'C:/temp/‘set :output, "C:/temp/cron_log.log"every 3.hours do runner "MyModel.some_process" rake "my:rake:task" command "/usr/bin/my_great_command“endevery 1.day, :at => '4:30 am' do runner "MyModel.task_to_run_at_four_thirty_in_the_morning“endevery :hour do runner "SomeModel.ladeeda“endevery :sunday, :at => '12pm' do runner "Task.do_something_great“end Created using Whenever
  • 25. http://albacorebuild.net/ Created using Albacore desc "Run a sample build using the MSBuildTask" msbuild do |msb| msb.properties :configuration => :Debug msb.targets :Clean, :Build msb.solution = "spec/support/TestSolution/TestSolution.sln" enddesc "NUnit Test Runner Example" nunit do |nunit|nunit.path_to_command = "NUnit/nunit-console.exe" nunit.assemblies "assemblies/TestSolution.Tests.dll" end
  • 26. desc "Create Website" create_site :create => :delete do |w| w.name = 'Meerpush_Website' w.home = 'C:netpubwwroot' end desc "Start Website" start_site :start do |w| w.name = 'Meerpush_Website' end http://www.github.com/benhall/meerpush Created using Meerpush
  • 30. How will IronRuby change your world?
  • 31. @Ben_Hall Ben@BenHall.me.uk Blog.BenHall.me.uk http://lolcatgenerator.com/lolcat/120/

Notas del editor

  1. TwitterInnovation BDDHerokuSoftware discussions
  2. More than a replacement for C#It’s an extensionIt’s a different way of thinkingIt’s a new way of solving problems