WindowsプログラマのWebアプリへの挑戦日記。あとパンとか。

Archive for the ‘Ruby on Rails’ Category

coreserverにRuby on Rails 2.1.0をインストールしてみた

火曜日, 8月 5th, 2008 Posted in ruby, Ruby on Rails | 6 Comments »

coreserverにRuby on Rails 2.1.0をインストールしたので、作業の記録を残しておきます。

SSHでcoreserverに接続

railsを入れるには、SSHでサーバーにログインして作業する必要があります。

ボクはwindowsから作業するので、Tera Termを使用しています。このあたりからダウンロードすればいけると思います。

SSHでログインする前にcoreserverにどこから接続するかという情報を登録します。coreserverの管理メニューで、[ホスト情報登録]から[SSH登録]というボタンをクリックします。

そのまま待っとくと5分ほどで反映されてるはずですので、しばらくしてからTera Termをおもむろに起動します。

Tera Termを起動すると、接続の設定をするダイアログが開くので、TCP/IPのラジオボタンにチェックをいれ、ホストに[sxx.coreserver.jp]と入れます。coreserverの管理メニュー[FTP設定]のFPTサーバーを入れてください。サービスはSSHで、ほかはデフォルトでいけたと思います。

Tera Term - Ruby on Rails 2.1.0をインストール

[OK]をクリックすると、SSH認証のダイアログが開きます。ユーザ名とパスフレーズにそれぞれcoreserverの管理メニュー[FTP設定]のFPTアカウント、FPTパスワードを入れます。

Tera Term - Ruby on Rails 2.1.0をインストール

[OK]ボタンをクリックすると、coreserverに接続されます。[OK]ボタンをクリックしてもダイアログが閉じない場合は、coreserver側の準備ができていないので、もうちょっと待ってみてください。

RubyGemsのインストール

coreserverには最初からRubyが入っているので、Rubyはそれを使います。最初の作業は、パッケージ管理のRubyGemsをインストールすることです。まずは、~/.bashrcというファイルを作成して、PATHを通すために次を書きます。ファイルの編集の仕方はテキトウに調べてください。ボクはvimを使っています。

  1. export PATH=$PATH:$HOME/bin:$HOME/lib/ruby/gem/bin
  2. export RUBYLIB=$HOME/lib/:$HOME/lib/ruby
  3. export GEM_HOME=$HOME/lib/ruby/gem

この変更を反映するために、次を実行。

  1. >source ~/.bashrc

次にRubyGemsをダウンロードして解凍します。

  1. >mkdir ~/temp
  2. >cd ~/temp
  3. >wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
  4. >tar xvzf rubygems-1.2.0.tgz
  5. >cd rubygems-1.2.0
  6. >ruby setup.rb config --prefix=$HOME

途中でkillされることがあるので、その場合はもう一度

  1. >ruby setup.rb --prefix=$HOME

を実行します。終わったみたいに感じたら、バージョンを確認してみます。

  1. >gem -v
  2. >1.2.0

どうやら無事にRubyGemsが入ったみたいです。

railsのインストール

次にrailsを入れます。

  1. >gem install rails --include-dependencies

これだけでrailsがインストールされます。インストールが完了したらrailsのバージョンをチェックします。

  1. >rails -v
  2. >Rails 2.1.0

やったー!なんとかインストール成功!

サンプルアプリで動作確認

次はサンプルアプリを作り、ブラウザから動きを見てみます。

  1. >mkdir ~/ror_app
  2. >cd ~/ror_app
  3. >rails -d mysql adbook

いろいろなファイルが作成されます。~/ror_app/adbook/config/database.xmlをエディタで開き、developmentの以外の項目を削除して、developmentの必要な項目を記入します。

  1. development:
  2.   adapter: mysql
  3.   encoding: utf8
  4.   database: xxxx_adbook
  5.   username: xxxx_adbook
  6.   password: password
  7.   socket: /tmp/mysql.sock
  8.   host: localhost

databaseとusernameはcoreserverの場合、同じです。passwordはMySQLのパスワードを設定します。

このdatabase.xmlの設定をもとにrakeでDataBaseを作ります。

  1. >rake db:create:all

なぜか失敗します。database.xmlの書き方が悪いのかもしれないけど、よくわからんのでcoreserverのphpMyAdminでdatabaseを作成します。作成したdatabaseは、database.xmlで設定した内容と同じです。

scaffoldで一気にやっちゃいます。

  1. >ruby script/genarate scaffold adbook name:string phone;string address:string memo:text

最後にrakeでDBをmigrateします。

  1. >rake db:migrate

これでサンプルアプリの準備は完了ですが、ちょっと設定が必要です。~/ror_app/adbook/config/environment.rbの先頭に、次を追加します。

  1. $LOAD_PATH.push("/virtual/xxxx/lib/ruby")
  2. ENV['GEM_HOME'] ||= '/virtual/xxxx/lib/ruby/gem'

次に、~/ror_app/adbook/public/.htaccessを作成して、次のように記述します。

  1. AddHandler fastcgi-script .fcgi
  2. AddHandler cgi-script .cgi
  3. #AddHandler cgi-script-debug .cgi
  4. Options +FollowSymLinks +ExecCGI
  5.  
  6. RewriteEngine On
  7. RewriteBase /adbook/
  8.  
  9. RewriteRule ^$ index.html [QSA]
  10. RewriteRule ^([^.]+)$ $1.html [QSA]
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
  13.  
  14. ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"

