summaryrefslogtreecommitdiff
path: root/v1.0/rails23.html
blob: bba1608e12805966f9c559b0ec0ac82e8da255ef (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
<!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'>
          <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="highlight plaintext">$ rails myapp&#x000A;$ cd myapp&#x000A;</pre>
            </div>
            <div class='bullet'>
              <div class='description'>
                Insert the following code at the bottom of config/boot.rb,
                right above the line `Rails.boot!`
              </div>
              <pre class="highlight ruby"><span class="k">class</span> <span class="nc">Rails</span><span class="o">::</span><span class="no">Boot</span>&#x000A;  <span class="k">def</span> <span class="nf">run</span>&#x000A;    <span class="n">load_initializer</span>&#x000A;&#x000A;    <span class="no">Rails</span><span class="o">::</span><span class="no">Initializer</span><span class="p">.</span><span class="nf">class_eval</span> <span class="k">do</span>&#x000A;      <span class="k">def</span> <span class="nf">load_gems</span>&#x000A;        <span class="vi">@bundler_loaded</span> <span class="o">||=</span> <span class="no">Bundler</span><span class="p">.</span><span class="nf">require</span> <span class="ss">:default</span><span class="p">,</span> <span class="no">Rails</span><span class="p">.</span><span class="nf">env</span>&#x000A;      <span class="k">end</span>&#x000A;    <span class="k">end</span>&#x000A;&#x000A;    <span class="no">Rails</span><span class="o">::</span><span class="no">Initializer</span><span class="p">.</span><span class="nf">run</span><span class="p">(</span><span class="ss">:set_load_path</span><span class="p">)</span>&#x000A;  <span class="k">end</span>&#x000A;<span class="k">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="highlight ruby"><span class="k">begin</span>&#x000A;  <span class="nb">require</span> <span class="s2">"rubygems"</span>&#x000A;  <span class="nb">require</span> <span class="s2">"bundler"</span>&#x000A;<span class="k">rescue</span> <span class="no">LoadError</span>&#x000A;  <span class="k">raise</span> <span class="s2">"Could not load the bundler gem. Install it with `gem install bundler`."</span>&#x000A;<span class="k">end</span>&#x000A;&#x000A;<span class="k">if</span> <span class="no">Gem</span><span class="o">::</span><span class="no">Version</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="no">Bundler</span><span class="o">::</span><span class="no">VERSION</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="no">Gem</span><span class="o">::</span><span class="no">Version</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="s2">"0.9.24"</span><span class="p">)</span>&#x000A;  <span class="k">raise</span> <span class="no">RuntimeError</span><span class="p">,</span> <span class="s2">"Your bundler version is too old for Rails 2.3."</span> <span class="o">+</span>&#x000A;   <span class="s2">"Run `gem install bundler` to upgrade."</span>&#x000A;<span class="k">end</span>&#x000A;&#x000A;<span class="k">begin</span>&#x000A;  <span class="c1"># Set up load paths for all bundled gems</span>&#x000A;  <span class="no">ENV</span><span class="o">[</span><span class="s2">"BUNDLE_GEMFILE"</span><span class="o">]</span> <span class="o">=</span> <span class="no">File</span><span class="p">.</span><span class="nf">expand_path</span><span class="p">(</span><span class="s2">"../../Gemfile"</span><span class="p">,</span> <span class="kp">__FILE__</span><span class="p">)</span>&#x000A;  <span class="no">Bundler</span><span class="p">.</span><span class="nf">setup</span>&#x000A;<span class="k">rescue</span> <span class="no">Bundler</span><span class="o">::</span><span class="no">GemNotFound</span>&#x000A;  <span class="k">raise</span> <span class="no">RuntimeError</span><span class="p">,</span> <span class="s2">"Bundler couldn't find some gems."</span> <span class="o">+</span>&#x000A;    <span class="s2">"Did you run `bundle install`?"</span>&#x000A;<span class="k">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="highlight ruby"><span class="n">source</span> <span class="ss">:gemcutter</span>&#x000A;<span class="n">gem</span> <span class="s2">"rails"</span><span class="p">,</span> <span class="s2">"~&gt; 2.3.5"</span>&#x000A;<span class="n">gem</span> <span class="s2">"sqlite3-ruby"</span><span class="p">,</span> <span class="ss">:require</span> <span class="o">=&gt;</span> <span class="s2">"sqlite3"</span>&#x000A;&#x000A;<span class="c1"># bundler requires these gems in all environments</span>&#x000A;<span class="c1"># gem "nokogiri", "1.4.2"</span>&#x000A;<span class="c1"># gem "geokit"</span>&#x000A;&#x000A;<span class="n">group</span> <span class="ss">:development</span> <span class="k">do</span>&#x000A;  <span class="c1"># bundler requires these gems in development</span>&#x000A;  <span class="c1"># gem "rails-footnotes"</span>&#x000A;<span class="k">end</span>&#x000A;&#x000A;<span class="n">group</span> <span class="ss">:test</span> <span class="k">do</span>&#x000A;  <span class="c1"># bundler requires these gems while running tests</span>&#x000A;  <span class="c1"># gem "rspec"</span>&#x000A;  <span class="c1"># gem "faker"</span>&#x000A;<span class="k">end</span></pre>
              <a href="/v1.0/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="highlight plaintext">$ rake db:migrate</pre>
              <a href="/v1.0/rails3.html#shared_with_23">Learn More: Rails 3</a>
            </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 class="current" 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 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>