Nifty Services comes to solve your Ruby applications(including but not limited to Rails, Grape, Sinatra, and plain Ruby) code mess with simplicity in mind!
NiftyServices provides a very nifty, simple & clear API to organize and reuse your application domain logic in plain Ruby Services Objects turning your codebase in a very extensible, standardized and reusable components.
Most important: You and your team win what I consider the best benefit when using Nifty Services: Easily and scalable maintained code.
Believe me, you'll fall in
This gem was designed and conventioned to be used specially with Web API applications, but this is just a convention, you can use it even with shoes (for desktop apps) applications if you want, for example.
📖 I know, this README is very huge
As you can see, this README needs some time to be full read, but is very difficulty to explain all things, concepts and philosophy of this gem without writing a lot, we can't escape this :(
But remember one thing: This is a tecnical documentation, not a blog post, I'm pretty sure you can take about 30 minutes + some cups of
Update: Now the documentation was separated in Wiki format. So it's a lot easier for reading.
Below, some very importants things about conventions for this cute
Each service class is responsible for perform exactly one single task, say goodbye for code (most important: logic) duplication in your code. Beside this, one of the aim of NiftyServices is to provide a very standardized code architecture, allowing developers to quickly develop and implement new features keeping the application codebase organized and stable.
🔨 Common and single-run execution method
Each service object must respond to
#execute instance method, which is allowed to be called just one time per instance.
#execute method is responsible to perform code validation(parameter validation, access level control), execution(send mail, register users) and fire callbacks so you can execute hooks actions after/before success or execution fail.
📦 Rich Service Objects
When dealing with services objects, you will get a very rich objects to work with, forgot about getting only
true or false return values, one of the main purpose of objects it's to keep your code domain logic accessible and reusable, so your application can really take the best approach when responding to actions.
🔒 Security - Access Control Level
Think and implement security rules from the first minutes of live in your applications! NiftyServices strongly rely on Access Control Level(ACL) to perform actions, in other words, you will only allow authorized users to read, create, update or delete records in your database!
Now you know the basic concepts and philosophy of
NiftyServices, lets start working with this candy library?
Table of Contents
- Dafuck is this gem
- Services Objects API
- CRUD Services
- Create - BaseCreateService
- Update - BaseUpdateService
- Delete - BaseDeleteService
- I18n Setup
- Web Frameworks integration
- Base Services Class Markups
- CLI Generators
- License - MIT
Add this line to your application's Gemfile:
gem 'nifty_services', '~> 0.0.5'
And then execute:
Or install it yourself as:
$ gem install nifty_services
◽️Create CLI Generators ◽️Beter documentation for
◽️Write Sample Applications ◽️Write better tests for all
◽️Write better tests for
◽️Write tests for Configuration ◽️Write tests for Callbacks
After checking out the repo, run
bin/setup to install dependencies. Then, run
rake rspec to run the tests. You can also run
bin/console for an interactive prompt that will allow you to experiment.
To install this gem(
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.
Bug reports and pull requests are welcome on GitHub at http://github.com/fidelisrafael/nifty_services. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The gem is available as open source under the terms of the MIT License.