Skip to content

Instantly share code, notes, and snippets.

@ctrochalakis
Forked from leahneukirchen/RPS-SPEC
Created April 10, 2010 06:45
Show Gist options
  • Save ctrochalakis/361878 to your computer and use it in GitHub Desktop.
Save ctrochalakis/361878 to your computer and use it in GitHub Desktop.
= Ruby Packaging Standard
The aim of this document is to specify a common structure of how a
Ruby package distributed as source (that is, but not limited to,
development directories, version-controlled repositories, .tar.gz,
Gems, ...) should conform to.
(See RFC 2119 for use of MUST, SHOULD, SHALL.)
== Library files
Library code MUST reside in lib/.
Libraries SHOULD use a directory as namespace, e.g. lib/foo.rb and lib/foo/**.
Libraries SHOULD NOT require code of the project that are outside of lib/.
Libraries MUST not require 'rubygems' or modify the $LOAD_PATH.
Ruby library files MUST end with .rb.
Library files SHOULD be installed with mode 0644.
== Executables
Executables MUST reside in bin/.
Ruby executables SHOULD have a shebang line using env:
#!/usr/bin/env ruby
Executables SHOULD NOT require code of the project that are outside of lib/.
Executables SHOULD NOT require 'rubygems' or modify the $LOAD_PATH.
Executable files SHOULD NOT end with .rb.
Executable files SHOULD be installed with mode 0775.
== Extensions
Extensions are directories which contain a extconf.rb.
Extensions SHOULD reside in ext/.
Extensions SHOULD be buildable with "ruby extconf.rb; make".
XXX
== Tests
Tests SHOULD reside in test/ or spec/.
== History
09apr2010: First initial draft.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment