2007年09月10日

Ruby on RailsをEclipseでいこう その7 〜AutoIncrementでないPKに対応の巻〜

今日は、その6で作成した"Item"テーブルのPKの列名を変更("id"→"item_id")し、かつ、AutoIncrementオプションをはずします。

ALTER TABLE `ruby`.`item` CHANGE COLUMN `id` `item_id` INTEGER UNSIGNED NOT NULL DEFAULT 0,
DROP PRIMARY KEY,
ADD PRIMARY KEY USING BTREE(`item_id`);

/models/item.rbの内容を以下のように書き換えます。
(変更前)
class Item < ActiveRecord::Base
end

(変更後)
class Item < ActiveRecord::Base
set_primary_key "item_id" #PK列名を変更します。

def before_create #insert実行直前に自動的に呼ばれます。
self.id = self.item_id_next
end

def item_id_next #自前で一意キーを取得します。
return ActiveRecord::Base.connection.select_value('select ifnull(max(item_id),0)+1 from item')
#ifnullを追加(2007/09/11),1レコード目のsaveでエラーになるため end
end

※before_create中の代入式の左辺の変数名は、PK列名に関わらず"id"になります。(う〜ん、これってPKが複合キーの場合はどうなるんだろう?)


posted by 台北猫々 at 21:56| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2007年09月09日

今日も暑いですねえ

なかなか残暑が厳しいですね。

蝉はまだまだ元気です。

今日は、この間からパンク気味だった自転車が復活しました。

来週行く予定のハイキング以上登山未満のために軍手を購入。

この週末はちょっとテンション下がり気味。

そんな週末でした猫
posted by 台北猫々 at 23:35| Comment(0) | TrackBack(0) | 日記

Ruby on RailsをEclipseでいこう その6 〜規約外テーブルへのscaffoldの巻〜

複数形テーブル名規約をはずして、scaffoldしてみます。

DBテーブルは以下のものを準備します。
CREATE TABLE `ruby`.`item` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`url` VARCHAR(255) NOT NULL,
`title` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE = MyISAM;

