Crate - ruby based standalone executables

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

  • + Andrew24 Andrew24 7 months ago
    Thanks for posting your slides. But how do I view it after I unzipped your zip-file?
    Please explain.
    What is the original file type? How did you ctrate the zip file?

    Thanks

    BlazingCyber@yahoo.com
Post a comment
Embed Video
Edit your comment Cancel

Notes on slide 1




How many of you have full control over your application deployment?
How many of your know how many instance of your application there will be?
Desktop applications?
IT Shops? distribute small apps to your company for command / control monitoring ?































Very similar to how rubygems works.








I left out a fair bit of nitty gritty details
would you like me to expand on anything, show some more code, yell and scream at me,

Favorites, Groups & Events

Crate - ruby based standalone executables - Presentation Transcript

  1. CRATE Ruby based, standalone executables Jeremy Hinegardner jeremy@copiousfreetime.org @copiousfreetime
  2. COPIOUS FREE TIME Fedora Ruby Packaging Gems •beanstalkd •amalgalite •haproxy •crate •libtomcrypt •keybox •libtommath •launchy •nginx •heel •ragel •hitimes •tinyproxy •htauth •rabal •stickler
  3. Crate & Amalgalite
  4. SURVEY
  5. PRE HISTORY RubyConf 2007
  6. PRE HISTORY RubyConf 2007 • Sploitin’ with Ruby • Aaron Bedra
  7. PRE HISTORY RubyConf 2007 • Sploitin’ with Ruby • Aaron Bedra • Deploying Ruby Runtimes • Bruce Williams & Rich Kilmer
  8. STORYTIME
  9. PERL 4, 1993
  10. NO CONTROL
  11. NO CONTROL • interpreters? - perl probably, python maybe, ruby most likely not
  12. NO CONTROL • interpreters? - perl probably, python maybe, ruby most likely not • what libraries? - openssl? zlib?
  13. NO CONTROL • interpreters? - perl probably, python maybe, ruby most likely not • what libraries? - openssl? zlib? • compiler? - quite possibly not
  14. What do you do, when only thing you know about your target system, is the Operating System?
  15. AND YOU LOVE RUBY.
  16. YOU MAKE CRATE.
  17. SO WHAT IS CRATE?
  18. embedded Ruby
  19. embedded Ruby + ruby extensions
  20. embedded Ruby + ruby extensions + main wrapper
  21. embedded Ruby + ruby extensions + main wrapper + standard library
  22. embedded Ruby + ruby extensions + main wrapper + standard library + application code
  23. embedded Ruby + ruby extensions + main wrapper + standard library + application code Crate based application
  24. RUBYSCRIPT2EXE ?
  25. http://www.erikveen.dds.nl/rubyscript2exe
  26. SHOES ?
  27. MY NEEDS
  28. MY NEEDS • Minimally Invasive • do not unpack to a temporary location • small as can be
  29. MY NEEDS • Minimally Invasive • do not unpack to a temporary location • small as can be • Wide deployment capabilities • more than linux, mac, windows, cygwin
  30. embedded Ruby + ruby extensions + main wrapper + standard library + application code Crate based application
  31. embedded Ruby C + ruby extensions + main wrapper + standard library + application code Crate based application
  32. embedded Ruby C + ruby extensions + main wrapper + standard library Ruby + application code Crate based application
  33. Statically Compile embedded Ruby C + ruby extensions + main wrapper + standard library Ruby + application code Crate based application
  34. Statically Compile embedded Ruby C + ruby extensions + main wrapper + standard library Ruby + application code Crate based application Amalgalite
  35. Statically Compile embedded Ruby C + ruby extensions + main wrapper + standard library Ruby + application code Crate based application Pack into Amalgalite
  36. 1 CREATE TABLE rubylibs ( 2       id            INTEGER PRIMARY KEY AUTOINCREMENT, 3       filename      TEXT UNIQUE, 4       compressed    BOOLEAN, 5       contents      BLOB 6       );
  37. Inexact Size Measurements Executable + C Ruby libs extensions Ruby 1.8.6 2.4 M 8.4 M Crate/ruby 1.8.6 2.9 M 1.9 M
  38.  1 module Kernel  2   # alias the original require away to use later  3   alias :amalgalite_original_require :require  4  5   #  6   # hook into the system 'require' to allow for required text or blobs from an  7   # amalgalite database.    8   #  9   def require( filename ) 10     loaded = amalgalite_original_require( filename ) 11   rescue LoadError => load_error 12     if load_error.message =~ /#{Regexp.escape filename}\\z/ then 13       loaded = Amalgalite::Requires.require( filename ) 14     else 15       raise load_error 16     end 17   end 18 19   private :require 20   private :amalgalite_original_require 21 end
  39. Amalgalite ruby driver is bootstrapped in its C extension
  40. DEMO
  41. ISSUE #1 - AUTOLOAD
  42. ISSUE #1 - AUTOLOAD • Problem • bypasses the require chain setup by amalgalite • used by rack, active_support, active_record
  43. ISSUE #1 - AUTOLOAD • Problem • bypasses the require chain setup by amalgalite • used by rack, active_support, active_record • Solution • Port tree style patches? • custom gem builds?
  44. ISSUE #2 - VIEWS
  45. ISSUE #2 - VIEWS • Problem • layout and templates loaded from disk
  46. ISSUE #2 - VIEWS • Problem • layout and templates loaded from disk • Solution • wait for Rails 3 • sinatra, others, make patches for upstream, if needed.
  47. ISSUE #3 - CLASS RELOADING • Problem • Development mode reloads classes • Solution ( for now ) • production mode when running as crate based apps
  48. QUESTIONS?
SlideShare Zeitgeist 2009

+ Jeremy HinegardnerJeremy Hinegardner Nominate

custom

730 views, 0 favs, 0 embeds more stats

This is the version of my Crate talk that was given more

More info about this document

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Go to text version

  • Total Views 730
    • 730 on SlideShare
    • 0 from embeds
  • Comments 1
  • Favorites 0
  • Downloads 15
Most viewed embeds

more

All embeds

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories