RailsApp
RailsApp is a gem that provides a simple way to create a new Rails application with a pre-configured set of gems and settings, utilizing the Rails application templates feature.
The initial release of this gem is an opinionated template that includes the following dependencies and settings:
- Esbuild for JavaScript bundling
- RSpec for testing
- Code quality tools: Rubocop, Brakeman, and Bundler Audit
The initial release of this gem v.0.1.0 started with my personal preferences and a Rails template I have developed locally. The gem has evolved with more user options and configurations, with the goal in future releases to make a less opinionated template.
Installation
Install globally:
gem install rails_app
Usage
To bootstrap a new Rails application: rails_app
The user will be prompted to enter the name of the new Rails application, and the select the assets pipeline to use (propshaft or sprockets), and a styling option:
Also, you can select your database of choice:
The template will then create a new Rails application with the selected options.
Optional CLI Syntax
There is an additional syntax, available starting with release v. 0.7.0
, which allows you to use rails_app
very similarly to the rails new
command:
rails_app my_app -a propshaft --css bootstrap -d postgresql
I few things to note:
- the
app_name
must be first, just like withrails new
- the following arguments and flags must be separated by a space
-a propshaft
. Since, the parser ignores the flag and checks for the specific keywords only, you technically can use the follow:rails_app my_app propshaft bootstrap postgresql
.
If you use this syntax, the template will not prompt you the application name, and subsequent options will be preselected for you.
Right now this syntax only supports the following options:
- app name
- assets pipeline
- styling
- database
- skip spring
- skip action mailer
- skip action mailbox
- skip action text
- skip active storage
- skip action cable
More options will be added in future releases, if there is enough interest.
Configuration
NEW Starting with release v. 0.8.0
, you can save your preferred defaults to you users home directory (rails_aap-config.yml
).
If a file has been previously saved, you will be prompted if you want to use:
The CLI menu will then be bypassed and the application with be created with your presets.
Features
Authentication
Authentication is set up currently using Devise with the following options:
- User model with email and password
- The User model is named
User
but will be configurable in the future - A
admin
boolean field is added to the User model
Code Quality Tools
The template includes the following code quality tools:
- Rubocop using the
rubocop-rails-omakase
gem with a few custom settings in a provided.rubocop.yml
- Brakeman for security scanning
- Bundler Audit for checking for vulnerable gems
All of this tools can be run using the following command, which also will run the test suite: bin/ci
In addition, the template includes:
- the
annotate
gem to annotate models and factories with schema information - the
bullet
gem to help identify and diagnose N+1 queries
Testing
The template includes RSpec for testing, which includes pre configured:
- FactoryBot
- Faker
- Webmock
- VCR
- Simplecov
Development
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 the created tag, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/eclectic-coding/rails_app.
License
The gem is available as open source under the terms of the MIT License.