JTRailsToolbox

Gem Version

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:
   airbrake:
    project_host: "https://errbit.example.com"
    project_id: 1
    project_key: 12345678901234567890
   exception:
     slack_webhook_url: https://hooks.slack.com/services/XXXXXXXX
     email_prefix: '[ERROR]'
     sender_address: "Your website <[email protected]>"
     exception_recipients:
      - [email protected]
   files:
     folder: upload
   mail:
     from: "Your website <[email protected]>"
     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

What's in it?

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

Airbrake

If airbrake is not set in jt-toolbox.yml file, Airbrake is disabled.

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 to false, 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 or Airbrake
  • 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 email
  • asset_host is the hostname of the assets server. By default equal to host.
  • cdn_host is the hostname for serving uploaded files with paperclip. By default equal to asset_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.