What is Ruby Enterprise Edition?
Ruby Enterprise Edition (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements. REE’s main benefits are the ability to reduce Ruby on Rails applications’ memory usage by 33% on average, the ability to increase applications’ performance and the inclusion of various analysis and debugging features. The lower memory usage and increased performance are possible because REE includes – among other enhancements – a copy-on-write friendly garbage collector, as well as an improved memory allocator. REE has been out for several months now and is already used by many high-profile websites and organizations, such as New York Times, Shopify and 37signals.
“We switched to enterprise ruby to get the full benefit of the [copy-on-write] memory characteristics and we can absolutely confirm the memory savings of 30% some others have reported. This is many thousand dollars of savings even at today’s hardware prices.”
– Tobias Lütke (Shopify)
And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.
Sponsorship results
We are pleased to announce REE version 1.8.6-20090113 to the world. This version is sponsored by the following people and organizations:
- Rails Machine LLC, 1000 USD
- limited overload GmbH, 300 USD
- Fingertips, 250 USD
- Atlantic Dominion Solutions, LLC, 200 USD
- ZenDesk, 200 USD
- Gipote.dk Carsten Gehling, 100 USD
- Hosting Playground Inc., 100 USD
- John Trupiano, 100 USD
- Tesly, LLC, 100 USD
- 80beans, 50 USD
- Yulian Tarkhanov, 50 USD
- Cassio Antonio, 30 USD
- Alexey Kovyrin, 25 USD
- Revolution Co., 25 USD
- Bob Martens, 20 USD
- Ethan Michaels, 20 USD
- Jeffrey Lee, 20 USD
- Matrix9180.org, 20 USD
- Bryan Liles, 10 USD
- Jeff Patterson, 10 USD
- Jeremy Lecour, 5 USD
- Kieran P, 5 USD
- Eastern Suns Inc., 1 USD
- Paul Klipp, 1 USD
We were pleasantly surprised with the speed at which the second sponsorship campaign’s goal was reached. Thank you sponsors!
Changes
The sponsored improvements are:
- Tcmalloc support for 64-bit operating systems.
REE’s copy-on-write optimizations work on 64-bit operating systems. But the improved memory allocator that REE includes, tcmalloc, was disabled on 64-bit platforms for various reasons. It would be more efficient if tcmalloc is enabled on 64-bit platforms because it would allow one to save more memory and to gain more performance. In this release, tcmalloc now properly integrates into Ruby on 64-bit platform.
- Ported and incorporated the RubyProf GC patches.
These patches add the ability to measure the number of objects in Ruby and to measure the amount of allocated memory, which is very useful in various debugging scenarios. RubyProf automatically uses this functionality for GC profiling if the Ruby interpreter is properly patched.
- Better documentation.
A lot of cool new features, e.g. caller_for_all_threads and the RailsBench patches, had been added to REE lately. These features aren’t very well documented, and the existing documentation was scattered all over the Internet. We’ve written a unified manual which teaches developers how to effectively use these new REE features to debug applications.
We’ve also added a number of improvements which are not sponsored:
- Fixed –no-tcmalloc on OS X
- Running the installer with –no-tcmalloc didn’t work on OS X. This has been fixed.
- Fixed more bugs in GNU readline integration on OS X
- Requiring “irb/completion” causes REE to crash when running on OS X. This has been fixed. Also, GNU readline has been added as dependency, so the installer will now check for it.
- Pass ‘-r’ to ‘gem install’ when installing gems
- The REE installer will now pass ‘-r’ when installing gems. This fixes gem installation for people who have specified ‘-l’ in their ~/.gemrc.
- Fixed a crash when using REE to install REE
- This is caused by the fact that we overwrote tcmalloc without unlinking it first. This has been fixed.
- Fixed Debian package
- The Debian package for the previous release contains a mysterious folder called ‘/home/hongli’. This bug has been fixed.
Download & upgrade
To install Ruby Enterprise Edition, please visit the download page. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to the documentation for upgrade instructions.
What’s new?
Yesterday we launched DebGem, our RubyGems-to-Apt conversion service. As well as receiving a lot of heartwarming reactions, we’ve also received a lot of constructive criticism for which we’re deeply thankful as we believe they will help us improve this service even more. DebGem is currently in free public beta.
Here’s a summary of what we’ve improved and fixed since yesterday:
- Support for gems with native extensions on x86 Debian 4.0 (Etch)
-
Yesterday, we only supported gems with native extensions on x86 Ubuntu 8.04. Today, we also support x86 Debian 4.0! The list of supported platforms and distributions is quickly moving forward.
- Fixed reported disk space usage
-
The disk space usage reported by apt-get was incorrect. For example, installing Ruby on Rails 2.2.2 only requires 19 MB of disk space, but apt-get reports 204 MB of required disk space. This has been fixed.
- Fixed packaging of various gems
-
We’ve fixed packages for the “tracker” gem and the “prawn” gem. “tracker” (the Ruby time tracking software) is conflicting with “tracker” (the metadata indexer, as provided by Debian proper’s repository), so we’ve renamed this to “rubytracker”. “prawn” wasn’t being generated correctly, which we’ve fixed.
These improvements are possible because of useful feedback from our users. Thank you, and please keep the feedback coming! We are dedicated to providing high-quality packaging.
What are the advantages of DebGem over RubyGems?
- If you’re setting up a new server, then DebGem is easier to setup than RubyGems. RubyGems needs to be installed from source, but before that, you need to install the correct Ruby programs, libraries and build tools by hand. Installing DebGem just involves adding an Apt source.
- Debian packages integrate better into the system. Gems cannot handle native dependencies. For example, if you install the RMagick gem, then RubyGems won’t install ImageMagick for you. The DebGem Debian packages do, so installing an arbitrary Ruby library just involves a single command.
- Security: the DebGem Apt repository is PGP-signed, making it less vulnerable to man-in-the-middle network attacks.
- Debian system administrators are typically very skilled with Apt, but less so with RubyGems. Debian system administrators who are skilled with RubyGems are not as easy to find. RubyGems can be taught, but a typical Debian system administrator is likely to make less mistakes if he only has to deal with Apt, a tool he/she is already intimately familiar with.
What features does a paid subscription bring?
A paid subscription allows you access to over 25,000 Debian packaged gems. These gems continue to enjoy the greatest care of our staff to ensure everything is working properly during their life cycle. This requires constant fine-tuning, testing and maintenance over all these gems, which is by no means trivial. This is hard, tedious and error-prone work which not only requires packaging skills but also knowledge of the Debian operating system. Even though Debian proper’s volunteers do a great job in maintaining Debian packages, these packages aren’t always up to date and not everything is packaged. By providing this as a paid service, we’ve taken up the task of delivering the latest versions of these gems ready to use. In essence, this should take away all the packaging pains from you, allowing you to concentrate on your core business instead.
Note that we only charge for making use of this service and not the software made available through the packages.
I am concerned about compatibility. What if my app assumes that libraries are installed through RubyGems? Will I experience “dependency hell”?
DebGem packages register themselves as gems, so that everything will continue to work just as if the libraries were installed as gems. So in short, no you should not experience “dependency hell”
Package xxx doesn’t work.
Please tell us about it! We are fully committed to providing high-quality packages that integrate well into the system. There are about 25000 gems so we haven’t been able to test all of them, but it is for this reason why DebGem is currently in public beta. If something doesn’t seem to work properly, please notify us and we’ll fix it for you.
We hope that this post answers some of your questions. Please keep posting, we’re eager to hear your comments and criticism! http://www.debgem.com/
Written by Hongli Lai on January 7, 2009
DebGem
Introduction
Installing Ruby/Rails software on Debian and Ubuntu Linux distributions has been less than ideal until now. Ruby has a package manager called RubyGems, but Debian-based distributions have their own package manager, namely Apt, which manages the entire system and is preferred by most Debian users. RubyGems does not integrate well with Apt and cannot handle native Debian package dependencies. But on the other hand, Ruby software provided through the current Debian Apt repositories are not always up-to-date, e.g. the latest Rails version is often not available.
We are happy to announce DebGem, our RubyGem-to-Apt conversion service.
- DebGem provides an Apt repository with Debian packages for virtually all gems available on RubyForge and GitHub. To put things into perspective, there are over 20000 gems on RubyForge and Github combined.
- We support Debian and Ubuntu.
- Installing an arbitrary Ruby library is now as easy as typing apt-get install libsomething-ruby.
- Packages are kept up-to-date often. For example, the latest version of Rails is available through DebGem.
- We support gems with native extensions as well, e.g. RMagick and Mongrel. We hand-tune individual packages to make sure that they have the proper package dependencies.
- The repository is GPG signed.
Comments from a Debian member
We are committed to providing high-quality packages that integrate well into the system. For this reason, we’ve contacted Gunnar Wolf — a member of the Debian Ruby packaging team — for feedback prior to launching DebGem. In his latest blog post, he has expressed his approval of DebGem. Thanks Gunnar.
More information
DebGem is currently in free public beta. Please go to http://www.debgem.com/ to learn more.
Written by Hongli Lai on January 6, 2009
DebGem