<commit_before># Motivation
To achieve the higher level of modularity, Celluloid was split into small subprojects that naturally depend on each other.
Bundler can't handle circular dependencies properly and currently the only workaround is to list all celluloid-ish dependencies in both Gemfile and gemspec.
This is errorprone and not efficient. Thus it was required to put some better workaround in place.

# Configuration
The list of gems and their properties are now defined in `.celluloid.yml`.
For example:
```yml
gems:
  celluloid:
    bundler:
      github: celluloid/celluloid
      branch: 0.17.0-prerelease
  celluloid-extras:
    bundler:
      github: celluloid/celluloid-extras
  celluloid-supervision:
    bundler:
      github: celluloid/celluloid-supervision
  celluloid-pool:
    bundler:
      github: celluloid/celluloid-pool
  celluloid-fsm:
    bundler:
      github: celluloid/celluloid-fsm
  timers:
    gemspec:
       - ~> 4.0.0
    bundler:
      github: celluloid/timers
```

# Modification of gemspec
It's only required to change few lines:
```ruby
require_relative 'culture/gems/gems'

Gem::Specification.new do |gem|
  gem.name         = 'celluloid-xxx'

  # credentials and non-celluloid dependencies naturally go here

  # include celluloid gems
  Celluloid::Gems::gemspec gem
end

```

# Modification of Gemfile
Same as in gemspec you have to add only few bits:
```ruby
require_relative 'culture/gems/gems'

Celluloid::Gems::bundler self

# other gems listed below
```<commit_msg>gems: do not use require_relative as jruby does not support it<commit_after># Motivation
To achieve the higher level of modularity, Celluloid was split into small subprojects that naturally depend on each other.
Bundler can't handle circular dependencies properly and currently the only workaround is to list all celluloid-ish dependencies in both Gemfile and gemspec.
This is errorprone and not efficient. Thus it was required to put some better workaround in place.

# Configuration
The list of gems and their properties are now defined in `.celluloid.yml`.
For example:
```yml
gems:
  celluloid:
    bundler:
      github: celluloid/celluloid
      branch: 0.17.0-prerelease
  celluloid-extras:
    bundler:
      github: celluloid/celluloid-extras
  celluloid-supervision:
    bundler:
      github: celluloid/celluloid-supervision
  celluloid-pool:
    bundler:
      github: celluloid/celluloid-pool
  celluloid-fsm:
    bundler:
      github: celluloid/celluloid-fsm
  timers:
    gemspec:
       - ~> 4.0.0
    bundler:
      github: celluloid/timers
```

# Modification of gemspec
It's only required to change few lines:
```ruby
$:.push File.expand_path("../", __FILE__)
require 'culture/gems/gems'

Gem::Specification.new do |gem|
  gem.name         = 'celluloid-xxx'

  # credentials and non-celluloid dependencies naturally go here

  # include celluloid gems
  Celluloid::Gems::gemspec gem
end

```

# Modification of Gemfile
Same as in gemspec you have to add only few bits:
```ruby
$:.push File.expand_path("../", __FILE__)
require 'culture/gems/gems'

Celluloid::Gems::bundler self

# other gems listed below
```
{'fraction_non_alphanumeric': 0.08054759630690862, 'fraction_numerical': 0.004457179242279528, 'mean_word_length': 3.7106446776611692, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6908820', 'n_tokens_mistral': 1043, 'n_tokens_neox': 964, 'n_words': 334}