This collection of gems will spice up your rails and kick your rubies up a notch. Bam!
- Included Gems
- Adding a New Spicerack Gem
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install spicery
- AroundTheWorld allows you to easily wrap methods with custom logic on any class.
- Collectible provides an extensible framework for building array-like object collections.
- Conjunction provides a mechanism to loosely coupled a suite of cross-referenced objects.
- Directive provides a framework for easily building sane gem configuration classes.
Facet is a filterable, sortable, pageable, and Rails cacheable
- RedisHash provides a class that matches the Hash api by wrapping Redis.
RSpice is an
RSpecutility gem of custom matchers, shared contexts and examples.
- ShortCircuIt is an intelligent and feature rich memoization gem.
- Spicerack itself is a set of utility classes and concerns to write better Rails apps.
- Spicerack::Styleguide is Freshly's Rubocop Styleguide for Rails and RSpec.
- Technologic is a logging system built on an extensible event triggering system requiring minimal implementation.
- Tablesalt is full of miscellaneous helper modules, POROs, and more, that standardize common behavior.
After checking out the repo, run
bin/setup to install dependencies. Then, run
rake spec to run the tests. You can also run
bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run
bundle exec rake install. To release a new version, update the version number in
version.rb, and then run
bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the
.gem file to rubygems.org.
This Open Source is supported by Freshly, a company committed to quality code and delicious food.
We're basically always hiring.
Come join us in our New York City, Phoenix, or Minsk offices and write some awesome software!
Community support is always appreciated! Bug reports and pull requests are welcome on GitHub.
Adding a New Spicerack Gem
To add a new gem to the spicerack:
cd spicerack bundle gem GEM cd GEM rm -rf .git rm .travis.yml rm .gitignore rm Gemfile chmod 0664 lib/GEM/version.rb
Here's a checklist of some other tasks (see another gem as reference):
⚠️ Reminder: Add the magic comment to the top of all the generated ruby files!
- Create a
CHANGELOG.mdand make the first entry
- Add to the Included Gems section
lib/GEM/version.rbto add the comment line
README.mdto add badges, update development & contributor sections, generate ToC
- Copy over
GEM/Rakefilefrom any other gem
- Remove the failing spec in
spec/GEM_spec.rband replace it with the rspice shared example
spec/spec_helper.rbto use the shared spec helper
- Remove the default error in
GEM.gemspecand clean up the boilerplate
Then in the base directory:
Rakefileto add GEM to the
- Add a require for your new gem into:
lib/spicerack.rbif its necessary for a Spicerack Utility object
- Add the new gem into
- Increment the version in
rake spicerack:update_all_versionsto the correct version
🚨 Don't forget to run
bundle so the
Gemfile.lock gets updated!!
Next, push the code up and open a new pull request.
Once that gets merged into main, run:
rake spicerack:release_allto claim the new gem name with the empty build
💁 Please remember to keep all the
CHANGELOGS up to date!
This is a monorepo which contains several gems designed to build and release together.
To perform release, set the new canonical version in the .4.4
SPICERACK_VERSION file then run the task.
echo "0.1.0" > SPICERACK_VERSION rake spicerack:update_all_versions rake spicerack:update_all_changelogs # Manually add any changes to the necessary changelogs git commit -am "Updating to version 0.1.0 for release" rake spicerack:release_all
This will build and release all dependent gems at the same time.
main branch should be released!
Major.Minor.Patch version control.
Versions should be increased according to the following rules:
- Major Version for non-backwards compatible changes.
- Minor Version for new gems or important features.
- Patch Version for bug fixes, enhancements, and optimizations.
The gem is available as open source under the terms of the MIT License.