Awesome
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: 5
What'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
ActionMailer
with 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
end
Dotenv
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::InvalidCrossOriginRequest
ActionController::InvalidAuthenticityToken
Paperclip
convert_options
is set to-strip
, which means all metadata of images are removed, this is used for reduced the weight of images.use_timestamp
is 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/0
and 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
host
is the hostname of your website, it's used for setting the host when you emailasset_host
is the hostname of the assets server. By default equal tohost
.cdn_host
is 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.