summaryrefslogtreecommitdiff
path: root/v1.5/bundler_setup.html
blob: a1a6d25216a8e37e9f3ac50bce60f997602cff4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<!DOCTYPE html>
<html>
  <head>
    <title>Bundler: The best way to manage a Ruby application's gems</title>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
    <meta content='276VSYOko8B8vIu1i8i5qbj7_ql5PXo0dU69XQy-SL' name='globalsign-domain-verification'>
    <link href='/images/favicon.png' rel='shortcut icon' type='image/png'>
    <link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id='body'>
      <div id='header'>
        <a class="image" href="/"><img width="725" alt="The best way to manage your application's dependencies" src="/images/gembundler.png" /></a>
      </div>
      <div id='container'>
        <div id='contents'>
          <h2>Bundler.setup</h2>
          <div class='contents'>
            <div class='bullet'>
              <div class='description'>
                Configure the load path so all dependencies in
                your Gemfile can be required
              </div>
              <pre class="highlight ruby"><span class="nb">require</span> <span class="s1">'rubygems'</span>&#x000A;<span class="nb">require</span> <span class="s1">'bundler/setup'</span>&#x000A;<span class="nb">require</span> <span class="s1">'nokogiri'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Only add gems from specified groups to the
                load path. If you want the gems in the
                default group, make sure to include it
              </div>
              <pre class="highlight ruby"><span class="nb">require</span> <span class="s1">'rubygems'</span>&#x000A;<span class="nb">require</span> <span class="s1">'bundler'</span>&#x000A;<span class="no">Bundler</span><span class="p">.</span><span class="nf">setup</span><span class="p">(</span><span class="ss">:default</span><span class="p">,</span> <span class="ss">:ci</span><span class="p">)</span>&#x000A;<span class="nb">require</span> <span class="s1">'nokogiri'</span></pre>
              <a href="/v1.5/groups.html">Learn More: Groups</a>
            </div>
          </div>
          <h2>Compatibility</h2>
          <div class='contents'>
            <div class='bullet'>
              <div class='description'>
                Ruby 2.0 and Rubygems 2.0 both require Bundler 1.3 or later. If you have questions about compatibility between Bundler and your system, please check the compatibility list.
                <a href="/compatibility.html">Learn More: Compatibility</a>
              </div>
            </div>
            <h2 id='setting-up-your-application-to-use-bundler'>
              Setting Up Your Application to Use Bundler
            </h2>
            <div class='bullet'>
              <div class='description'>
                Bundler makes sure that Ruby can find all of the gems in the <code>Gemfile</code>
                (and all of their dependencies). If your app is a Rails 3 app, your default application
                already has the code necessary to invoke bundler. If it is a Rails 2.3 app, please see:
                <a href="./rails23.html">Setting up Bundler in Rails 2.3</a>
              </div>
            </div>
            <div class='bullet'>
              <div class='description'>
                For another kind of application (such as a Sinatra application), you will need to set up
                bundler before trying to require any gems. At the top of the first file that your
                application loads (for Sinatra, the file that calls <code>require 'sinatra'</code>), put
                the following code:
              </div>
              <pre class="highlight ruby"><span class="nb">require</span> <span class="s1">'rubygems'</span>&#x000A;<span class="nb">require</span> <span class="s1">'bundler/setup'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                This will automatically discover your <code>Gemfile</code>, and make all of the gems in
                your <code>Gemfile</code> available to Ruby (in technical terms, it puts the gems "on the
                load path"). You can think of it as an adding some extra powers to <code>require
                'rubygems'</code>.
              </div>
            </div>
            <div class='bullet'>
              <div class='description'>
                Now that your code is available to Ruby, you can require the gems that you need. For
                instance, you can <code>require 'sinatra'</code>. If you have a lot of dependencies, you
                might want to say "require all of the gems in my <code>Gemfile</code>". To do this, put
                the following code immediately following <code>require 'bundler/setup'</code>:
              </div>
              <pre class="highlight ruby"><span class="no">Bundler</span><span class="p">.</span><span class="nf">require</span><span class="p">(</span><span class="ss">:default</span><span class="p">)</span>&#x000A;</pre>
              For our example Gemfile, this line is exactly equivalent to:
              <pre class="highlight ruby"><span class="nb">require</span> <span class="s1">'rails'</span>&#x000A;<span class="nb">require</span> <span class="s1">'rack-cache'</span>&#x000A;<span class="nb">require</span> <span class="s1">'nokogiri'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Astute readers will notice that the correct way to require the <code>rack-cache</code>
                gem is <code>require 'rack/cache'</code>, not <code>require 'rack-cache'</code>. To tell
                bundler to use <code>require 'rack/cache'</code>, update your Gemfile:
              </div>
              <pre class="highlight ruby"><span class="n">source</span> <span class="s1">'http://rubygems.org'</span>&#x000A;&#x000A;<span class="n">gem</span> <span class="s1">'rails'</span><span class="p">,</span> <span class="s1">'3.0.0.rc'</span>&#x000A;<span class="n">gem</span> <span class="s1">'rack-cache'</span><span class="p">,</span> <span class="ss">:require</span> <span class="o">=&gt;</span> <span class="s1">'rack/cache'</span>&#x000A;<span class="n">gem</span> <span class="s1">'nokogiri'</span><span class="p">,</span> <span class="s1">'~&gt; 1.4.2'</span>&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                For such a small <code>Gemfile</code>, we'd advise you to skip
                <code>Bundler.require</code> and just require the gems by hand (especially given the
                need to put in a <code>:require</code> directive in the <code>Gemfile</code>). For much
                larger <code>Gemfile</code>s, using <code>Bundler.require</code> allows you to skip
                repeating a large stack of requirements.
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div id='footer'>
      <img src="/images/emocow.png" />
      <img src="/images/panda.jpg" />
      <div class='spacer'></div>
      <div id='credits'>
        <p>
          Many thanks to Bundler's <a href="/contributors.html">contributors</a>
          and <a href="/sponsors.html">sponsors</a>
        </p>
      </div>
      <div class='spacer'></div>
      <img src="/images/bundler-small.png" />
    </div>
    <a href='http://github.com/bundler/bundler/' id='github'>
      <img alt='Fork me on GitHub' src='http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png'>
    </a>
    <div id='prod-versions'>
      Docs:
      <a href="/v0.9/">v0.9</a>
      <a href="/v1.0/">v1.0</a>
      <a href="/v1.1/">v1.1</a>
      <a href="/v1.2/">v1.2</a>
      <a href="/v1.3/">v1.3</a>
      <a class="current" href="/v1.5/index.html">v1.5</a>
      <a href="/">v1.6</a>
    </div>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-39559982-1', 'bundler.io');
      ga('send', 'pageview');
    </script>
  </body>
</html>