Injecting enumerable elements into a block near you!™
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



What? it! It what? it it! I’m so confused. Did it confuse you? Did what confuse me? it! It what? … ugh, whatever.

it extends some commonly used Enumerable methods with a convenience: if you pass them a block with no arguments (an arity of zero), and they expect a block with a single argument, then your block will be injected with the value that would normally be passed as that variable, as the variable named “it”:

[1, 2, 3].each { puts it }


I achieve the magic of the it variable with some (ridiculously hacky) magic that I wrapped into the EnvironmentedProc class. Unlike most of my projects, this project is licensed as liberally as possible (see below), so you can use EnvironmentedProc whenever and wherever you want. I hope somebody other than myself finds it exciting!

EnvironmentedProc injects variables into the scope of a block. Incidentally, it can also change the value of self for the duration of block execution.

See the documentation on EnvironmentedProc for more data.


@thingie = {p [who, what, when, where]}
# … somewhere else …
@thingie.inject who: "why", what: "oh", when: "why", where: "!"

Man, I really need to change my self /-:

@thingie = {self * 2}
# … somewhere else …
@thingie.set_self(2).call # => 4


You can install it as a pre–built gem, or you can build it directly from the source.

The easiest way to install it is to use RubyGems to acquire the latest ‘release’ version from GitHub, using the gem command line tool:

# If you’ve ever done this before, you don’t need to do it now
# (see
gem sources -a

gem install elliottcable-it

Alternatively, you can build a gem from the latest source yourself. You need git, as well as Rake:

git clone git://
cd it
rake package:package
gem install pkg/it-*.gem


You can contribute bug fixes or new features to it by forking the project on GitHub (you’ll need to register for an account first), and sending me a pull request once you’ve committed and pushed your changes.

If you find bugs, you can report them on the issue tracker at GitHub:

If you’re looking for something to do, check out the open issues on that tracker, and maybe fix some bugs d-:


it is copyright ©2008 by elliottcable.

it is released under the GNU Affero General Public License v3, which allows you to freely utilize, modify, and distribute all it’s source code (subject to the terms of the aforementioned license).

The sourcecode to the EnvironmentedProc class (in the file lib/it/environmented_proc.rb) is additionally released under a liberal MIT license (the “XFree86 License v1.1”). You may choose to use the source code in that file under the terms of either of those two licenses, according to your needs.