summaryrefslogtreecommitdiff
path: root/v0.9/rails3.html
blob: affc17f4863a0d1672544aafa76fe7233b445119 (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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<!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 class="image" href="/"><img width="725" alt="The best way to manage your application's dependencies" src="/images/gembundler.png" />
          </a>

        </div>
        <div id='intro'>
  Rails 3 comes with baked in support with bundler.
</div>
<h2>Using Bundler with Rails 3</h2>
<div class='contents'>
  <div class='bullet'>
    <div class='description'>
      Install Rails as you normally would. Use sudo if you would normally use sudo to install gems.
    </div>
    <div class='how'>
      <pre class='sunburst'>$ gem install rails</pre>
      <div class='notes'>
        We recommend using rvm for dependable Ruby installations, especially if you are switching between different versions of Ruby
      </div>
    </div>
  </div>
  <div class='bullet'>
    <div class='description'>
      Generate a Rails app as usual
    </div>
    <pre class='sunburst'>$ rails new myapp&#x000A;$ cd myapp&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Run the server. Bundler is transparently managing your dependencies!
    </div>
    <pre class='sunburst'>$ rails server&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Add new dependencies to your Gemfile as you need them.
    </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>geokit<span class="String">'</span></span>&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      If you want a dependency to be loaded only in a certain Rails environment, place it in a group named after that Rails environment
    </div>
    <pre class="sunburst">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;  gem <span class="String"><span class="String">'</span>faker<span class="String">'</span></span>&#x000A;<span class="Keyword">end</span>&#x000A;</pre>
  </div>
  <div class='bullet' id='shared_with_23'>
    <div class='description'>
      You can place a dependency in multiple groups at once as well
    </div>
    <pre class="sunburst">group <span class="Constant"><span class="Constant">:</span>development</span>, <span class="Constant"><span class="Constant">:</span>test</span> <span class="Keyword">do</span>&#x000A;  gem <span class="String"><span class="String">'</span>wirble<span class="String">'</span></span>&#x000A;  gem <span class="String"><span class="String">'</span>ruby-debug<span class="String">'</span></span>&#x000A;<span class="Keyword">end</span>&#x000A;</pre>
    <a href="/v0.9/groups.html">Learn More: Groups</a>
  </div>
  <div class='bullet'>
    <div class='description'>
      After adding a dependency, if it is not yet installed, install it
    </div>
    <div class='how'>
      <pre class='sunburst'>$ bundle install</pre>
      <div class='notes'>
        This will update all dependencies in your Gemfile to the latest versions that do not conflict with other dependencies
      </div>
    </div>
  </div>
  <div class='bullet'>
    <div class='description'>
      Don't forget that non-Rails commands must be executed with bundle exec
    </div>
    <pre class='sunburst'>$ bundle exec cucumber&#x000A;</pre>
  </div>
</div>
<h2>Sharing</h2>
<div class='contents'>
  <div class='bullet'>
    <div class='description'>
      When you're ready to share your application, lock down your dependencies to the specific
      versions you are using now. This will ensure that other machines use exactly these gems,
      and are not affected by new releases of gems in the interim
    </div>
    <pre class='sunburst'>$ bundle lock&#x000A;$ git add Gemfile.lock</pre>
    <a href="/v0.9/bundle_lock.html">Learn More: bundle lock</a>
  </div>
  <div class='bullet'>
    <div class='description'>
      After locking your dependencies you may not modify the Gemfile without unlocking first
    </div>
    <pre class='sunburst'>$ bundle unlock&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      If you've updated your Gemfile and want to install the new gems and re-lock once the new
      gems are finished installing
    </div>
    <pre class='sunburst'>$ bundle install --relock</pre>
  </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>commands</b>
          <a href="/v0.9/man/bundle-install.1.html">install</a>
          /
          <a href="/v0.9/man/bundle-update.1.html">update</a>
          /
          <a href="/v0.9/man/bundle-exec.1.html">exec</a>
          /
          <a href="/v0.9/man/bundle-config.1.html">config</a>
          /
          <a href="/v0.9/bundle_lock.html">lock</a>
          /
          <a href="/v0.9/man/bundle-package.1.html">package</a>
        </p>
        <p>
          <b>usage</b>
          <a href="/v0.9/gemfile.html">gemfile</a>
          /
          <a href="/v0.9/git.html">git</a>
          /
          <a href="/v0.9/groups.html">groups</a>
          /
          <a href="/v0.9/bundler_setup.html">setup</a>
          /
          <a href="/v0.9/deploying.html">deploying</a>
        </p>
        <p>
          <b>frameworks</b>
          <a href="/v0.9/bundler_setup.html">ruby</a>
          /
          <a href="/v0.9/rubygems.html">rubygems</a>
          /
          <a href="/v0.9/rubymotion.html">rubymotion</a>
          /
          <a href="/v0.9/sinatra.html">sinatra</a>
          /
          <a href="/v0.9/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 class="current" 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</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>