Skip to content
This repository has been archived by the owner on Jul 30, 2022. It is now read-only.

aidistan-archives/ruby-biotcm

Repository files navigation

Ruby Gem: BioTCM

Gem Version Build Status Docs Status

BioTCM is designed as a base gem to build advanced applications on Bioinformatics.

Getting Started

Install BioTCM from the command prompt:

$ gem install biotcm

We believe in self-documentation coding, so you could find all APIs, examples and guides you need in the documents.

Getting Involved

What can I do?

Feel free to send pull requests. You could help us

How should I do?

We develop this gem under some philosophies and some styles. Please follow the style while you are making amazing things.

Design Philosophies

  • self-explanatory coding
  • Do not Repeat Yourself (DRY)
  • Convention over Configuration (CoC)

Coding Style

Practically we follow ruby-style-guide, a community-driven ruby coding style guide, and use Rubocop to check it.

For Atom users, we strongly recommend to use linter-rubocop package to lint Ruby code on the fly.

Documentation

We write YARD document within codes to generate API docs and example usages for users and use (part of) these sections to describe a class or module.

  • Overview (default) : briefly describe the purpose and the usage
  • Requirement
  • Example Usage
  • Other Supplementary : such as the brief introduction of the database (this subtitle could be changed)
  • Reference
Class/Module Structure

For classes & modules, we

  • define VERSION for each script or database class
  • write the changes in the commit message and HISTORY.md
  • use following structure in module/class definitions
    • Special handling, such as autoloader
    • Extends and includes
    • Constants
    • Attribute macros and other macros
    • Public class methods
    • Public instance methods
    • Protected and private methods
    • Special handling, such as overwriting (to escape YARD documenting)

Test Style

Having no explicit map of our gem, we add new Class or Module when we need it, which make the popular test suite RSepc doesn't suit our need quite well. In such case, we choose to write our tests with minitest gem.

It's hard to decide when to test but better to write some tests for you module/class to make others understand the design purpose more easily.

License

Copyright (c) 2014-2019 BioTCM group under the MIT license.