Template to get rails apps started
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Thomas 56106e9514 remove testing of local env 6 months ago
..
app split layout with the view 7 months ago
bin remove testing of local env 6 months ago
config initial commit for lite 7 months ago
lib initial commit for lite 7 months ago
semaphore initial commit for lite 7 months ago
test initial commit for lite 7 months ago
Gemfile.tt initial commit for lite 7 months ago
LICENSE initial commit for lite 7 months ago
Procfile initial commit for lite 7 months ago
README.md fix readme title 7 months ago
README.md.tt Fix start up steps list 7 months ago
Rakefile.rb initial commit for lite 7 months ago
config.ru.rb initial commit for lite 7 months ago
docker-compose.yml initial commit for lite 7 months ago
editorconfig initial commit for lite 7 months ago
eslintrc.js initial commit for lite 7 months ago
example.env.tt initial commit for lite 7 months ago
overcommit.yml initial commit for lite 7 months ago
package.json initial commit for lite 7 months ago
prettierrc.js initial commit for lite 7 months ago
rubocop.yml.tt initial commit for lite 7 months ago
ruby-version.tt initial commit for lite 7 months ago
stylelintrc.js initial commit for lite 7 months ago
template.rb split tempdir init from source path to let us clone in peace 6 months ago

README.md

CloudPier22/rails-template

Description

This is a fork

This is based on the excellent work from https://github.com/mattbrictson/rails-template and aimed at working with Rails 7 projects.

For older versions of Rails, please refer to the original repository and use these branches:

These will give you a good head start albeit with some different choices for some parts.

What it is

This is the application template that I recommend for Rails 7 projects. I've assembled this template over the years to include best-practices, tweaks, documentation, and personal preferences, while still generally adhering to the "Rails way".

Requirements

This template currently works with:

  • Rails 7.0.x
  • Bundler 2.x
  • PostgreSQL

If you need help setting up a Ruby development environment, check out my Rails OS X Setup Guide.

Installation

Optional.

To make this the default Rails application template on your system, create a ~/.railsrc file with these contents:

-d postgresql
-m https://git.imfiny.com/OpenSource/rails-templates/raw/branch/trunk/lite/template.rb

Usage

This template assumes you will store your project in a remote git repository (e.g. GitHub) and that you will deploy to a production environment. It will prompt you for this information in order to pre-configure your app, so be ready to provide:

  1. The git URL of your (freshly created and empty) GitHub repository
  2. The hostname of your production server

To generate a Rails application using this template, pass the -m option to rails new, like this:

rails new blog \
  -d postgresql \
  -m https://git.imfiny.com/OpenSource/rails-templates/raw/branch/trunk/lite/template.rb

Remember that options must go after the name of the application. The only database supported by this template is postgresql.

If you’ve installed this template as your default (using ~/.railsrc as described above), then all you have to do is run:

rails new blog

What does it do?

The template will perform the following steps:

  1. Generate your application files and directories
  2. Create the development and test databases
  3. Commit everything to git
  4. Push the project to the remote git repository you specified

What is included?

Optional support for vite_rails

Add the --javascript vite option to the rails new command to get started with Vite! [Vite][vite] is an easy to use alternative to Webpack(er), and much more powerful than the standard import map and css/jsbundling-rails options that are built into Rails.

  • Frontend code (JS, CSS, images) will be placed in app/frontend/
  • Run yarn start to start the development server with hot reloading
  • SCSS will be used for styles (the --css option will be ignored)

If you don't specify --javascript vite, then this template will use the standard Rails 7 behavior.

These gems are added to the standard Rails stack

  • Core
    • active_type – for building simple and effective form/service objects
    • sidekiq – Redis-based job queue implementation for Active Job
  • Configuration
    • dotenv – for local configuration
  • Style
    • [Bulma][] - a nice, simple yet powerful css framework
  • Utilities
    • annotate – auto-generates schema documentation
    • amazing_print – try ap instead of puts
    • rubocop – enforces Ruby code style
    • [flay][] - dig deeper into code style and code structure
  • Security
  • Testing
    • [rspec][] – A good basis for tests.

Postmark

I like to use Postmark for transactional email, and so I've included the postmark-rails gem and configured it in environments/production.rb. Make sure to sign up for a Postmark account to get an API key, or switch to your own preferred email provider before deploying your app.

Other tweaks that patch over some Rails shortcomings

  • A much-improved bin/setup script
  • Log rotation so that development and test Rails logs don’t grow out of control

How does it work?

This project works by hooking into the standard Rails application templates system, with some caveats. The entry point is the template.rb file in the root of this repository.

Normally, Rails only allows a single file to be specified as an application template (i.e. using the -m <URL> option). To work around this limitation, the first step this template performs is a git clone of the mattbrictson/rails-template repository to a local temporary directory.

This temporary directory is then added to the source_paths of the Rails generator system, allowing all of its ERb templates and files to be referenced when the application template script is evaluated.

Rails generators are very lightly documented; what you’ll find is that most of the heavy lifting is done by Thor. The most common methods used by this template are Thor’s copy_file, template, and gsub_file. You can dig into the well-organized and well-documented Thor source code to learn more.