Gemfile

The Gemfile allows us to define which Ruby libraries (gems) we want to use for our Ruby project. Gemfile can be used for all Ruby projects, so it's not unique for Rails. Therefore, you see gem 'rails', '~> 5.0.0', '>= 5.0.0.1' where Rails is being specified as a requirement because it is essentially just a Ruby library.

Ruby libraries, or gems, are a collection of ruby code designed to do specific things. You can think of them as car parts, there is the engine, the frame, the gear box, the wheels, etc. All written, tested and packaged by other engineers. We use gems so we don't have to build the entire car from scratch, instead we just need to assemble the parts. This speeds up our development time exponentially. In our project, Rails provides the MVC framework. sqlite3, a relational database, is used for database. And, puma, a web server engine, will be used as the web server.

If you scroll towards the bottom of the Gemfile, you can see :test and development. These things are called environments. The environment on your local computer is called development because it's designed for development. When you run automated tests, the environment is called the test environment. When you deploy your app for the world to use and access anytime, that environment is called the production environment.

The Gemfile enables you to specify different gems / libraries for different environments.

In the default Gemfile generated by Rails, we have the following gems

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Every time you modifying the Gemfile, you still have to run a command to install / remove libraries. That command is $ bundle install.

results matching ""

    No results matching ""