Boosting Your Rails Development Workflow

Ahmed Refaat Tawfik
Ahmed Refaat Tawfik
Share
rails
This article is mainly for folks that are new to Rails. Most established Rails developers already have a beloved workflow. If you’re new or need a boost to your daily Rails productivity, keep reading! Let’s explore few gems and scripts that will help you get things done faster and better.
A quick tip about installing Ruby and Rails for OS X and Windows machines: Try railsinstaller. It will get you up and running in few minutes without any fuss.

Gems You Must Install

Here are five scripts/gems you must install before starting work with Rails. You have no choice, I’m sorry! :) 1. oh_my_zsh script 2. laptop script 3. awesome_print gem 4. zeus gem 5. guard-livereload gem

1. oh_my_zsh

Before installing oh_my_zsh you should have zsh
installed already. oh_my_zsh is distinguished by it’s Themes which are cool and easy to customize, Plugins, and Auto Complete helpers that will save you loads of time. You’ll notice, also, that oh-my-zsh
asks you to install updates periodically, which is a good thing.

Installing

As I’ve mentioned, you should have zsh shell already installed. Then, run this command to make it the default shell: chsh -s /bin/zsh And run this line to download it install it:
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

Using

To change the theme, open up the ~/.zshrc
in a text editor and set the value of ZSH_THEME to the name of the theme. Here’s the list of all available themes. You should test drive a few and find one that works. Also, if you do presentations, you may want to find one that looks good on a projector (hint: white on black is bad…) To add/remove plug-ins, open the ~/.zshrc file and add/remove the plugin name from the plugins array. Here’s the list of all available plugins
. You’ll find the full source of oh-my-zsh on your machine under ~/.oh-my-zsh.

2. laptop

This script is for OS X machines only. Quoting the from laptop github page:
Laptop is a script to set up a Mac OS X laptop for Rails development.
To install this script, you have to install gcc, set zsh as your default shell(we’ve done that already) and then run this line:
zsh <(curl -s https://raw.github.com/thoughtbot/laptop/master/mac)
This link lists of all the stuff that will be installed. We’ll highlight a couple of them: – Heroku Toolbelt which we need to work with apps on Heroku – Homebrew the beloved package manager. You can browse packages online through http://braumeister.org/RVM
which it will be installed already if you’ve used railsinstaller

3. awesome_print

The first thought that might come to you when you run any code in the rails console for the first time, is “How anyone can read this?!” You are right, it’s really hard, especially if the result is complex or you’ve retrieved a large number of objects. Here comes awesome_print to save the day.

Installing

To install awesome_print
run this command:
gem install awesome_print
To use it with rails you’ll have to add it your Gemfile, and bundle
group :development do
  gem 'awesome_print'
end

Using

If you want awesome_print
to be running by default in irb or the console, add the two lines to your .irbrc shown here. Otherwise, you could prepend the line in the console with ap
require "awesome_print"
ap object, options = {}

Example

This is an example of awesome_print output:
# {

               :id => 1,
          :user_id => 5,
      :assigned_to => 7,
             :name => "Hayes-DuBuque",
           :access => "Public",
          :website => "http://www.hayesdubuque.com",
  :toll_free_phone => "1-800-932-6571",
            :phone => "(111)549-5002",
              :fax => "(349)415-2266",
       :deleted_at => nil,
       :created_at => Sat, 06 Mar 2010 09:46:10 UTC +00:00,
       :updated_at => Sat, 06 Mar 2010 16:33:10 UTC +00:00,
            :email => "info@hayesdubuque.com",
  :background_info => nil
}

4. zeus

While you are working on a Rails project, will need to restart your server, run various commands like console, rake
, generate, rspec and test. This can take a bit of time, especially when your project grows and the number of classes and tests increase. That’s why you need zeus, which preloads your Rails app so all your tasks will run much more quickly.

Installing

To install zeus run this command, or you could add it to your Gemfile, and bundle
gem install zeus

Using

All you have to do is navigate to your Rails project and run zeus start
zeus will take few seconds to start and then it will list all available commands. You’ll need to open a new shell window and run other commands such as
zeus s # to start rails server
zeus c # to start rails console
zeus test # to run tests
zeus generate model  # go generate modle

5. guard-livereload

Guard is a tool to easily handle events on file system modifications. guard-livereload
is one of a long list of gems that depends on Guard, but is customized for a specific kind of file structure and application. For instance, guard-rspec monitors rspec files and launches rspec to run the specs when they change. guard-livereload does a similar job by reloading your Rails view as it’s changes. It’s like changing them from your browser Developer tools, so you’ll see your view changes as you go.

Install

You’ll have to install guard gem first and guard-livereload by running this gem install guard gem install guard-livereload or you could add them to your gem file:
group :development do
  gem 'guard'
  gem 'guard-livereload'
