summaryrefslogtreecommitdiff
path: root/v1.1/rails23.html
blob: ed2d87176ea69cf14499026622394ab9066fc4a9 (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
<!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>
        <div id='intro'>
  Rails 2.3 comes with its own gem handling. We're going to
  override that and replace it with support for Bundler.
  <div class='notes'>
    <b>NB:</b> This <i>may</i> work with Rails versions lower than 2.3.
    The Bundler team has not tested those versions, and will not provide
    support for anyone on Rails older than 2.3, but feel free to try it. :)
  </div>
</div>
<h2>Using Bundler with Rails 2.3</h2>
<div class='contents'>
  <div class='bullet'>
    <div class='description'>
      If you don't have a Rails 2.3 app yet, generate one
    </div>
    <pre class='sunburst'>$ rails myapp&#x000A;$ cd myapp&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Insert the following code in config/boot.rb, right above
      the line `Rails.boot!`
    </div>
    <pre class="sunburst"><span class="Keyword">class</span> <span class="JEntityNameType">Rails::Boot</span>&#x000A;  <span class="Keyword">def</span> <span class="Entity">run</span>&#x000A;    load_initializer&#x000A;&#x000A;    <span class="Support">Rails</span>::<span class="Entity">Initializer</span>.<span class="Entity">class_eval</span> <span class="Keyword">do</span>&#x000A;      <span class="Keyword">def</span> <span class="Entity">load_gems</span>&#x000A;        <span class="Variable"><span class="Variable">@</span>bundler_loaded</span> <span class="Keyword">||=</span> <span class="Support">Bundler</span>.<span class="Entity">require</span> <span class="Constant"><span class="Constant">:</span>default</span>, <span class="Support">Rails</span>.<span class="Entity">env</span>&#x000A;      <span class="Keyword">end</span>&#x000A;    <span class="Keyword">end</span>&#x000A;&#x000A;    <span class="Support">Rails</span>::<span class="Entity">Initializer</span>.<span class="Entity">run</span>(<span class="Constant"><span class="Constant">:</span>set_load_path</span>)&#x000A;  <span class="Keyword">end</span>&#x000A;<span class="Keyword">end</span>&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Create a new file, <code>config/preinitializer.rb</code>,
      and insert the following. That is <code>config</code> <strong>NOT</strong>
      <code>config/initializers</code>.
    </div>
    <pre class="sunburst"><span class="Keyword">begin</span>&#x000A;  <span class="Keyword">require</span> <span class="String"><span class="String">'</span>rubygems<span class="String">'</span></span>&#x000A;  <span class="Keyword">require</span> <span class="String"><span class="String">'</span>bundler<span class="String">'</span></span>&#x000A;<span class="Keyword">rescue</span> <span class="Variable">LoadError</span>&#x000A;  <span class="Keyword">raise</span> <span class="String"><span class="String">&quot;</span>Could not load the bundler gem. Install it with `gem install bundler`.<span class="String">&quot;</span></span>&#x000A;<span class="Keyword">end</span>&#x000A;&#x000A;<span class="Keyword">if</span> <span class="Support">Gem</span>::<span class="Entity">Version</span>.<span class="Entity">new</span>(<span class="Support">Bundler</span>::<span class="Entity">VERSION</span>) <span class="Keyword">&lt;=</span> <span class="Support">Gem</span>::<span class="Entity">Version</span>.<span class="Entity">new</span>(<span class="String"><span class="String">&quot;</span>0.9.24<span class="String">&quot;</span></span>)&#x000A;  <span class="Keyword">raise</span> <span class="Variable">RuntimeError</span>, <span class="String"><span class="String">&quot;</span>Your bundler version is too old for Rails 2.3.<span class="String">&quot;</span></span> <span class="Keyword">+</span>&#x000A;   <span class="String"><span class="String">&quot;</span>Run `gem install bundler` to upgrade.<span class="String">&quot;</span></span>&#x000A;<span class="Keyword">end</span>&#x000A;&#x000A;<span class="Keyword">begin</span>&#x000A;<span class="Comment">  <span class="Comment">#</span> Set up load paths for all bundled gems</span>&#x000A;  <span class="Variable">ENV</span>[<span class="String"><span class="String">&quot;</span>BUNDLE_GEMFILE<span class="String">&quot;</span></span>] <span class="Keyword">=</span> <span class="Support">File</span>.<span class="Entity">expand_path</span>(<span class="String"><span class="String">&quot;</span>../../Gemfile<span class="String">&quot;</span></span>, <span class="Variable">__FILE__</span>)&#x000A;  <span class="Support">Bundler</span>.<span class="Entity">setup</span>&#x000A;<span class="Keyword">rescue</span> <span class="Support">Bundler</span>::<span class="Entity">GemNotFound</span>&#x000A;  <span class="Keyword">raise</span> <span class="Variable">RuntimeError</span>, <span class="String"><span class="String">&quot;</span>Bundler couldn't find some gems.<span class="String">&quot;</span></span> <span class="Keyword">+</span>&#x000A;    <span class="String"><span class="String">&quot;</span>Did you run `bundle install`?<span class="String">&quot;</span></span>&#x000A;<span class="Keyword">end</span>&#x000A;</pre>
  </div>
  <div class='bullet'>
    <div class='description'>
      Get all config.gem declarations from your application, and place
      them into the Gemfile. If you have declarations in development.rb,
      for instance, place them in a named group. Make sure to include
      Rails itself and at least one source
    </div>
    <pre class="sunburst">source <span class="Constant"><span class="Constant">:</span>gemcutter</span>&#x000A;gem <span class="String"><span class="String">'</span>rails<span class="String">'</span></span>, <span class="String"><span class="String">'</span>~&gt; 2.3.5<span class="String">'</span></span>&#x000A;gem <span class="String"><span class="String">'</span>sqlite3-ruby<span class="String">'</span></span>, <span class="Constant"><span class="Constant">:</span>require</span> =&gt; <span class="String"><span class="String">'</span>sqlite3<span class="String">'</span></span>&#x000A;&#x000A;<span class="Comment"><span class="Comment">#</span> bundler requires these gems in all environments</span>&#x000A;<span class="Comment"><span class="Comment">#</span> gem 'nokogiri', '1.4.2'</span>&#x000A;<span class="Comment"><span class="Comment">#</span> gem 'geokit'</span>&#x000A;&#x000A;group <span class="Constant"><span class="Constant">:</span>development</span> <span class="Keyword">do</span>&#x000A;<span class="Comment">  <span class="Comment">#</span> bundler requires these gems in development</span>&#x000A;<span class="Comment">  <span class="Comment">#</span> gem 'rails-footnotes'</span>&#x000A;<span class="Keyword">end</span>&#x000A;&#x000A;group <span class="Constant"><span class="Constant">:</span>test</span> <span class="Keyword">do</span>&#x000A;<span class="Comment">  <span class="Comment">#</span> bundler requires these gems while running tests</span>&#x000A;<span class="Comment">  <span class="Comment">#</span> gem 'rspec'</span>&#x000A;<span class="Comment">  <span class="Comment">#</span> gem 'faker'</span>&#x000A;<span class="Keyword">end</span>&#x000A;</pre>
    <a href="/v1.1/groups.html">Learn More: Groups</a>
  </div>
  <div class='bullet'>
    <div class='description'>
      Once you have everything set up, you can use script/console,
      script/server, and other Rake tasks as usual. From this point
      on, you can follow the instructions in the Rails 3 guide
    </div>
    <pre class='sunburst'>$ rake db:migrate</pre>
    <a href="/v1.1/rails3.html#shared_with_23">Learn More: Rails 3</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>