ruby-concurrency/concurrent-ruby — pull request #197 by jdantonio (2014-12-06 12:40:43+00:00)
Title: Moved C extensions into a companion gem.

*This is what this gem will look like if we move the C extensions into the [concurrent-ruby-ext](https://github.com/ruby-concurrency/concurrent-ruby-ext) gem.*

## Packaging this repo

From this repo we would create two builds:

* Pure Ruby (for all platforms except JRuby)
* Ruby with compiled Java extensions (for JRuby)

We can retain the Java extensions in this rep because the pre-compiled Java build has worked flawlessly.

## Packaging the extensions repo

The companion gem `concurrent-ruby-ext` will contain only pure-C code and a small amount of supporting Ruby code. We would still use the automated build process to create pre-compiled binaries. The difference is that the "base" gem version will compile on install if a pre-compiled package is not available. So we would push the following gems:

* concurrent-ruby-x.y.z.gem (compile C extension on install)
* concurrent-ruby-x.y.z-x86-linux.gem (Linux 32-bit)
* concurrent-ruby-x.y.z-x86_64-linux.gem (Linux 64-bit)
* concurrent-ruby-x.y.z-x86-mingw32.gem (Windows 32-bit)
* concurrent-ruby-x.y.z-x64-mingw32.gem (Windows 64-bit)

## Usage

In your code make sure you require the extension gem **before** you require the core gem:

```ruby
require 'concurrent_ext'
require 'concurrent'
```