UbuntuでRails 2.0.2を入れた

Rails 3に慣れると色々めんどくさいRails 2ですが、古いアプリケーションをすぐに移行するわけにもいきません。

今回は、Ubuntu 8.04 Serverで、Rails 2.0.2を動かす必要がありました。
また、諸々の事情から、Passengerは使えず、旧環境で動いていたのはmod_fcigdでした。

普段はRVMでRubyを入れるのですが、mod_fastcgiやfcigdでRVMをうまく設定できなかったので、aptでrubyを入れています。
他に動いているアプリの都合上、ruby 1.8.6を維持します

さて、まずは素直に

[bash]
$ ruby -v
1.8.6
$ gem -v
0.9.2
$ gem install rails -v=2.0.2
ERROR: While executing gem … (Gem::RemoteSourceException)
HTTP Response 302
[/bash]

なにやらRemoteSourceExceptionが出てしまいました。
Gemのバージョンが古いと発生するようです。

[bash]
$ gem update –system
ERROR: While executing gem … (Gem::RemoteSourceException)
HTTP Response 302
$ gem install rubygems-update
ERROR: While executing gem … (Gem::RemoteSourceException)
HTTP Response 302
[/bash]

ダメですね。
仕方ないので、wgetで落としてくることにします。
http://rubyforge.org/projects/rubygems/から、適当なバージョンのrubygemsをダウンロードします。

いくつか試したところ、
1.1.1 : Gem::RemoteSourceExceptionが発生して無意味
1.4.2 : OK!
1.5.0 : setup.rbを実行すると、(A)のエラーが発生
1.8.5 : setup.rbを実行すると、(B)のエラーが発生
となったので、ruby 1.8.6で使うにはrubygems 1.4.2が良さそうです。

(A)
./lib/rubygems/custom_require.rb:31:in `require’: undefined method `end_with?’ for “no such file to load — Win32API”:String (NoMethodError)

(B)
./lib/rubygems.rb:334: warning: parenthesize argument(s) for future version
./lib/rubygems.rb:511: warning: parenthesize argument(s) for future version
./lib/rubygems/dependency_list.rb:8:in `require’: ./lib/rubygems/deprecate.rb:53: syntax error, unexpe
cted ‘,’, expecting ‘|’ (SyntaxError)
define_method name do |*args, &block| # TODO: really works on 1.8.7?
^
./lib/rubygems/deprecate.rb:54: syntax error, unexpected tCONSTANT, expecting ‘}’
./lib/rubygems/deprecate.rb:63: syntax error, unexpected kEND, expecting ‘}’
./lib/rubygems/deprecate.rb:68: syntax error, unexpected kEND, expecting ‘}’ from ./lib/rubygems/dependency_list.rb:8
from ./lib/rubygems.rb:29:in `require’
from ./lib/rubygems.rb:29
from setup.rb:27:in `require’
from setup.rb:27

[bash]
$ wget http://rubyforge.org/frs/download.php/73882/rubygems-1.4.2.tgz
$ tar zxvf rubygems-1.4.2.tgz
$ cd rubygems-1.4.2
$ ruby setup.rb
[/bash]

インストール成功!

しかし今度は別のエラーです。

[bash]
$ gem -v
/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)
[/bash]

この場合、/usr/bin/gem1.8を実行してみましょう。
古いgemが/usr/bin/gemで、新しいgemが/usr/bin/gem1.8になっています。ややこしいのでgem1.8をgemにします。

[bash]
$ cd /usr/bin
$ mv gem gem.old
$ ln -s gem1.8 gem
$ gem -v
1.4.2
$ gem install rails -v=2.0.2
[/bash]

これでようやく、インストールすることができました!

ちなみに、RAILS_ENVを設定する際、mod_fastcgiとmod_fcigdで記法が異なります。
[text]
# mod_fastcgiの場合、
SetEnv RAILS_ENV production

# mod_fcigdの場合
DefaultInitEnv RAILS_ENV production
[/text]

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(16区分17回 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、Ruby Programmer Gold、AWSソリューションアーキテクト(アソシエイト)、日商簿記2級、漢検準1級などを保有。

babaの書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