Rails 2.3.2のインストール
いままでUbuntuのapt-getで入ってたRailsを使ってたんだけども、普通gemから入れるようなので、そこからいれようとしたら、色々エラーが出たのでメモ。
apt-getでいれたRails(/usr/share/rails/以下)はなんかおかしい。rails -v使えないので、script/aboutでVersion確認してみると2.1.0。Vendor内にActiveRecordやらなにやらのシンボリックリンクが張られてる状態でアプリケーションが作成される。
とりあえずaptで入ってるRailsを削除。
$ sudo apt-get remove rails
現在の最新2.3.2がインストールされる。
$ sudo gem install rails
この状態だとrailsコマンドが使えなくなる。
$ rails bash: /usr/bin/rails: No such file or directory
gem経由でインストールしたbinは/var/lib/gems/1.8/binに入っているので、Pathを通す。
$ vi .bashrc
$ source .bashrc
export PATH=/var/lib/gems/1.8/bin:$PATHを.bashrcに書き加えて、再読み込み。
$ rails -v
Rails 2.3.2
最新版になった。
$ rails testapp -d mysql $ script/about Rails requires RubyGems >= 1.3.1 (you have 1.2.0). Please `gem update --system` and try again.
RubyGemsのバージョンが古いからアップデート。
$ sudo gem update --system ERROR: While executing gem ... (RuntimeError) gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.
Debian(Ubuntu)はapt-getを使えとエラーが出る。
$ sudo gem install rubygems-update
Successfully installed rubygems-update-1.3.1
1 gem installed
$ update_rubygems Installing RubyGems 1.3.1 mkdir -p /usr/local/lib/site_ruby/1.8 mkdir -p /usr/bin install -c -m 0644 ubygems.rb /usr/local/lib/site_ruby/1.8/ubygems.rb /usr/lib/ruby/1.8/fileutils.rb:1262:in `initialize': Permission denied - /usr/local/lib/site_ruby/1.8/ubygems.rb (Errno::EACCES)
sudoだとCommand not found言われるので、パスを直接指定。
$ sudo /var/lib/gems/1.8/bin/update_rubygems
Success
$ script/about Missing the Rails 2.3.2 gem. Please `gem install -v=2.3.2 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
さっき2.3.2いれたのに、Rubygemsのバージョンを1.2→1.3にした関係かな?
$ sudo gem install rails Successfully installed activerecord-2.3.2 Successfully installed actionpack-2.3.2 Successfully installed actionmailer-2.3.2 Successfully installed activeresource-2.3.2 Successfully installed rails-2.3.2 5 gems installed Installing ri documentation for activerecord-2.3.2... Installing ri documentation for actionpack-2.3.2... Installing ri documentation for actionmailer-2.3.2... Installing ri documentation for activeresource-2.3.2... Installing RDoc documentation for activerecord-2.3.2... Installing RDoc documentation for actionpack-2.3.2... Installing RDoc documentation for actionmailer-2.3.2... Installing RDoc documentation for activeresource-2.3.2...
もう一度やり直したら、またインストールを始めた。
$ script/about !!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. About your application's environment Ruby version 1.8.7 (i486-linux) RubyGems version 1.3.1 Rack version 1.0 bundled Rails version 2.3.2
Mysqlドライバでエラー
$ sudo gem install mysql
Building native extensions. This could take a while...
Successfully installed mysql-2.7
1 gem installed
(※こんなエラーが出る場合は)
$ sudo gem install mysql Building native extensions. This could take a while... ERROR: Error installing mysql: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb install mysql extconf.rb:1:in `require': no such file to load -- mkmf (LoadError) from extconf.rb:1 Gem files will remain installed in /var/lib/gems/1.8/gems/mysql-2.7 for inspection. Results logged to /var/lib/gems/1.8/gems/mysql-2.7/gem_make.out $ sudo gem install ruby1.8-dev
ruby1.8-devが足りていない。
ここまでやってやっとscript/aboutでのバージョン確認ができた。
Webrickに戻っていたのでMongrelもいれなし。
script/serverで起動確認。
一応トップページだけではなく、ControllerやModel一通り動いてるか確認するためにScaffoldでも作ってみよう。
$ rake db:create
$ script/generate scaffold item name:string price:integer
$ rake db:migrate
動いてるみたい。