Rails3

このページについて

Rails3 を Ubuntu 7.10 上にインストールして、scaffold を用いたお試しアプリを作るまでの過程を書いています。環境構築がメインになります。

インストール

Ruby 本体の用意

Ubuntu 7.10 にインストールしようと思いましたが、ruby1.8.7 が必要です。ところが、Ubuntu7.10 のパッケージでは、ruby1.8.6までしかないようです。

どうせ手動でインストールするなら、Rails3 とするため、ruby1.9.2 をインストールしました。tar ball をダウンロードして、普通に make と make install しました。

RubyGems

Ruby によるバージョン管理ツールである gem が必要になります。今回は apt-get でパッケージインストールしました。

$ sudo apt-get install gem

Rails

gem を使ってインストールしました。

$ sudo gem install rails

Mysqlへのアダプタ

データベースに mysql を使いたいので、アダプタをインストールします。

$ sudo gem install mysql2

Rails によるアプリ構築

雛型構築

まず、以下のコマンドで雛型を作ります。rails の後には、適当な名前を書いて下さい。

$ rails StudyMemo

上記の例の場合だと、StudyMemo というディレクトリが作成されます。ディレクトリ内に入り、Gemsfile を開きます。先頭のほうにある gem 'mysql2' を以下のように指定して下さい。mysql2 の 0.3 は Rails 3.1 向けに作られているそうで、 Rails 3.0 では使えないようです (参考) 。最新を使わないように、Gemfile を書き換えておく必要があります。(※下記はコマンドではなく、ファイル内の記述ですよ)

gem 'mysql2', '< 0.3'

そして、以下のコマンドを使って、StudyMemo のパッケージを関連付けます。

$ bundle install

動作確認

まず、簡易 Web サーバを起動します。

$ cd StudyMemo
$ rails server

Web ブラウザで、 http://[サーバ]:3000/ にアクセスします。表示されたページの "About your application’s environment" をクリックします。特にエラーなく、各バージョンが表示されれば、OK です。

なお、このように mysql2 のバージョンを正しく合わせておかないと、以下のようなエラーになるはずです。

Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter`
(no such file to load -- active_record/connection_adapters/mysql2_adapter

データベースとの接続

database.ymlの設定

config/database.yml の設定内容を書き換えます。★印のところを、環境に合わせて修正して下さい。

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: study_log ★
  pool: 5
  username: username ★
  password: password ★
  socket: /var/run/mysqld/mysqld.sock

なお、password が数字のみの場合、yaml の書式により、それは数値だと解釈されます。数字のみの文字列を、文字列と解釈させたい場合は、ダブルクォート("")で括って下さい。

password: "12341234"

scaffold ジェネレータ

scaffold ジェネレータを使うと、データベースの操作に必要な最低限の機能を生成してくれます。多くのアプリでは、データベースの操作は必須だと思うので、この雛型を活用して、楽が出来ます。

こうした雛型に対して、自分の作りたいアプリを合わせていくやり方により、Rails の効果が発揮されるものと思います。自分の作りたいものに、Rails を無理やりカスタマイズしては、Rails を使う意味は薄いですね。ERP パッケージと同様です。最初、このへんの設計思想が分からずに、うまく入り込めませんでした。

以下のコマンドで、テーブルのための雛型を作成します。これはあくまで Rails 上に必要なファイルを揃えるだけで、データベース上には何も作成しません。

下記の例では、study がテーブル名、以降が [カラム名]:[データ型] となっています。

$ rails g scaffold study id:integer date:date subject:string time:integer comment:text

なお、"id" という文字列が入ったカラム名は、自動的に AUTO INCREMENT NOT NULL となるようです。

利用できるデータ型については、以下のサイトさまのページをご確認下さい。

データマイグレーション

実際に、データベース上にテーブルを作成します。以下のコマンドを発行すれば良いです。もし既存のテーブルを利用する場合は、本作業は不要です。

$ rake db:migrate

ただし、既存のテーブルを扱う場合は、テーブル名の制約に注意が必要です。Rails では、モデル名の複数形がテーブル名になるので、既存のテーブル名もそれに合わせて修正しておく必要があります。

動作確認

確認の手順

簡易 Web サーバを起動します。

$ rails server

以下の URL にアクセスします。パスには、テーブル名の複数形を指定します。単純に "s" を付けるだけではダメなケースもあるので、きちんと英語の複数形にして下さい。

http://[サーバ名]:3000/studies

これで、データベースを操作するための HTML インターフェイスが表示されるはずです。問題がなければ、これで完了です。

openssl

以下のメッセージでエラーが出た場合、ruby の openssl 拡張ライブラリを入れる必要があります。

rails3 no such file to load --openssl

以下の手順で、拡張ライブラリをインストールします。

$ cd /usr/local/src/ruby-1.9.2-p180/ext/openssl
$ ruby extconf.rb

ここで再びエラーが出る場合、libssl-dev をapt-get で入れます。なお、libssl-dev はディストリビューションによって異なります (openssel-devel など) 。

$ sudo apt-get install libssl-dev

その後は、make , make install を実行します。

$ sudo make
$ sudo make install

※余談ですが、dev は開発用キットの意味です。そのモジュールの機能を利用するものを "ビルド" する際に、必要になります。単に利用するだけなら、-dev は不要です。

メンテナンス

テーブルを途中で変更したい場合は、一旦削除して再び登録する方法があります。

$ rails destroy scaffold study
$ rails g scaffold study id:integer subject:string

履歴

  • 2011/05/29 ぼくぴ 新規作成

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sun, 29 May 2011 15:52:29 JST (2126d)