このサンプルアプリは~/ror_app/adbook/public/を公開しないとブラウザからは見れないので、ブラウザから見えるところからシンボリックリンクを張ります。

  1. >cd ~/public_html/www.xxxx.com
  2. >ln -s ~/ror_app/adbook/public/ adbook

これで、ブラウザからhttp://www.xxxx.com/adbook/にアクセスすればrailsの画面が出てきます。[About your application’s environment]と書いてあるところをクリックして、次のように表示されればOKです。

Ruby on Rails サンプルアプリ 成功

もし次のように表示された場合は、

Ruby on Rails サンプルアプリ 失敗

~/ror_app/adbook/public/.htaccessを次のように変更します。

  1. AddHandler cgi-script .cgi
  2. #AddHandler cgi-script .cgi
  1. #AddHandler cgi-script-debug .cgi
  2. AddHandler cgi-script-debug .cgi

これでもう一度http://www.xxxx.com/adbook/にアクセスして表示されるメッセージをたよりに原因を追究してみてください。原因がわかったら~/ror_app/adbook/public/.htaccessを元に戻さないと正常に表示されません。

正常に動作すると、http://www.xxxx.com/adbook/adbooksにアクセスするとアドレス帳が表示されます。[New adbook]からアドレスを追加してください。

ちなみにボクが今回作業したのは、http://www.its55.com/adbook/adbooksで確認できます。

Ruby on Rails 2.1.0 インストールしてみた

日曜日, 7月 20th, 2008 Posted in ruby, Ruby on Rails | 3 Comments »

いつかはやらんといかんなぁと思っていたRuby on Railsですが、AGAGローンチ後やる気がなくなっていたワタクシの頭に気合を入れる意味で、ローカルマシンに環境を作ってみましたよ。

今回は全面的に不真面目SEの生活さんを参考にさせていただきました。

Windows VistaにRubyのインストール

すでにローカルマシンにはXAMPPが入っているので、apacheとかMySQLとかのインストールは必要なくて、とりあえずRubyを入れてみました。

Rubyを入れるにはいろいろな方法があるみたいですが、ここはカンタンにOne-Click Ruby Installerを入れました。インストールは普通にカンタン。Rubyと関連モジュールなんか入れてくれるみたい。

ここでRubyのインストールができたか確認。コマンドプロンプトでRubyのバージョンを確認。

  1. >ruby -v
  2. ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

ちゃんと入ってるっぽい。

Ruby on Railsのインストール

One-Click Ruby InstallerでRubyGemsも入るので、次はRuby on Railsを入れる。

コマンドプロンプトで次を実行。

  1. >gem install rails --include-dependencies

[--include-dependencies]というオプションは依存パッケージを含めてインストールする指定みたいです。

しばらく待ってるとなにやら聞かれましたが、すべて[Y]で答えました。なにを聞かれたのかはよく覚えてません・・・。すみません。

終了してRailsのインストールができたか確認。

  1. >rails -v
  2. 'rails' は、内部コマンドまたは外部コマンド、
  3. 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

あれ?失敗してます。

原因がわからずもう一度RubyGemsからRailsをインストール。

  1. >gem install rails --include-dependencies

今回はさっきみたいに何か聞かれることはありませんでした。終了してRailsの確認。

  1. >rails -v
  2. Rails 2.1.0

おー、なんかよくわからんけど入りました。version2.1.0ですね。

サンプルを作ってみたっ

不真面目SEの生活さんのWindowsでRuby on Rails その2 Ruby・Ruby on RailsのインストールのWebrickを使って動かすサンプルを作ってみると、ちゃんと動きました。

次に、同じく不真面目SEの生活さんのWindowsでRuby on Rails その3 Ruby on RailsをCGIで動かすのapacheでcgiで動かしてみました。んが、Railsアプリフォルダ以下のpublicに.htaccessがない!とりあえず.htaccessを作成して、

  1. RewriteBase /adbook/

とだけ書いて保存。

  1. http://localhost/adbook/adbooks

にアクセスしてみたらエラー。

.htaccessを自分で作ったのが原因かと思って調べると、Rails2.1.0からpublic/.htaccessがなくなったらしい。その代わり.htaccessの書き方のサンプルが、Railsアプリフォルダ以下のREADMEに書いてありましたヨ!!わかんないって。.htaccessの内容は次のようにしました。コメントは削除してます。

  1. #AddHandler fastcgi-script .fcgi
  2. #AddHandler cgi-script .cgi
  3. #Options +FollowSymLinks +ExecCGI
  4.  
  5. RewriteEngine On
  6. RewriteBase /adbook/
  7. RewriteRule ^$ index.html [QSA]
  8. RewriteRule ^([^.]+)$ $1.html [QSA]
  9. RewriteCond %{REQUEST_FILENAME} !-f
  10. RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
  11.  
  12. ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
  1. http://localhost/adbook/adbooks

にアクセスするとちゃんと動いてる!

でもやっぱりRuby on Railsをcgiで動かすと遅いです。それはもうびっくりするくらい遅いです。