end
and then run this, which will create the Guardfile that will contain the configuration for guard:
bundle
guard init
guard init livereload
The last part of installing guard is to add a couple of gems to your Gemfile. This is for Efficient Filesystem Handling, and you may just need to add one of them depending on your OS.
group :development do
  gem 'rb-inotify', :require => false # for OS X
  gem 'rb-fsevent', :require => false # for Linux
  gem 'rb-fchange', :require => false # for Windows
end
For guard-livereload, you’ll need to install the rack-livereload gem to see your changes live in the browser: gem install rack-livereload and add this line to config/environments/development.rb
MyApp::Application.configure do
  config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload)
end

Debugging

1. better_errors gem 2. rails_panel gem 3. sextant gem 4. quiet_assets gem

1. better_errors

better_errors replaces the standard Rails error page with a MUCH better one. It even adds the awesome feature of a live REPL in the browser! It’s relatively new, but developers are picking it up so fast because the difference between default error page and the better_errors is huge.

Install

Add the gem to your Gemfile. If you want to use the live REPL, you need to add the binding_of_caller gem also and then bundle
group :development do
  gem "better_errors"
  gem "binding_of_caller"
end

Using

Any time your Rails app throws an error you’ll see a better error page. In that page, you’ll find a full stack trace and all the local and global variables associated with the request. If you have asynchronous requests, you can trace the last error by navigatint to “0.0.0.0:3000/__better_errors”. You can even configure the gem to open the source in your editor with the BetterErrors.editor
method.

2. rails_panel

This gem requires a specific Google Chrome extension. The gem is meta_request and the Chrome extension is rails_panel.
RailsPanel is a Chrome extension for Rails development that will end your tailing of development.log. Have all the information about your Rails app requests in the browser – in the Developer Tools panel. Provides insight to db/rendering/total times, parameter list, rendered views and more.

Install

Add the gem to your Gemfile and bundle. Also, here’s the Google Chrome extension
group :development do
  gem 'meta_request', '0.2.1'
end

3. sextant

This gem was merged into rails 4.0 under 0.0.0.0:3000/rails/info/routes
. However, if you are developing a rails 3.2+ app, you’ll have to install the gem.

Install

Add the gem to your Gemfile and bundle
group :development do
  gem 'sextant'
end

Using

Navigate to 0.0.0.0:3000/rails/routes
and you’ll see the output of the command rake routes in your browser.

4. quiet_assets

Tracing the server logs is a bit difficult when it logs all of the asset requests. Most of the time, you don’t care about these requests, so this gem hides the assets logs. This declutters the logs immensely and lets you focus on the requests that are important.

Install

Add the gem to your Gemfile and bundle
group :development do
  gem 'quiet_assets'
end

Front-end and JavaScript MVC Frameworks

This section will give you an overview about the gems that wrap some frameworks and serve them through the Rails assets pipeline. I won’t cover the details of each framework or how to use them or which is better. I want to focus on how these gems help things come together really fast in Rails. 1. twitter_bootstrap gem 2. backbone-rails

1. twitter_bootstrap

This is not an official gem from the twitter bootstrap maintainers, but it a popular one and it works great.
Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites. It includes base CSS and HTML for typography, forms, buttons, tables, grids, navigation, and more.

Install

Add the gems to your Gemfile and bundle
group :development do
  gem "twitter-bootstrap-rails"
end
To install the bootstrap to your project run rails generate bootstrap:install static

Using

To add the layout of bootstrap: rails g bootstrap:layout application fixed You can also add a theme to a specific resource by running:
rails g scaffold Post title:string description:text
rake db:migrate
rails g bootstrap:themed Posts

2. backbone-rails

This gem helps you setup backbone.js in your Rails projects. It creates the backbone.js file structure and serves the libraries via the asset pipeline.
Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.

Install

Add the gems to your Gemfile and bundle
group :development do
  gem "rails-backbone"
end
Then run the bootstrapper: rails g backbone:install

Using

The gem provides three generators to help get started with backbone.js
Model Generator
rails g backbone:model
Routers Generator
rails g backbone:router
Scaffolding Generator
rails g backbone:scaffold

Authentication and Administration

Most of your apps will need Authentication and some of them might need Administration. We all know how essential and sensitive these tasks are, so it’s better to use well-tested gems to handle them. 1. devise gem 2. active_admin gem 3. Rails Composer

1. devise

devise is a very popular gem in the Rails community and it really requirees no introduction.

Install

Add the gem to your Gemfile and bundle
group :development do
  gem "devise"
end
To install devise
in your Rails project: rails generate devise:install

Using

