Codependency
Codependency is a simple comment-based dependency graph that you can use on arbitrary files. The comment syntax should look familiar to anyone who has used Sprockets, but is not nearly as robust (yet).
Installation
Add this line to your application's Gemfile:
gem 'codependency'
And then execute:
$ bundle
Or install it yourself as:
$ gem install codependency
Usage
Say you have two files, bar.rb
and foo.rb
. bar
comes before foo
in a
natural naming scheme, but bar
has a dependency on foo
. We can express
this using a simple comment syntax at the head of the file like this:
bar.rb:
#= require foo
class Bar
end
foo.rb:
class Foo
end
Then, we create a dependency graph to determine the order in which the files might need to be loaded, inserted, or compiled:
graph = Codependency::Graph.new
graph.path << '.' # works like PATH, append search paths for this graph
graph << 'bar' # adds a file to this graph, finds its dependencies recursively
graph.files # returns a topologically sorted list of relative pathnames
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request