Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is the "Gemfile" in Ruby?

I often see in documentation on the Internet, "put this in the Gemfile". I don't know where and what this "Gemfile" is. If I install a gem then I have installed it. Who need than a "Gemfile"? Where or what is the Gemfile, and why is it used?

like image 218
GluecklichesHuhn Avatar asked May 30 '16 13:05

GluecklichesHuhn


People also ask

How do I get Gemfile?

A gemfile is automatically created when you start a new rails application. type rails new appName and then it will be generated automatically. It will also be populated with some gems.

How do I use Gemfile in Ruby?

run the command bundle install in your shell, once you have your Gemfile created. This command will look your Gemfile and install the relevant Gems on the indicated versions. The Gemfiles are installed because in your Gemfile you are pointing out the source where the gems can be downloaded from.

Is Gemfile a Ruby file?

A Gemfile is a file that is created to describe the gem dependencies required to run a Ruby program. A Gemfile should always be placed in the root of the project directory.


Video Answer


3 Answers

The Gemfile is wherever you want it to be - usually in the main directory of your project and the name of the file is Gemfile.

It's convenient to have one because it allows you to use Bundler to manage which gems and which versions of each your project needs to run.

If you are not using Bundler (which you should!), then you can just install any gems you come across with gem install X and ignore instructions about adding a line to your Gemfile.

Read more about it here:

  • http://bundler.io/gemfile.html
  • http://bundler.io/man/gemfile.5.html
like image 106
Weston Avatar answered Oct 16 '22 18:10

Weston


Gemfile is in Rails project, for Ruby run gem environment to find out about your gem environment:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.8
  - RUBY VERSION: 2.2.1 (2015-02-26 patchlevel 85) [i686-linux]
  - INSTALLATION DIRECTORY: /home/gagan/.rvm/gems/ruby-2.2.1
  - RUBY EXECUTABLE: /home/gagan/.rvm/rubies/ruby-2.2.1/bin/ruby
  - EXECUTABLE DIRECTORY: /home/gagan/.rvm/gems/ruby-2.2.1/bin
  - SPEC CACHE DIRECTORY: /home/gagan/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/gagan/.rvm/rubies/ruby-2.2.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/gagan/.rvm/gems/ruby-2.2.1
     - /home/gagan/.rvm/gems/ruby-2.2.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/gagan/.rvm/gems/ruby-2.2.1/bin
     - /home/gagan/.rvm/gems/ruby-2.2.1@global/bin
     - /home/gagan/.rvm/rubies/ruby-2.2.1/bin
     - /usr/local/heroku/bin
     - /usr/lib/lightdm/lightdm
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /home/gagan/.rvm/bin
     - /home/gagan/.rvm/bin

Notice the two sections for:

  • INSTALLATION DIRECTORY
  • GEM PATHS
like image 42
Gagan Gami Avatar answered Oct 16 '22 20:10

Gagan Gami


Gemfile is a file which must be located in root of your rails project. It is used for describing gem dependencies for Ruby programs.

The first thing in your gemfile is a source in which you tell the Gemfile where to look for gems.

Source can be called as a block and you can have multiple sources in your gemfile.

source "https://my_awesome_source.com" do
  gem "my_gem"
  gem "my_other_gem"
end

Here is some documentation where you can read more about gemfile http://bundler.io/gemfile.html

like image 3
RubyDigger19 Avatar answered Oct 16 '22 19:10

RubyDigger19