Run the following command with the appropriate model name to generate a devise model. This model will have all the authentication features that devise provides. rails generate devise MODEL You should add this line inside any controller that you want to be accessed only by authenticated users, or add it to your ApplicationContrller to require authentication throughout your app: before_filter :authenticate_user!

3. active_admin

active_admin is one of the best administration gems with a very good UI and documentation. here’s a demo site using active_admin
Active Admin is a framework for creating administration style interfaces. It abstracts common business application patterns to make it simple for developers to implement beautiful and elegant interfaces with very little effort.

Install

Add the gem to your Gemfile and bundle. You need to add a couple of other gems if you are running Rails 3.1 or higher:
gem "activeadmin"
gem 'sass-rails'
gem 'meta_search', '>= 1.1.0.pre'
To install activeadmin in your Rails project:
rails generate active_admin:install
rake db:migrate
The full installation docs can be found here.

Using

Navigate to 0.0.0.0:3000/admin and login using User: admin@example.com Password: password To register a model, run: rails generate active_admin:resource [MyModelName]

rails-composer

Rails Composer is an awesome script that could bootstrap your project in a few seconds with minimal configuration required. Rails Composer definitely uses most of the gems that we’ve mentioned above, so if you want the fast way you can use the script and if you want a specific gem you can pick up whatever helps you. To create a project with Rails Composer, run the the rails new command as usual with your project name and pass the the -m parameter as following
rails new myapp -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb
You’ll face about twenty question covering almost all the aspects that you could think about when starting a new rails project. Everything from the app structure, web server, templating engine, testing, front-end frameworks, authentication, and even github repository are covered. You can find the full list of options here
.

Wrapping up

We’ve covered about twenty gems and scripts to help you achieve your Rails goals more efficiently. If you are using an awesome gem that magically helps you finish things in a better way I’d love to hear about it.

Frequently Asked Questions on Boosting Your Rails Development Workflow

What are the key benefits of using Rails for my development workflow?

Rails is a robust framework that offers several benefits for your development workflow. Firstly, it follows the Convention over Configuration (CoC) principle, which means you spend less time on tedious setup and configuration tasks. Secondly, Rails is built on Ruby, a language designed for readability and simplicity, which can significantly speed up your development process. Lastly, Rails has a vibrant and supportive community, which means you can find a gem or library for almost any task, saving you from reinventing the wheel.

How can I optimize my Rails development workflow?

Optimizing your Rails development workflow involves several strategies. Firstly, you should leverage Rails’ built-in tools and features, such as migrations for database changes and the asset pipeline for managing static assets. Secondly, consider using gems to add functionality to your application without having to write it from scratch. Lastly, follow best practices for code organization and testing to ensure your application is maintainable and reliable.

What are some recommended gems for improving my Rails workflow?

There are numerous gems available that can enhance your Rails workflow. For instance, ‘pry-rails’ is a powerful alternative to the standard Rails console, while ‘better_errors’ and ‘binding_of_caller’ provide improved error pages. ‘RuboCop’ is a Ruby static code analyzer and formatter that can help you write cleaner, more consistent code.

How can I handle complex business logic in my Rails application?

For complex business logic, consider using a workflow engine. Workflow engines allow you to define business processes as workflows, which can then be executed by the engine. This can help to keep your code clean and maintainable, as the business logic is separated from the application code.

What is the role of testing in a Rails development workflow?

Testing is a crucial part of any Rails development workflow. It helps to ensure that your application is working as expected and that changes or additions to the code do not break existing functionality. Rails provides built-in testing frameworks, but you can also use third-party tools like RSpec for more advanced testing needs.

How can I manage my Rails application’s dependencies?

Rails uses a tool called Bundler to manage dependencies. You can specify the gems your application needs in a Gemfile, and Bundler will ensure that the correct versions are installed. This makes it easy to keep track of your application’s dependencies and ensure they are up to date.

How can I deploy my Rails application?

There are several options for deploying a Rails application. You can use a platform as a service (PaaS) provider like Heroku, which handles much of the deployment process for you. Alternatively, you can deploy your application on a virtual private server (VPS) using tools like Capistrano.

How can I improve the performance of my Rails application?

Improving Rails application performance can involve several strategies, such as optimizing database queries, caching, and using a content delivery network (CDN) for static assets. Additionally, you can use performance monitoring tools to identify and address performance bottlenecks.

How can I keep my Rails application secure?

Rails has several built-in security features, such as protection against cross-site scripting (XSS) and cross-site request forgery (CSRF) attacks. However, it’s also important to follow best practices for secure coding and to keep your application and its dependencies up to date.

How can I learn more about Rails development?

There are many resources available for learning about Rails development. The official Rails guides are a great place to start, and there are numerous books, online courses, and tutorials available. Additionally, the Rails community is very active and welcoming, so don’t hesitate to ask questions or seek help.