JTRailsToolbox
JTRailsToolbox contains a list of common libs used for Ruby On Rails development.
Installation
JTRailsToolbox is distributed as a gem, which is how it should be used in your app.
Include the gem in your Gemfile:
gem 'jt-rails-toolbox', '~> 2.0'
Create a jt-toolbox.yml file:
rails g jt:toolbox
A simple configuration of jt-toolbox.yml file:
production:
exception:
slack:
webhook_url: https://hooks.slack.com/services/XXXXXXXX
email_prefix: '[ERROR]'
sender_address: "Your website <error@example.com>"
exception_recipients:
- my_email_for_errors@example.com
files:
folder: upload
mail:
from: "Your website <contact@example.com>"
delivery_method: smtp
smtp_settings:
address: smtp.gmail.com
port: 587
domain: example.com
user_name: username
password: password
authentication: plain
enable_starttls_auto: true
hosts:
host: https://www.example.com
asset_host: https://asset.example.com
cdn_host: https://cdn.example.com
sidekiq:
redis_url: redis://localhost:6379/my_app
network_timeout: 5What's in it?
- http_accept_language, helps you detect the users preferred language, as sent by the "Accept-Language" HTTP header
- dotenv, load environment variables from .env file
- Exception Notification, send notifications when errors occur (email, slack)
- paperclip, manage file upload
- sidekiq, manage background jobs
- validates_email_format_of, who doesn't need to validate email format?
- validates_phone_format_of, validate phone against E.164 format
- rails-i18n Default locale data
- jt-rails-meta Manage HTML meta tags
- jt-rails-generator-user Generate a scaffold for user authentication
- jt-rails-tokenizable Generate tokens for ActiveRecord models
- jt-rails-address Helpers for addresses / geolocation management
- jt-rails-enum Enum in models
- validates_timeliness Date and time validation plugin for ActiveModel
- simplified configuration of hostnames and
ActionMailerwith a YAML file - some helper methods
http_accept_language
To install http_accept_language you just have to add a line in your ApplicationController
class ApplicationController < ActionController::Base
include HttpAcceptLanguage::AutoLocale
endDotenv
It's a good practice to not include credentials for third party services in your code. You can defined it in a .env file which I recommend to not include in your git repository.
Exception Notification
If exception is not set in jt-toolbox.yml file, Exception Notification is disabled.
In addition to the default ignored exceptions, the following exceptions are also muted:
ActionController::InvalidCrossOriginRequestActionController::InvalidAuthenticityToken
Paperclip
-
convert_optionsis set to-strip, which means all metadata of images are removed, this is used for reduced the weight of images. -
use_timestampis et tofalse, it's a good practice to have unique url for image and url without parameters, instead of using the timestamp we use the fingerprint of the image. More informations here. - the default fodler of images is
upload(in public folder)
Sidekiq
- configured for
ActiveJob - configured to send notification error with Exception Notification
- redis url is by default
redis://localhost:6379/0and the namespace is#{name of your application}for production and#{name of your application}-{environment}for others.
Warning
Don't forget to install redis server and to launch sidekiq with:
bundle exec sidekiq -e $RAILS_ENV -q default -q mailers -d -L log/sidekiq.log -P tmp/pids/sidekiq.pid
Hostname
-
hostis the hostname of your website, it's used for setting the host when you email -
asset_hostis the hostname of the assets server. By default equal tohost. -
cdn_hostis the hostname for serving uploaded files with paperclip. By default equal toasset_host.
It's a good practice to have a different domains for your web server and your file server (search "Cookieless Domain" on google for more informations).
ActionMailer
ActionMailer can be configured easily just with jt-toolbox.yml file.
Helper methods
google_anaytics_tag
It will add automatically in production environment the javascript code for Google Analytics.
You just have add at the end of your app/views/layouts/application.html.erb file:
<%= google_anaytics_tag 'UA-XXXXXXX-X' %>
Author
License
JTRailsToolbox is released under the MIT license. See the LICENSE file for more info.