Skip to content

Commit

Permalink
Introduce minimalistic package for ActiveSupport.
Browse files Browse the repository at this point in the history
To simplify using of ActiveSupport in 3rd party libraries,
a simple way to require only minimum of commonly used extensions
(multibyte, inflections, array and hash extensions, #blank?, and a few
others) is needed. For exactly this reason some out-of-Rails-space
libraries adopted Extlib, originally from DataMapper.

To keep it 2067% backwards compatible, and still available
to everyone even in 2.x releases, active_support/minimalistic.rb
was added.

Use it like this:

gem 'active_support', '>=2.3'
require 'active_support/minimalistic'

instead of

require 'activesupport'

Right now this package with RubyGems uses about 10 megs of RAM
(10.01 or so). It can be further slimmed down though, once we simplify
multibyte implementation that right now uses advanced accessors
from Module extensions.

To compare RAM usage with previous ActiveSupport versions and Extlib,
at the time of writing, see http://gist.github.com/40401.
  • Loading branch information
michaelklishin committed Dec 28, 2008
1 parent 9fd35fc commit 1339258
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
Expand Up @@ -55,7 +55,11 @@ def is_utf8?

unless '1.8.7 and later'.respond_to?(:chars)
def chars
ActiveSupport::Deprecation.warn('String#chars has been deprecated in favor of String#mb_chars.', caller)
# FIXME:
# ActiveSupport::Deprecation refers to RAILS_ENV
# and is a show stopper for 3rd party applications
# that only want ActiveSupport
ActiveSupport::Deprecation.warn('String#chars has been deprecated in favor of String#mb_chars.', caller) if defined?(ActiveSupport::Deprecation)
mb_chars
end
end
Expand Down
15 changes: 15 additions & 0 deletions activesupport/lib/active_support/minimalistic.rb
@@ -0,0 +1,15 @@
$LOAD_PATH.unshift File.dirname(__FILE__)

require "core_ext/blank"
# whole object.rb pulls up rare used introspection extensions
require "core_ext/object/metaclass"
require 'core_ext/array'
require 'core_ext/hash'
require 'core_ext/module/attribute_accessors'
require 'multibyte'
require 'core_ext/string/multibyte'
require 'core_ext/string/inflections'

class String
include ActiveSupport::CoreExtensions::String::Multibyte
end

0 comments on commit 1339258

Please sign in to comment.