Ruby on Rails を使うためには、当然Rubyが必要。
我が家にはRuby 1.9 が入っている。
Rails は2009/3現在、Ruby 1.8 系での動作しか保証していない。
実際、Ruby 1.9 では動かない箇所がある。
例えば以下。ユニットテスト系パッケージが色々変わったらしい。
/home/naoki/.gem/ruby/1.9.1/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require': no such file to load -- test/unit/error (MissingSourceFile)
なので Rails 用の環境を別途用意することにした。
今回は全ての作業を一般ユーザで行う。
ruby-1.8.5-p12 % ./configure --prefix=/home/naoki/ruby-1.8.5 % make % make install
ここにパスを通さないとRuby 1.9が有効になってしまうので、以下を実行。
export PATH=~/ruby-1.8.5/bin:$PATH
続いてRubyGems。これはRubyのパッケージ管理ライブラリ。
http://docs.rubygems.org/
rubygems-1.3.1 % ruby setup.rb
そしたら、Gemsを使って Rails をインストール。
% gem install rails
いきなり総合環境を入れてしまうと内部を理解できないので
まずはEmacsの rails-mode だけ入れることにした。
http://dima-exe.ru/rails-on-emacs
まずはサンプルアプリケーションを作ってみる。
ここら辺は http://guides.rubyonrails.org/getting_started.html を参考に。
% rails /mnt/var/prog/rails/sample1
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/performance
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create test/performance/browsing_test.rb
create config/database.yml
create config/routes.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/new_rails_defaults.rb
create config/locales/en.yml
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/console
create script/dbconsole
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/performance/request
create script/process/reaper
create script/process/spawner
create script/process/inspector
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/422.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
なんか色々作成された。
まずはサーバを起動しよう。
% cd /mnt/var/prog/rails/sample1 % ruby script/server /home/naoki/ruby-1.8.5/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:259:in `require_frameworks': no such file to load -- openssl (RuntimeError)
今度はOpensslが無いというエラー。そんなもん必要なのかよ。
仕方無いのでまずはopensslをインストール。
その後、
ruby-1.8.5-p12/ext/openssl % ruby extconf.rb --with-openssl-dir=/usr/local/ssl % make % make install
さて、再トライ。
% cd /mnt/var/prog/rails/sample1 % ruby script/server => Booting WEBrick... => Rails 2.2.2 application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2009-03-14 19:49:59] INFO WEBrick 1.3.1 [2009-03-14 19:49:59] INFO ruby 1.8.5 (2006-12-25) [i686-linux] [2009-03-14 19:49:59] INFO WEBrick::HTTPServer#start: pid=12797 port=3000
ようやくうまくいった。Railsのデフォルトポートは 3000 らしい。
WEBrick というのがおそらくWebサーバか。
http://localhost:3000/
これでようやく起動。

試しに表示速度を計測してみる。
% /usr/local/apache2/bin/ab "http://localhost:3000/" ... Total transferred: 540 bytes HTML transferred: 68 bytes Requests per second: 21.42 [#/sec] (mean) Time per request: 46.691 [ms] (mean)
やはりそれほど速くはない。ちなみにうちのマシンはCeleron 2.8GHz。
スクリプト言語なのでこの程度か。
PHPやPythonと比べてみないと何とも言えないが、この先データベースへの
アクセスをするようなアプリを作ったときに再度計測することにしよう。
ここまで、意外と苦戦した。
Ruby 1.9 では動かない点。opensslが必要な点。
Unix や Ruby にある程度詳しくないと、ここでつまずく人もいるだろう。
ここら辺はいずれ改善されていくことを期待。