« 2007年03月 | メイン | 2007年06月 »

2007年04月19日

[Rails][XP] RadRails+XPairtiseでペアプロ♪

こんにちわ。ばたっちです。

最近、社内のシステムのメンテナンスをしています。(メルマガ配信システムもそうですが)
ユーザが近くにいるので、すぐに声を聴くことができて、フィードバックの効果を感じることができますね。

昔からこういう作業することが多かったけど、もしかしたら向いてるのかな?(^^;


Eclipse 上でペアプロができるというプラグインがあったので、試してみました。
こんなやつです↓

XPairtise - http://xpairtise.sourceforge.net/

「エックスペアタイズ」って読むのかな?

上記のサイトで、スクリーンショット付きで説明されているので分かりやすいのですが、面白いなと思ったのは、ドライバとナビゲータという役割付けがされて、エディタの閲覧を共有しつつ、編集はドライバのみが可能という切り分け方をしています。

画面を共有するというのは聞くけど、エディタを排他共有するのは新鮮な気がしました。
(他のツールは知らないのですが。。A^^;)
IDE として Eclipse を使うのであれば、選択肢としてはよさそうですよ。


今回は、ちょっと踏み込んで RadRailsXPairtise を試してみました。
XPairtise を試してみたカンジだと、とくに開発言語には依存してなさそうだったので。。(^^;

まずは、環境構築。
残念ながら、RCP版の RadRails だと、プラグインの追加ができなかった(できるかもしれないけど、方法が分からない。。)ので、プラグイン版の RadRailsを入れて共存させる方法にしてみました。

新規に Eclipse をインストールします。(説明は省略)

先に、RadRailsに必要なプラグインをインストールしてしまいましょう。
ファイルメニューから、[Help]→[Software Updates]→[Find and Install]を選択し、プラグインのインストーラ画面を開きます。

[Search for new features to install] を選んで次へ進み、[New Remote Site] でアップデートサイトを登録して、プラグインを入れます。
インストールするプラグインはこんなカンジ。

  RDT
  http://updatesite.rubypeople.org/release
  RadRails
  http://radrails.sourceforge.net/update
  Subclipse
  http://subclipse.tigris.org/update_1.0.x

RadRails の環境ができたら、次に XPairtiseのプラグインを入れます。
こちらは、ファイルをダウンロードして、圧縮ファイルを手動で展開する方法で。

ダウンロードサイトはこちら。
http://sourceforge.net/projects/xpairtise/

必要なファイルは以下の2つです。

de.fuh.xpairtise_plugin_1.0.1.zip
de.fuh.xpairtise_server_1.0.1.zip

プラグインの方は ZIPファイルを展開してできた JARファイルを、Eclipseの pluginフォルダにコピーして、Eclipse を再起動すれば OKです。


サーバの方は、クライアント(Eclipse)から接続する前に起動しておきましょう。
展開したファイル中の、runserver.batを実行すれば OK です。

ただし、サーバではユーザやセッションの情報を、XPairtiseUserDB.dtd/xml、XPairtiseSessionDB.dtd/xml というファイルを作って管理するようなのですが、以前に生成されたこれらのファイルが残っていると、次回の起動時にエラーになって起動できなくなってしまいました。

サーバのフォルダにある、これらの4つのファイルを削除してから、runserver.batを実行しましょう。(ユーザとか登録し直しだけど。。)


クライアント側は、パースペクティブの切替で「XPairtise」を選択してペアプロモードにします。

xpairtise1.jpg

最初にサーバへアカウントを登録する必要があるので、[Window]→[Preference]→[XPairtise]で設定画面を開いて[Create New Account]からアカウントを作成します。
アカウントを作成すると自動でサーバに接続され、[XP User Gallery]ビューに接続状態が表示されます。

xpairtise_pref.jpg
xpairtise_user.jpg

ペアプロを開始するには[XP Session Gallery]ビューを開いて、右クリックメニューの[Create]を選択して、セッションを作成します。

xpairtise_session.jpg

セッションを作成しただけでは、まだセッションに参加していることにはならないので[XP Session Gallery]ビューに表示されたセッションを右クリックして[Join]します。
2人目以降も[XP Session Gallery]ビューを右クリックし、[Join]でセッションに参加します。

2人以上セッションに参加すると、ペアプロが開始できるようになります。
先にセッションに参加した人が「ドライバ」になるみたいですね。
役割を入れ替えたいときは、ウィンドウ下の[Press to request a role change]ボタン(虫眼鏡みたいなやつ)で役割変更要求を相手に送り、相手が承諾したら変更になるようです。

xpairtise_drvnav.jpg

Ruby のコードでもちゃんとエディタを共有できていますね。

XPairtise はエディタの他にも、ホワイトボードやチャットなどの共有機能もあります。
VPNとかで接続された環境なら、遠隔でのペアプロもできますね♪

あとは、インターネット越しでも使えるのかな?(^^;

2007年04月03日

[Rails] RailsでSQLite♪

こんにちわ。ばたっちです。

年度変わっちゃいました(汗

メルマガ配信システムも開発が続くことになり、社内でもRailsが市民権を得てきたかな。
ユーザに喜んでもらえるシステムに育てていきたいですね♪

もう、忘れかけていたUSBメモリの続きw
前回は、SQLiteとRubyのモジュールをインストールしました。


あ、そうそう。
Windowsのバッチファイルでドライブ名を取る件は結局分からなかったので、
バッチの引数で指定できるようにしました。

chenv.bat
----
@echo off
set Drive=%1% ←ここ
set Path=%Drive%:\ruby\bin;%Path%
set Path=%Drive%:\sqlite3;%Path%
----

こうやって使います。

E:\> chenv.bat E


さて、それは置いといて。。
RailsでSQLiteを使うためには、database.ymlを変更するだけでOKです。

MySQLの場合はこんなカンジですが、

config/database.yml
----
development:
 adapter: mysql
 database: webnote_development
 username: root
 password: mysql
 host: localhost
 encoding: UTF8

SQLiteだとこんなカンジになります。

config/database.yml
----
development:
 adapter: sqlite3
 dbfile: db/webnote_development.db
 encoding: UTF8

ストレージがファイルになるので、database: ではなく、dbfile: というのを使うんですね。
dbfile: には、アプリケーションのトップディレクトリ(webnoteとか)からの相対パスを指定します。






「実践 Ruby on Rails Webプログラミング入門」

出版:株式会社ソーテック社

演習では、あらかじめmemopagesというテーブルを作って、scaffoldで雛形を生成しているので、
同じようにやってみましょう。

E:\> sqlite3.exe db\webnote_development.db
sqlite> create table memopages (
   ...>  id  int not null,
   ...>  title varchar(255) not null,
   ...>  content text,
   ...>  primary key (id)
   ...> );
sqlite> .schema
CREATE TABLE memopages (
 id  int not null,
 title varchar(255) not null,
 content text,
 primary key (id)
);
CREATE TABLE schema_info (version integer);

rakeでスキーマ定義のダンプを採ってみるとこんなカンジになりました。

E:\> rake db:schema:dump
 :
 create_table "memopages", :force => true do |t|
  t.column "title", :string, :default => "", :null => false
  t.column "content", :text, :default => ""
  t.column "updated_at", :datetime
 end

 add_index "memopages", ["id"], :name => "sqlite_autoindex_memopages_1", :unique => true
 :

scaffoldしたら、演習を参考にmigrate対応します。
migrateのテーブル生成スクリプトはこんなカンジ

class CreateMemoPage < ActiveRecord::Migration
 def self.up
  create_table :memopages do |t|
   t.column :title, :string, :null => false
   t.column :content, :text
   t.column :updated_at, :datetime
  end
 end

 def self.down
  drop_table :memopages
 end
end

migrateでテーブル作ると、スキーマのダンプから add_index 行がなくなるんですよね。
ま、いいか(いいのか?)

db\schema.db
----
 create_table "memopages", :force => true do |t|
  t.column "title", :string, :default => "", :null => false
  t.column "content", :text, :default => ""
  t.column "updated_at", :datetime
 end

ActiveRecord使えば、異なるデータベースに対応するのも簡単ですね♪
ちょっとした個人用途やプロジェクトで使うくらいのアプリケーションならSQLiteで十分そうだし。