summaryrefslogtreecommitdiff
path: root/v1.1/gemfile.html
blob: 94c860d52593d3838596f88f151951b650fb62a3 (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<!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'>
    <link href='/images/favicon.png' rel='shortcut icon' type='image/png'>
    <link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
    <link href="/stylesheets/sunburst.css" media="screen" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id='body'>
      <div id='contents'>
        <div id='header'>
                    <a href="/"><img width="725" alt="The best way to manage your application's dependencies" src="/images/gembundler.png" />
          </a>

        </div>
        <h2>In Depth</h2>
<div class='contents'>
  <div class='bullet'>
    <div class='description'>
      Read the manual for an in-depth discussion of all of the options available in the
      <code>Gemfile</code> and how to use them.
    </div>
    <a href="/man/gemfile.5.html">Gemfile manual</a>
  </div>
</div>
<h2>Gemfiles</h2>
<div class='contents'>
  <div class='bullet'>
    <div class='description'>
      Gemfiles require at least one gem source, in the form of the URL for a Rubygems server.
      There are shortcuts for the default gem server, so all of these sources are the same.
    </div>
    <pre class="sunburst">source <span class="Constant"><span class="Constant">:</span>rubygems</span>&#x000A;source <span class="String"><span class="String">'</span>http://rubygems.org<span class="String">'</span></span>&#x000A;source <span class="Constant"><span class="Constant">:</span>rubyforge</span>&#x000A;source <span class="String"><span class="String">'</span>http://gems.rubyforge.org<span class="String">'</span></span>&#x000A;source <span class="Constant"><span class="Constant">:</span>gemcutter</span>&#x000A;source <span class="String"><span class="String">'</span>http://gemcutter.org<span class="String">'</span></span>&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Declare the gems that you need, including version numbers. Specify versions using the same
      syntax that Rubygems supports for dependencies.
    </div>
    <pre class="sunburst">gem <span class="String"><span class="String">'</span>nokogiri<span class="String">'</span></span>&#x000A;gem <span class="String"><span class="String">'</span>rails<span class="String">'</span></span>, <span class="String"><span class="String">'</span>3.0.0.beta3<span class="String">'</span></span>&#x000A;gem <span class="String"><span class="String">'</span>rack<span class="String">'</span></span>,  <span class="String"><span class="String">'</span>&gt;=1.0<span class="String">'</span></span>&#x000A;gem <span class="String"><span class="String">'</span>thin<span class="String">'</span></span>,  <span class="String"><span class="String">'</span>~&gt;1.1<span class="String">'</span></span>&#x000A;</pre>
    <div class='notes'>
      Most of the version specifiers, like <code>>= 1.0</code>, are self-explanatory.
      The specifier <code>~></code> has a special meaning, best shown by example.
      <code>~> 2.0.3</code> is identical to <code>>= 2.0.3</code> and <code>< 2.1</code>.
      <code>~> 2.1</code> is identical to <code>>= 2.1</code> and <code>< 3.0</code>.
      <code>~> 2.2.beta</code> will match prerelease versions like <code>2.2.beta.12</code>.
    </div>
    <a href="http://docs.rubygems.org/read/chapter/16#page74">Rubygems version specifiers</a>
  </div>
  <div class='bullet'>
    <div class='description'>
      If a gem's main file is different than the gem name, specify how to require it.
    </div>
    <pre class="sunburst">gem <span class="String"><span class="String">'</span>rspec<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>require</span> =&gt; <span class="String"><span class="String">'</span>spec<span class="String">'</span></span>&#x000A;gem <span class="String"><span class="String">'</span>sqlite3<span class="String">'</span></span>&#x000A;</pre>
    <div class='notes'>
      In order to require gems in your <code>Gemfile</code>, you will need to call
      <code>Bundler.require</code> in your application.
    </div>
    <a href="/v1.1/groups.html">Learn More: Bundler.require</a>
  </div>
  <div class='bullet'>
    <div class='description'>
      Git repositories are also valid gem sources, as long as the repo contains one or
      more valid gems. Specify what to check out with <code>:tag</code>,
      <code>:branch</code>, or <code>:ref</code>. The default is the <code>master</code> branch.
    </div>
    <pre class="sunburst">gem <span class="String"><span class="String">'</span>nokogiri<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>git</span> =&gt; <span class="String"><span class="String">'</span>git://github.com/tenderlove/nokogiri.git<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>branch</span> =&gt; <span class="String"><span class="String">'</span>1.4<span class="String">'</span></span>&#x000A;&#x000A;git <span class="String"><span class="String">'</span>git://github.com/wycats/thor.git<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>tag</span> =&gt; <span class="String"><span class="String">'</span>v0.13.4<span class="String">'</span></span>&#x000A;gem <span class="String"><span class="String">'</span>thor<span class="String">'</span></span>&#x000A;</pre>
    <div class='notes'>
      If the git repository does not contain a <code>.gemspec</code> file, bundler
      will create a simple one, without any dependencies, executables or C extensions.
      This may work for simple gems, but not work for others. If there is no .gemspec,
      you probably shouldn't use the gem from git.
    </div>
    <a href="/v1.1/git.html">Learn more: Git</a>
  </div>
  <div class='bullet'>
    <div class='description'>
      If you are actively developing a gem, perhaps checked out from Github, you can use the gem
      directly from its directory on your filesystem.
    </div>
    <pre class="sunburst">gem <span class="String"><span class="String">'</span>nokogiri<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>path</span> =&gt; <span class="String"><span class="String">'</span>~/sw/gems/nokogiri<span class="String">'</span></span>&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Dependencies can be placed into groups, to be ignored at install-time or required all at once.
    </div>
    <pre class="sunburst">gem <span class="String"><span class="String">'</span>wirble<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>group</span> =&gt; <span class="Constant"><span class="Constant">:</span>development</span>&#x000A;gem <span class="String"><span class="String">'</span>ruby-debug<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>group</span> =&gt; [<span class="Constant"><span class="Constant">:</span>development</span>, <span class="Constant"><span class="Constant">:</span>test</span>]&#x000A;&#x000A;group <span class="Constant"><span class="Constant">:</span>test</span> <span class="Keyword">do</span>&#x000A;  gem <span class="String"><span class="String">'</span>rspec<span class="String">'</span></span>&#x000A;<span class="Keyword">end</span>&#x000A;</pre>
    <a href="/v1.1/groups.html">Learn more: Groups</a>
  </div>
</div>
      </div>
    </div>
    <div id='footer'>
      <img src="/images/emocow.png" />
      <img src="/images/panda.jpg" />
      <div class='spacer'></div>
      <div id='navigation'>
        <p>
          <b><a href="/v1.1/commands.html">commands</a></b>
          <a href="/v1.1/bundle_install.html">install</a>
          /
          <a href="/v1.1/bundle_update.html">update</a>
          /
          <a href="/v1.1/bundle_exec.html">exec</a>
          /
          <a href="/v1.1/bundle_config.html">config</a>
          /
          <a href="/v1.1/bundle_package.html">package</a>
        </p>
        <p>
          <b>usage</b>
          <a href="/v1.1/gemfile.html">gemfile</a>
          /
          <a href="/v1.1/git.html">git</a>
          /
          <a href="/v1.1/groups.html">groups</a>
          /
          <a href="/v1.1/bundler_setup.html">setup</a>
          /
          <a href="/v1.1/deploying.html">deploying</a>
        </p>
        <p>
          <b>frameworks</b>
          <a href="/v1.1/bundler_setup.html">ruby</a>
          /
          <a href="/v1.1/rubygems.html">rubygems</a>
          /
          <a href="/v1.1/rubymotion.html">rubymotion</a>
          /
          <a href="/v1.1/sinatra.html">sinatra</a>
          /
          <a href="/v1.1/rails3.html">rails 3</a>
        </p>
      </div>
      <div class='spacer'></div>
      <img src="/images/bundler-small.png" />
    </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>
    <a href='http://github.com/carlhuda/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 class="current" href="/v1.1/">v1.1</a>
      <a href="/v1.2/">v1.2</a>
      <a href="/">v1.3</a>
    </div>
    <script>
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-557621-9']);
      _gaq.push(['_trackPageview']);
      (function() {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
  </body>
</html>