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:
  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
    network_timeout: 5

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

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
  • 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.