- 追加された行はこの色です。
- 削除された行はこの色です。
* Rails3 [#b69db0dd]
** このページについて [#maa821ec]
Rails3 を Ubuntu 7.10 上にインストールして、scaffold を用いたお試しアプリを作るまでの過程を書いています。環境構築がメインになります。
** インストール [#a5e24e3c]
*** Ruby の用意 [#fa15e918]
*** Ruby 本体の用意 [#fa15e918]
Ubuntu 7.10 にインストールしようと思いましたが、ruby1.8.7 が必要です。ところが、Ubuntu7.10 のパッケージでは、ruby1.8.6までしかないようです。
どうせ手動でインストールするなら、Rails3 とするため、ruby1.9.2 をインストールしました。tar ball をダウンロードして、普通に make と make install しました。
*** RubyGems [#ub42a75b]
Ruby によるバージョン管理ツールである gem が必要になります。今回は apt-get でパッケージインストールしました。
$ sudo apt-get install gem
*** Rails [#de77beb5]
gem を使ってインストールしました。
$ sudo gem install rails
*** Mysql [#rf48613c]
*** Mysqlへのアダプタ [#rf48613c]
データベースに mysql を使いたいので、アダプタをインストールします。
$ gem install mysql2
$ sudo gem install mysql2
** Rails によるアプリ構築 [#j3ac657b]
*** 雛型構築 [#yc368dc3]
まず、以下のコマンドで雛型を作ります。rails の後には、適当な名前を書いて下さい。
$ rails StudyMemo
上記の例の場合だと、StudyMemo というディレクトリが作成されます。ディレクトリ内に入り、Gemsfile を開きます。先頭のほうにある gem 'mysql2' を以下のように指定して下さい。mysql2 の 0.3 は Rails 3.1 向けに作られているそうで、 Rails 3.0 では使えないようです。最新を使わないように、Gemfile を書き換えておく必要があります。
上記の例の場合だと、StudyMemo というディレクトリが作成されます。ディレクトリ内に入り、Gemsfile を開きます。先頭のほうにある gem 'mysql2' を以下のように指定して下さい。mysql2 の 0.3 は Rails 3.1 向けに作られているそうで、 Rails 3.0 では使えないようです ([[参考:http://blog.pg1x.com/2011/05/06/ubuntu11-04%E3%81%A7mysql2%E3%81%AEbundle-install%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%99%E3%82%8B/]]) 。最新を使わないように、Gemfile を書き換えておく必要があります。(※下記はコマンドではなく、ファイル内の記述ですよ)
gem 'mysql2', '< 0.3'
そして、以下のコマンドを使って、StudyMemo のパッケージを関連付けます。
$ bundle install
*** 動作確認 [#z33256aa]
まず、簡易 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
** データベースとの接続 [#ked36950]
*** database.ymlの設定 [#x50834b7]
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 ジェネレータ [#e9217e8c]
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 となるようです。
利用できるデータ型については、以下のサイトさまのページをご確認下さい。
- [[第5回 scaffoldをやり直してカラムを増やしてみる – Rails格闘記 (ポンクソフト):http://ponk.jp/?p=2190]]
*** データマイグレーション [#vfeb96e0]
実際に、データベース上にテーブルを作成します。以下のコマンドを発行すれば良いです。もし既存のテーブルを利用する場合は、本作業は不要です。
$ rake db:migrate
ただし、既存のテーブルを扱う場合は、テーブル名の制約に注意が必要です。Rails では、モデル名の複数形がテーブル名になるので、既存のテーブル名もそれに合わせて修正しておく必要があります。
** 動作確認 [#y34334ed]
*** 確認の手順 [#l46f488d]
簡易 Web サーバを起動します。
$ rails server
以下の URL にアクセスします。パスには、テーブル名の複数形を指定します。単純に "s" を付けるだけではダメなケースもあるので、きちんと英語の複数形にして下さい。
http://[サーバ名]:3000/studies
これで、データベースを操作するための HTML インターフェイスが表示されるはずです。問題がなければ、これで完了です。
*** openssl [#c950ff36]
以下のメッセージでエラーが出た場合、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 は不要です。
** メンテナンス [#k3948d63]
テーブルを途中で変更したい場合は、一旦削除して再び登録する方法があります。
$ rails destroy scaffold study
$ rails g scaffold study id:integer subject:string
----
** 履歴 [#v361bc91]
- 2011/05/29 ぼくぴ 新規作成