先ずは、/config/environment.rbの末尾に以下の行を追加します。
(# Include your application configuration below の下)
ActiveRecord::Base.pluralize_table_names = false

さらにEclipseの右下にあるRailsビューの「ジェネレータ」タブを開きます。

上の画像のように「model」を選択して、「Item」と入力して実行ボタンをクリックします。

生成された/models/item.rbを開いて以下のように変更します。

class Item < ActiveRecord::Base
set_table_name "item" # ←この行を追加
end


さらにさらにEclipseの右下にあるRailsビューの「ジェネレータ」タブを開きます。

ruby_eclipse_pluralize_false02.jpg

上の画像のように「scaffold」を選択して、「Item Item」と入力して実行ボタンをクリックします。
※Usage : scaffold テーブル名 [コントローラ名]
テーブル名内に大文字があると、自動的にアンダースコア("_")が挿入されてしまうので注意です。
→ "SampleTable" は "sample_table"として扱われる。

いつものようにWEBrickで確認しましょう(http://localhost:3000/item)←実際は全部半角小文字

これで、規約外(テーブル名が複数形でない)のDBテーブルに対するCRUDアプリが自動生成できます。

Web上では、scaffoldは既存のmodelを読み込まない障害があるという情報もありましたが、現在では解決しているようですね勘違いでした。scaffoldは、modelの中を見ていません。scaffoldの引数で渡される「テーブル名」でDBから情報を引っ張ります(2007/09/10)。
猫
posted by 台北猫々 at 08:55| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

単純なリメイクというわけでは、ないのですね

「ヱヴァンゲリヲン新劇場版:序」を見てきちゃいました。

レイトショーに行ったので空いてるんかなあ、と思っていたのですが、だいぶ混んでいました。

10年ぐらい前に見て、大変な閉塞感、悲壮感を気に入っていたのですが、今回新たに作成したということで、どうなったたのかな?という感じで見に行きました。

映像・音楽は、「10年1昔」というのは本当だなというぐらいに進歩していますね。

肝心の内容の方は、より閉塞感、悲壮感が増していて、とてもいい感じです。実際、リメイクというわけではなく、心情的な部分を旧作より深く描写し、また、全体のストーリー運びの完成度が増しているような気がします。

なんか、ちょっと気になって調べると、旧約聖書では「リリス」は「アダム」の初めの妻(「イブ=エヴァ」は、「リリス」の後妻)という解釈もあるのですね。

posted by 台北猫々 at 02:09| Comment(0) | TrackBack(0) | 日記

2007年09月08日

ことの葉ひらひら その1

「"信頼"の意味は、相手に対する期待ではなく、自分に対する決意です。」

一体どこで聞いた言葉なのか、忘れてしまいました。誰の言葉だったかなあ猫
posted by 台北猫々 at 10:13| Comment(0) | TrackBack(0) | ことの葉

2007年09月07日

Ruby on RailsをEclipseでいこう その5 〜primary key列名の変更の巻〜

Ruby on Railsの有名な規約として、テーブルのPKは1つで、列名は"id"にするというのがあります。

この規約の内、列名の方をはずしてみます。

先ずはテーブルの定義を変更しましょう。
(PKの"id"列の列名を"customer_id"に変更します)
ALTER TABLE `ruby`.`samples` CHANGE COLUMN `id` `customer_id` INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT,
DROP PRIMARY KEY,
ADD PRIMARY KEY USING BTREE(`customer_id`);

そして、
その4のScaffoldで作成したモジュールの中の/app/models/sample.rbに1行追加します。

class Sample < ActiveRecord::Base
set_primary_key "customer_id" # ←PK列名の指定追加
end

とりあえず、これでいけます。猫
posted by 台北猫々 at 22:21| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2007年09月06日

Ruby on RailsをEclipseでいこう その4 〜Scaffoldの巻〜

Ruby on RailsのアピールポイントであるScaffoldを使ってみます。

その2で作成したRailsプロジェクトを開きます。さらにEclipseの右下にあるRailsビューの「ジェネレータ」タブを開きます。

ruby_eclipse_scaffold01.jpg

上画像のように「scaffold」を選択して、「Sample Sample」と入力して実行ボタンをクリックします。
※Usage : scaffold モデル名 [コントローラ名]

ruby_eclipse_scaffold02.jpg

「コンソール」タブに作成されてファイルの一覧が表示されます。

その3のように、WEBrickサーバを起動して、Eclipseの内部ブラウザを起動します。
以下の画像内のURLにアクセスしましょう。(http://localhost:3000/sample/)←実際は全部半角小文字

ruby_eclipse_scaffold03.jpg

上画像のように、作成したWebアプリのトップページが表示されると成功です。Sampleテーブルに対してCRUDできるWebアプリの出来上がりです。

この辺はRuby on Railsで一番アピールされるポイントですね。確かに、15分くらいでDBテーブルのメンテナンスWebアプリができます。

しかし、これから先が段々と情報が少なくなる領域に入っていきます猫
posted by 台北猫々 at 22:00| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2007年09月05日

Ruby on RailsをEclipseでいこう その3 〜DB環境準備の巻〜

DBはMySQLを使用します。
私の場合はXAMPPで入れてしまっています。

MySQLにデータベースとユーザを準備します。
お試し用として以下の感じにします。当たり前ですが、作成するユーザは"ruby"データベースへのアクセス権限が必要です。
データベース名:ruby
ユーザ:ruby
パスワード:ruby
MySQL AdministratorなどのGUIツールを使うと楽チンです。

さらにお試し用テーブルを作成します。
(AUTO_INCREMENTを追記 2007/9/6)
CREATE TABLE `ruby`.`samples` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE = MyISAM;

さらにさらに、その2で作成したRailsプロジェクト内のconfig/database.ymlを編集します。[development]セクションを以下のようにします。他のセクションはとりあえず置いておきます。

development:
adapter: mysql
database: ruby
username: ruby
password: ruby
host: localhost

これでDB環境の準備は整いました。猫


posted by 台北猫々 at 21:07| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2007年09月04日

Ruby on RailsをEclipseでいこう その2

Ruby on Railsのプロジェクトを作成しましょう。
メニューバーの「ファイル」→「新規」→「プロジェクト」で以下のウインドウを開いて、

ruby_eclipse_new_project01.jpg

Railsプロジェクトを選択して、「次へ」をクリックします。すると次のページが表示されます。

ruby_eclipse_new_project02.jpg

とりあえずデフォルトオプションで作成します。

ruby_eclipse_new_project03.jpg

これでプロジェクトを作成できました。ついでに内臓Ruby(Web)サーバのWEBrickサーバの動作を見ましょう。Eclipseの右下のビューの「サーバ」タブをクリックします。以下のようにサーバが一つ表示されます。

ruby_eclipse_new_project04.jpg

サーバ行を選択反転して「起動」させましょう。そして、Eclipseの内部ブラウザを起動して、以下の画像内のURLにアクセスしましょう。(http://localhost:3000/)←実際は全部半角小文字

ruby_eclipse_new_project05.jpg

上の画像内のような画面が表示されればOK猫


posted by 台北猫々 at 21:41| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2007年09月03日

今日は休暇deプールと温泉

20070903umi..jpg

今日は遅い夏休みで、バスで小旅行。
海の見える露天風呂と室内プールのある立ち寄り湯にいってきました。平日なので、温泉もプールも空き空き猫

一人で露天風呂に入り、目の前の海をみつつ、波の音に耳を傾けていると、なんだか時間の感覚が薄れていくようでした。

プールは本当に久しぶりで、泳ぐということも久しぶりだったのですが、昔できなかった平泳ぎがなんとなくできるようになっていたのは不思議(多分、傍から見ると変な泳ぎ方しているのでしょうが)。

温泉の後は、近くの砂浜でビールを飲みながら、打ち寄せる波をただ見ていました。波の音って、なんか落ち着きます。多分アルファー波でまくりだったでしょう。

また、冬にいってみたいと思う今日この頃でした。


posted by 台北猫々 at 22:31| Comment(0) | TrackBack(0) | 日記

2007年09月02日

今日も今日とて

早起きはしているのですが、基本ゴロゴロゴロゴロゴロゴロ。
惰眠大好き!な感じ。

ゴロゴロするのも飽きたので、先日優秀アルゴリズム賞を取った株ロボの改造仕様を検討しました。

やはり利益確定/損失確定のタイミングに改良が必要そう。トレーリングストップを取り入れてみよう。
posted by 台北猫々 at 21:23| Comment(0) | TrackBack(0) | 日記

Ruby on RailsをEclipseでいこう

とりあえず、
AmaterasIDE InstallerからEclipseのインストーラーをダウンロードして、Eclispe(3.2.2)をインストールします。

次に
AptanaEclipseプラグインをインストールします。

さらに
Eclipseのメニューバー→ウインドウ→設定で、設定ウインドウを開き「Ruby」と「Rails」にRuby環境のパス情報を設定します。

「Ruby」の「インストール済みのインタプリター」で以下の設定
 C:\usr\local\ruby

ruby_eclipse_set1.jpg

「Rails」の「構成」で以下を設定
「Railsパス」→C:\usr\local\ruby\bin\rails
「Rakeパス」→C:\usr\local\ruby\bin\rake
ruby_eclipse_set2.jpg

これで、Eclipse+Ruby on Rails環境完成です!
posted by 台北猫々 at 10:22| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2007年09月01日

惰眠を貪る

「惰眠」
―なまけて眠ること。転じて、何もしないで怠けていること。

今日はゴロゴロゴロゴロしていましたが、突如としてその惰眠から覚めましたので、Ruby on Railsのセットアップなどをしました。
posted by 台北猫々 at 23:05| Comment(0) | TrackBack(0) | 日記

Ruby on Railsせっとあっぷ

とりあえずRubyをインストールします。
環境はWindowsXP SP2

RubyForgeのOne-Click Installer - Windows
からruby186-25.exeをダウンロードします。

ruby186-25.exeを実行して、c:\usr\local\ruby(私の場合)にインストールします。この時のインストールコンポーネント↓です。この後、RailsをインストールするのにRubyGemsが必要になるので忘れないようにインストールします。

ruby_install_component.jpg

そして、いよいよRuby on Railsをインストールします。コマンドプロンプトで以下のコマンドを実行します(インタネット環境が前提です)。
gem install rails --include-dependencies

↓こんなふうにインストールされます。

>>gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-1.2.3
Successfully installed activesupport-1.4.2
Successfully installed activerecord-1.15.3
Successfully installed actionpack-1.13.3
Successfully installed actionmailer-1.3.3
Successfully installed actionwebservice-1.2.3
Installing ri documentation for activesupport-1.4.2...
Installing ri documentation for activerecord-1.15.3...
Installing ri documentation for actionpack-1.13.3...
Installing ri documentation for actionmailer-1.3.3...
Installing ri documentation for actionwebservice-1.2.3...
Installing RDoc documentation for activesupport-1.4.2...
Installing RDoc documentation for activerecord-1.15.3...
Installing RDoc documentation for actionpack-1.13.3...
Installing RDoc documentation for actionmailer-1.3.3...
Installing RDoc documentation for actionwebservice-1.2.3...
posted by 台北猫々 at 22:32| Comment(0) | TrackBack(0) | 技術メモ(Ruby)