README.md
[![Gem Version](https://badge.fury.io/rb/generic_gem.svg)](https://badge.fury.io/rb/generic_gem)
[![Dependency Status](https://gemnasium.com/jhsu802701/generic_gem.svg)](https://gemnasium.com/jhsu802701/generic_gem)
[![Build Status](https://travis-ci.org/jhsu802701/generic_gem.svg?branch=master)](https://travis-ci.org/jhsu802701/generic_gem)
[![Code Climate](https://codeclimate.com/github/jhsu802701/generic_gem/badges/gpa.svg)](https://codeclimate.com/github/jhsu802701/generic_gem)
[![Test Coverage](https://codeclimate.com/github/jhsu802701/generic_gem/badges/coverage.svg)](https://codeclimate.com/github/jhsu802701/generic_gem/coverage)
# GenericGem
Welcome to GenericGem! The purpose of this gem is to streamline the process of creating a gem with Bundler.
## What's the point?
I HATE having to jump through hoops just to take care of the generic details that are necessary for all or most Ruby gems. Every time I have created a Ruby gem, there were numerous details that I had to remember to do. The generic aspects of a gem are fully automated to minimize the drudgery so that you have more time available to work on the capabilities that make your Ruby gem unique.
## Prerequisites for Understanding GenericGem
You should be familiar with the process of building a Ruby gem. Some good resources are:
https://quickleft.com/blog/engineering-lunch-series-step-by-step-guide-to-building-your-first-ruby-gem/
http://rakeroutes.com/blog/lets-write-a-gem-part-one/
http://rakeroutes.com/blog/lets-write-a-gem-part-two/
http://guides.rubygems.org/make-your-own-gem/
## How does GenericGem work?
GenericGem uses the bundle command to begin the process of creating a gem. Additionally, it adds a number of enhancements needed by all or most Ruby gems. These changes are:
* The Code of Conduct and MIT license are automatically included. (It's easier to remove them than to remember to add them.)
* Your name is automatically filled in the file LICENSE.txt and in the gemspec file.
* The gem description in the gemspec file is "GENERIC DESCRIPTION" to enable the "rake install" command.
* The gem summary in the gemspec file is "GENERIC SUMMARY" to enable the "rake install" command.
* Your email address is automatically provided in the gemspec file.
* RSpec testing is automatically included and installed. Your gem will pass the initial meaningless tests.
* The version number is set to 0.0.0.
* The bin/console and bin/setup script files are made executable.
* A working Rakefile is provided.
* The gem_test.sh script is added to the gem's root directory. This is the 1-step test procedure that executes the bin/setup script (which includes the "bundle install" command) AND the command "rake". Just enter the command "sh gem_test.sh" command to start the process. When you clone your gem's source code onto a machine with a fresh Ruby on Rails installation, running the gem_test.sh script should confirm that all of the details needed to make your gem work are complete.
* The .gitignore file includes .DS_Store and the directories tmp and tmp*.
* Instructions on using the gem_test.sh and gem_console.sh scripts are included in the README.md file.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'generic_gem'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install generic_gem
## Usage
Just enter the command "generic_gem". When prompted, provide the name of your new gem, your name, and your email address. Your new gem will be automatically created AND tested. The initial meaningless tests will pass.
## Development
### Testing this gem
After cloning this source code, cd your way into this directory and enter the command `sh gem_test.sh`. Note that this script also runs the code_test.sh and gem_install.sh scripts.
### Testing this gem's source code
Enter the command `sh code_test.sh` to test the quality of the source code.
### Running this gem in irb
Enter the command `sh gem_console.sh`.
### Installing this gem
Enter the command `sh gem_install.sh`.
## Contributing
1. Fork it ( https://github.com/[my-github-username]/generic_gem/fork )
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 a new Pull Request