forked from rubygems/bundler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rails23.html
136 lines (136 loc) · 11 KB
/
rails23.html
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Bundler: The best way to manage Ruby applications</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<link href="/stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="/stylesheets/sunburst.css" media="all" rel="stylesheet" type="text/css"/>
<link href="/images/favicon.png" rel="shortcut icon" type="image/png" />
</head>
<body>
<div id="body">
<div id="contents">
<div id="header">
<a href="/">
<img alt="The best way to manage your application's dependencies" src="images/gembundler.png" width="725"/>
</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
$ cd myapp
</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>
 <span class="Keyword">def</span> <span class="Entity">run</span>
 load_initializer

 <span class="Support">Rails</span>::<span class="Entity">Initializer</span>.<span class="Entity">class_eval</span> <span class="Keyword">do</span>
 <span class="Keyword">def</span> <span class="Entity">load_gems</span>
 <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>
 <span class="Keyword">end</span>
 <span class="Keyword">end</span>

 <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>)
 <span class="Keyword">end</span>
<span class="Keyword">end</span>
</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>
 <span class="Keyword">require</span> <span class="String"><span class="String">"</span>rubygems<span class="String">"</span></span>
 <span class="Keyword">require</span> <span class="String"><span class="String">"</span>bundler<span class="String">"</span></span>
<span class="Keyword">rescue</span> <span class="Variable">LoadError</span>
 <span class="Keyword">raise</span> <span class="String"><span class="String">"</span>Could not load the bundler gem. Install it with `gem install bundler`.<span class="String">"</span></span>
<span class="Keyword">end</span>

<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"><=</span> <span class="Support">Gem</span>::<span class="Entity">Version</span>.<span class="Entity">new</span>(<span class="String"><span class="String">"</span>0.9.24<span class="String">"</span></span>)
 <span class="Keyword">raise</span> <span class="Variable">RuntimeError</span>, <span class="String"><span class="String">"</span>Your bundler version is too old for Rails 2.3.<span class="String">"</span></span> <span class="Keyword">+</span>
 <span class="String"><span class="String">"</span>Run `gem install bundler` to upgrade.<span class="String">"</span></span>
<span class="Keyword">end</span>

<span class="Keyword">begin</span>
<span class="Comment"> <span class="Comment">#</span> Set up load paths for all bundled gems</span>
 <span class="Variable">ENV</span>[<span class="String"><span class="String">"</span>BUNDLE_GEMFILE<span class="String">"</span></span>] <span class="Keyword">=</span> <span class="Support">File</span>.<span class="Entity">expand_path</span>(<span class="String"><span class="String">"</span>../../Gemfile<span class="String">"</span></span>, <span class="Variable">__FILE__</span>)
 <span class="Support">Bundler</span>.<span class="Entity">setup</span>
<span class="Keyword">rescue</span> <span class="Support">Bundler</span>::<span class="Entity">GemNotFound</span>
 <span class="Keyword">raise</span> <span class="Variable">RuntimeError</span>, <span class="String"><span class="String">"</span>Bundler couldn't find some gems.<span class="String">"</span></span> <span class="Keyword">+</span>
 <span class="String"><span class="String">"</span>Did you run `bundle install`?<span class="String">"</span></span>
<span class="Keyword">end</span>
</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>
gem <span class="String"><span class="String">"</span>rails<span class="String">"</span></span>, <span class="String"><span class="String">"</span>~> 2.3.5<span class="String">"</span></span>
gem <span class="String"><span class="String">"</span>sqlite3-ruby<span class="String">"</span></span>, <span class="Constant"><span class="Constant">:</span>require</span> => <span class="String"><span class="String">"</span>sqlite3<span class="String">"</span></span>

<span class="Comment"><span class="Comment">#</span> bundler requires these gems in all environments</span>
<span class="Comment"><span class="Comment">#</span> gem "nokogiri", "1.4.2"</span>
<span class="Comment"><span class="Comment">#</span> gem "geokit"</span>

group <span class="Constant"><span class="Constant">:</span>development</span> <span class="Keyword">do</span>
<span class="Comment"> <span class="Comment">#</span> bundler requires these gems in development</span>
<span class="Comment"> <span class="Comment">#</span> gem "rails-footnotes"</span>
<span class="Keyword">end</span>

group <span class="Constant"><span class="Constant">:</span>test</span> <span class="Keyword">do</span>
<span class="Comment"> <span class="Comment">#</span> bundler requires these gems while running tests</span>
<span class="Comment"> <span class="Comment">#</span> gem "rspec"</span>
<span class="Comment"> <span class="Comment">#</span> gem "faker"</span>
<span class="Keyword">end</span>
</pre>
<a href="./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="rails3.html#shared_with_23">Learn More: Rails 3</a>
</div>
</div>
</div>
</div>
<div id="footer">
<img alt="Emocow" src="images/emocow.png"/>
<img alt="Panda" src="images/panda.jpg"/>
<div class="spacer"></div>
<div id="navigation">
<p>
<b>commands</b>
<a href="./index.html">home</a>
/
<a href="./bundle_install.html">install</a>
/
<a href="./bundle_package.html">package</a>
</p>
<p>
<b>usage</b>
<a href="./gemfile.html">gemfile</a>
/
<a href="./git.html">git</a>
/
<a href="./groups.html">groups</a>
/
<a href="./bundler_setup.html">setup</a>
/
<a href="./deploying.html">deploying</a>
</p>
<p>
<b>frameworks</b>
<a href="./rubygems.html">rubygems</a>
/
<a href="./sinatra.html">sinatra</a>
/
<a href="./rails23.html">rails 2.3</a>
/
<a href="./rails3.html">rails 3</a>
</p>
</div>
<div class="spacer"></div>
<img alt="Bundler small" src="images/bundler-small.png"/>
</div>
<div id="credits">
<p>Bundler icon and logo designed by <a href="http://twitter.com/johnneiner">John Neiner</a> and donated by <a href="http://pixelgraphics.us">Pixel Graphic Design Studio</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">
<a class="" href="v0.9/index.html">v0.9</a>
<a class="current" href="v1.0/index.html">v1.0</a>
</div>
<div id="rc-versions">
<a class="" href="v1.1/index.html">v1.1 (coming soon)</a>
</div>
<script type="text/javascript">
//<![CDATA[
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>