Backports Library
Would you like to use features of Ruby 1.8.7 without the need of having 1.8.7 installed? Simply
require 'backports/1.8.7'
All 1.8.7 features are now available! Some of the features of 1.9 are also available with
require 'backports/1.9'
Finally, some features of rails’ active-support are also available with
require 'backports/rails'
If you want them all:
require 'backports'
What’s inside
All features of 1.8.7 are backported (well, almost all, see the exception list bellow).
Conditions for inclusion of ruby 1.9 and activesupport features:
-
Won’t break older code
-
Simple and self-contained
For example, Module::instance_methods
returns strings in 1.8 and symbols in 1.9; no change can be made without the risk of breaking existing code. Such incompatibilities between 1.8 and 1.9 methods are left unchanged.
More complex features of active-support (even things like String::pluralize
), won’t be included. require 'activesupport'
if you need them and are not in rails!
Installation & compatibility
backports
is mirrored on Rubyforge and can thus be installed with:
sudo gem install backports
To use:
require 'rubygems'
require 'backports' # or a subset like "backports/1.8.7"
# and off you go!
Compatible with Ruby 1.8 & 1.9, jruby and rubinius.
Complete List of backports
Ruby 1.8.7
Complete Ruby 1.8.7 backporting. Refer to the official list of changes.
Only exceptions:
-
String#gsub
-
GC.stress=
-
Process.exec
-
Array#choice (use Array#sample instead)
-
recursive data handling (Array and Hash)
Ruby 1.9
Additionally, the following Ruby 1.9 have been backported:
-
Array
-
try_convert
-
-
Enumerable
-
each_with_object
-
-
Enumerator
-
new
(with block)
-
-
File
-
binread
-
to_path
-
All class methods accepting filenames will accept files or anything with a #to_path method.
-
-
Hash
-
try_convert
-
default_proc=
-
-
Kernel
-
require_relative
-
-
Object
-
define_singleton_method
-
-
Proc
-
yield
-
-
String
-
try_convert
-
ascii_only?
-
chr
-
clear
-
codepoints
,each_codepoint
-
Enumerator
can be accessed directly (instead of Enumerable::Enumerator
)
Moreover, a pretty good imitation of BasicObject is available, but it must be required explicitely:
require 'backports/basic_object'
Rails
Some generic methods from Rails methods have been copied:
-
Enumerable
-
sum
-
-
Hash
-
symbolize_keys
,symbolize_keys!
-
reverse_merge
,reverse_merge!
-
-
Module
-
alias_method_chain
-
-
Object
-
try
-
returning
-
-
String
-
camelize
,underscore
-
dasherize
,demodulize
-
constantize
-
License
backports
is released under the terms of the MIT License, see the included LICENSE file.
- Author
-
Marc-André Lafortune