Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/agilecreativity/gem_bootstrap

Bootstrap the creation of ruby gem with sensible default so that we don't have to start from scratch.
https://github.com/agilecreativity/gem_bootstrap

bootstrap command-line generator ruby rubygems starter-template thor

Last synced: about 2 months ago
JSON representation

Bootstrap the creation of ruby gem with sensible default so that we don't have to start from scratch.

Awesome Lists containing this project

README

        

## gem_bootstrap

[![Gem Version](https://badge.fury.io/rb/gem_bootstrap.svg)][gem]
[![Dependency Status](https://gemnasium.com/agilecreativity/gem_bootstrap.png)][gemnasium]
[![Code Climate](https://codeclimate.com/github/agilecreativity/gem_bootstrap.png)][codeclimate]

[gem]: http://badge.fury.io/rb/gem_bootstrap)
[gemnasium]: https://gemnasium.com/agilecreativity/gem_bootstrap
[codeclimate]: https://codeclimate.com/github/agilecreativity/gem_bootstrap

Generate the starting template for creating ruby gem in ruby in just one command.

First install the gem

```sh
gem install gem_bootstrap
```

then generate the new gem

```sh
gem_bootstrap awesome_gem --github-id awesome_developer --email [email protected] --author 'John Guru II'
```

or the short version

```sh
gem_bootstrap awesome_gem -g awesome_developer -e [email protected] -a 'John Guru II'
```

rather use rspec instead of the default minitest

```sh
gem_bootstrap awesome_gem -g awesome_developer -e [email protected] -a 'John Guru II' -t rspec
```

Note: this gem will be release following the [Semantic Versioning][] start from `0.1.0`

### Features:

- Test framework using [Minitest][] or [Rspec][]
- Document with [Yard][]
- Style check with [Rubocop][]
- Debug with [Pry][]
- TDD/BDD with [Guard][]
- Initial git commit with [Grit] gem
- Build on top of the most popular [Thor][] framework
- Give you simple working structure that you can build upon but not dictate on
how you should do it
- Templates files are customizable to suite your specific need

### Requirements

#### Mandatory

- [Git][] the free and opensource distributed version control system.

### Optional

- Valid [Github][] account so that you can share your awesome gem with the community.

### Installation

Install the ruby gem

```sh
gem install gem_bootstrap
```

Then just run the `gem_bootstrap` without any argument for list of help

```
# Usage/Synopsis:
gem_bootstrap [GEM_NAME] -g, --github-id [GITHUB_ID] -e, --email [EMAIL] -a, --author [AUTHOR] --test-framework [FRAMEWORK]

# Create a gem name 'awesome_gem' with minitest as a testing framework (default)
gem_bootstrap awesome_gem -g awesome_developer -e [email protected] -a 'John Guru II'

# Create a gem name 'awesome_gem' with rspec as a testing framework
gem_bootstrap awesome_gem -g awesome_developer -e [email protected] -a 'John Guru II' -t rspec
```

### Basic Usage

- For testing with [Minitest][] (default test framework)

```
gem_bootstrap awesome_gem --github-id awesome_developer --email [email protected] --author 'John Guru II'
```

Should see the output like:

```
create awesome_gem/README.md
create awesome_gem/CHANGELOG.md
create awesome_gem/.yardopts
create awesome_gem/.gitignore
create awesome_gem/Gemfile
create awesome_gem/.rubocop.yml
create awesome_gem/bin/awesome_gem
create awesome_gem/lib/awesome_gem.rb
create awesome_gem/lib/awesome_gem/version.rb
create awesome_gem/lib/awesome_gem/cli.rb
create awesome_gem/lib/awesome_gem/awesome_gem.rb
create awesome_gem/Rakefile
create awesome_gem/Guardfile
create awesome_gem/awesome_gem.gemspec
create awesome_gem/test/test_helper.rb
create awesome_gem/test/lib/awesome_gem/test_awesome_gem.rb
create awesome_gem/LICENSE
```

- For testing with [Rspec][]

```
gem_bootstrap awesome_gem --github-id awesome_developer --email [email protected] --author 'John Guru II' --test-framework rspec
```

Should see the output like:

```
create awesome_gem/README.md
create awesome_gem/CHANGELOG.md
create awesome_gem/.yardopts
create awesome_gem/.gitignore
create awesome_gem/Gemfile
create awesome_gem/.rubocop.yml
create awesome_gem/bin/awesome_gem
create awesome_gem/lib/awesome_gem.rb
create awesome_gem/lib/awesome_gem/version.rb
create awesome_gem/lib/awesome_gem/cli.rb
create awesome_gem/lib/awesome_gem/awesome_gem.rb
create awesome_gem/Rakefile
create awesome_gem/Guardfile
create awesome_gem/awesome_gem.gemspec
create awesome_gem/spec/spec_helper.rb
create awesome_gem/spec/lib/awesome_gem/awesome_gem_spec.rb
create awesome_gem/LICENSE
```

```sh
# Change directory to the generated gem
cd awesome_gem

# Build the gem
bundle

# Run the default rake task (minitest and rubocop)
rake

# Install the gem to your local system
rake install

# You should have the basic command line that you can run like
awesome_gem
```

- Now you are ready to add your own logic/implementation in `./awesome_gem/lib/awesome_gem.rb`

### Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

[Git]: http://git-scm.com/
[github]: https://github.com/
[Grit]: https://github.com/mojombo/grit
[Minitest]: https://github.com/seattlerb/minitest
[Rspec]: https://github.com/rspec/rspec
[Thor]: https://github.com/erikhuda/thor
[Yard]: https://github.com/lsegal/yard
[Rubocop]: https://github.com/bbatsov/rubocop
[Pry]: https://github.com/pry/pry
[Guard]: https://github.com/guard/guard
[Semantic Versioning]: http://semver.org