Rails3 を Ubuntu 7.10 上にインストールして、scaffold を用いたお試しアプリを作るまでの過程を書いています。環境構築がメインになります。
Ubuntu 7.10 にインストールしようと思いましたが、ruby1.8.7 が必要です。ところが、Ubuntu7.10 のパッケージでは、ruby1.8.6までしかないようです。
どうせ手動でインストールするなら、Rails3 とするため、ruby1.9.2 をインストールしました。tar ball をダウンロードして、普通に make と make install しました。
Ruby によるバージョン管理ツールである gem が必要になります。今回は apt-get でパッケージインストールしました。
$ sudo apt-get install gem
gem を使ってインストールしました。
$ sudo gem install rails
データベースに mysql を使いたいので、アダプタをインストールします。
$ sudo gem install mysql2
まず、以下のコマンドで雛型を作ります。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
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 ジェネレータを使うと、データベースの操作に必要な最低限の機能を生成してくれます。多くのアプリでは、データベースの操作は必須だと思うので、この雛型を活用して、楽が出来ます。
こうした雛型に対して、自分の作りたいアプリを合わせていくやり方により、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 インターフェイスが表示されるはずです。問題がなければ、これで完了です。
以下のメッセージでエラーが出た場合、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