Index by title

coLinux で作る 快適Ruby on Rails開発環境

質問などは、このページの一番下のコメント欄に書き込んで下さい。

対象者

参考資料

インストール

準備しておくソフト

coLinux インストール

1. ネットを監視するセキュリティソフト(Notne, Macfee...)を OFF にする

!secure_off.png!

2. http://sourceforge.net/project/showfiles.php?group_id=98788 から以下をダウンロード

3. coLinux-0.7.1.exe を実行してインストール

4. Ubuntu-6.06.1.ext3.1gb.bz2 を適当な解凍ツールを使い、coLinuxをインストールしたディレクトリー(ここでは:¥Program Files¥coLinux¥)に解凍します。

5. coLinux 設定ファイルを作成します。

cobd0="c:¥coLinux¥root_fs" 
   ↓
cobd0="D:\Program Files\coLinux\Ubuntu-6.06.1.ext3.1gb" 

ro
   ↓
#ro

#mem=64
   ↓
mem=256  

eth0=slirp
   ↓
eth0=tuntap

注意 mem= は coLinux のメモリー割り当てです。メモリーをたくさん積んでいるPCの場合は大きい方が良いかもしれません、
私が使っているPCはWindowsXP メモリー 1Gbyte のものです。

6. DOSプロンプトを開き、coLinux を起動します

> D:
> cd ¥Proguram Files¥coLinux
> colinux-daemon @ubuntu.conf

7. 設定に間違いが無ければ、 DOS 窓に上のようなメッセージが表示され、別ウィンドウに 以下のように coLinux が起動されます。

!coLinux.png!
上のように、 ubuntu login: が表示されれば成功です。

ネットワーク設定

ネットワーク構成ですが、coLinux にはPCとは別のセングメントを割り当てます。

coLinux と PC のネットワークの間は TAP-Win32 というドライバー(ブリッジソフト)が変換するので、coLinux と PC は通信が出来ます。

しかし coLiunx からインターネットにアクセスできません、そこでWindowsの「インターネットの共有」機能(NAT)を設定し、coLiunx からインターネットにアクセスできるようにします。

WindowsXP HOME Edition では、インターネットの共有で設定出来るアドレスは 192.168.0.1 に限られるので、今回は以下のように設定します。

また、PC 、インタネット接続のルーターは以下のアドレスになっているとして書きます。

1. PC 側設定
coLinuxが立ち上がった時点で、ネットワーク接続を表示すると以下のように、TAP-Win32 Adapter とうローカルエリア接続があります。
ここでは「ローカルエリア接続 3」になっていますが環境によって違う名前が付きます。

!net_list.png!

2. TAP-Win32 Adapter のプロパティーを表示し、アドレスを 192.168.0.1 に設定します。

!net_prop1.png!

3. インターネットに接続されている接続(ここでは、ワイヤレスネットワーク接続)に「インターネット接続の共有」を設定します。
インターネットの共有はプロパティーの「詳細設定」タブにあります、
「インターネット接続の共有」のチェック と 「ホームネットワーク接続」に TAP-Win32 Adapterを選択します。

!net_prop3.png!

4. coLinux console に root でログインします。パスワードは root です、インストールが終わったら変更しましょうね。

5. ログインできたら、ネットワークの設定を変更します

# cp /etc/network/interfaces /etc/network/interfaces.org   ← 変更前のファイルはバックアップしておきましょう
# vi /etc/network/interfaces

 ※※  iface eth0 inet static 以下を下のように変更します  

iface eth0 inet static
   address 192.168.0.2
   broadcast 192.168.0.255
   netmask 255.255.255.0
   gateway 192.168.0.1
注意 coLinux console は英語キーボードの配列になっているので、記号がキーに書かれているのと違う文字が入ります ^^);

6. DNS の設定も変更します。通常のブローバンドルーターを使っている場合は、DNS はルータのIPアドレスです。

# cp/etc/resolv.conf /etc/resolv.conf.org 
# vi /etc/resolv.conf

 ※※ ブローバンドルーターのIPアドレスを指定
nameserver 192.168.1.1

7. ネットワークを設定

# /etc/init.d/networking restart

8. 確認、まずは自分(coLinux)にpingが届くこと

# ping -c 3 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.155 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.158 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.161 ms

--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2015ms
rtt min/avg/max/mdev = 0.155/0.158/0.161/0.002 ms

9. OKなら TAP-Win32 にpingが届くことを確認

# ping -c 3 192.168.0.1

 以下省略

10. OKなら PC にpingが届くことを確認

# ping -c 3 192.168.1.12
 以下省略

11. OKなら ルーター にpingが届くことを確認

# ping -c 3 192.168.1.1
 以下省略

12. OKなら ネット上のサイト にpingが届くことを確認

# ping -c 3 mixi.jp
 以下省略

アカウント作成

1. 自分のログイン用アカウントを作りましょう。ログイン名/パスワードは PC と同じにして下さい。

# adduser taro     ← ログイン名 trao を作成
Adding user @taro'...
Adding new group @taro' (1001).
Adding new user @taro' (1001) with group @taro'.
Creating home directory @/home/taro'.
Copying files from @/etc/skel'
Enter new UNIX password:                 ← パスワード
Retype new UNIX password:              ← パスワード
passwd: password updated successfully
Changing the user information for taro
Enter the new value, or press ENTER for the default
    Full Name []:                                       ← Enter のみでよい
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
Is the information correct? [y/N] y      ← Y を忘れずに

2. sudo が使えるように設定します

# vi /etc/sudoers
root    ALL=(ALL) ALL
taro      ALL=(ALL) ALL     ←  自分のアカウントを rootと同様に追加

いったん終了、coLinux の再起動

この辺でいったん、coLinux を終了してみましょう。

# /sbin/shutdown -h 0

coLinux consoleにメッセージが数行表示され Power down と表示されたら 終了完了です。

coLinuxを起動した、DOSプロンプト上の colinux-daemon が終了しているはずです。

再起動は 以前と同じく

colinux-daemon @ubuntu.conf

ターミナルエミュレータからのログイン

coLinux console はスクロールが出来ない、日本語キーに対応してないので、putty 等のターミナルエミュレータから coLinuxにログインします。
ログイン先は 192.168.0.2 です。 上で作成したアカウントでログインしてみましょう。

Cコンパイラー等のインストール

モジュール等のインストールで必要になるCコンパイラー(gcc)等をインストールします。
インストールにはdebian(Ubuntuはdebianベースのlinux)の apt を使います。

$ sudo apt-get update    ← インストーラの更新(?)
$ sudo apt-get install libc6-dev gcc make 

途中で Install these packages without verification [y/N]? 等の確認がありますが y を入力して下さい。

rubyのインストール

debian に用意されている ruby は 1.8.4 と少し古いですが、今回はこれを使ってみます。

$ sudo apt-get ruby1.8 rdoc1.8 ri1.8 libreadline-ruby1.8 irb1.8 ruby1.8-dev
$ sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
$ ruby --version
ruby 1.8.4 (2005-12-24) [i486-linux]

ソースからの rubyインストール(オプション)

最新のruby をインストールしたい場合は、ソースからインストールします。

$ mkdir Install
$ cd Install
$ sudo apt-get install zlib1g-dev libreadline5-dev libopenssl libopenssl-dev
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2
$ tar xvjf ruby-1.8.6-p111.tar.bz2
$ cd ruby-1.8.6-p111
$ ./configure
$ make 
$ make test
$ sudo make install
$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux]

gem のインストール

$ mkdir Install
$ cd Install
$ wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
$ tar xvzf rubygems-0.9.4.tgz
$ cd rubygems-0.9.4
$ sudo ruby setup.rb
$ gem --version
0.9.4

rake,rails のインストール

$ sudo gem install rake -y
$ rake --version
rake, version 0.8.1
$ sudo gem install rails -y
$ rails --version
Rails 2.1.0

sqlite3 のインストール

$ sudo apt-get install sqlite3 libsqlite3-dev
$ sudo gem install sqlite3-ruby -- --with-sqlite3-include=/usr/include --with-sqlite3-lib=/usr/lib
Bulk updating Gem source index for: http://gems.rubyforge.org

$ sqlite3   
SQLite version 3.2.8
Enter ".help" for instructions
sqlite> .exit

samba のインストール(オプション)

ソースファイル等の作成・編集は Windows上のエディターで行いたい場合は samba を使って、coLinux上のディレクトリーを共有すると良いでしょう。

1. samaba のインストール

$ sudo apt-get install samba

2. samaba 用ログインの作成、 Windowsのログイン/パスワードで作成します。

$ sudo smbpasswd -a taro
New SMB password:
Retype new SMB password:      ← パスワード
Added user taro.                        ← パスワード
3. 設定ファイルの変更
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo vi /etc/samba/smb.conf

 ※※  変更した行のみ書きます

workgroup = MSHOME
    ↓
workgroup = EY-OFFICE.NET   ← 自分の使っているworkgroupに合わせる

server string = %h server (Samba, Ubuntu)
    ↓
server string = coLinux server

;[homes]
;   comment = Home Directories
;   browseable = no
     ↓
[homes]
   comment = Home Directories
   browseable = no

;   writable = no
     ↓
    writable = yes

;   create mask = 0600
     ↓
    create mask = 0644

;   directory mask = 0700
     ↓
    directory mask = 0755

4. Windows 側

!my_network.png!

質問

ご質問のある方は、私のBlog にコメント願います。



Ruby on Rails 開発環境の作り方(Windows)

WindowsPC で Ruby on Rails の開発できる環境を作ってみましょう。
初心者にもインストールが簡単なソフトを選んでみました。

WindowsPCの仕様

インストール

1-a. Ruby

http://rubyinstaller.org/ のDownload ページからRuby 1.9.2-p0 をダウンロドしインストールして下さい。

注意点

1-b. Rubyの動作確認

コマンドプロンプトを起動し ruby -v を実行し、以下のように表示されればOKです。
C:\>ruby -v
ruby 1.9.2p0 (2010-08-18) [i386-mingw32]

2-a. SQLite3 のインストール

今回は、とても簡単に扱えるデータベース SQLite3 を使います。

コマンド http://www.sqlite.org/sqlite-3_7_2.zip と DLL sqlitedll-3_7_2.zip をダウンロードし展開(解凍)します。

zip ファイルの中にあった、 sqlite3.exe, sqlite3.dll は C:¥Ruby¥bin (他の場所にRubyをインストールした場合は適宜よみかえて下さい)にコピーします。

sqlite3.def は不要です。

2-b. SQLite3 の確認

コマンドプロンプトで以下のようなコマンドを実行してみましょう。 以下のような表示が出ればOKです。

C:\Temp>sqlite3 test
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";" 
sqlite> .exit                  ← .exit で sqlite3 コマンドから抜ける

C:\Temp>

3. gem コマンドのバージョンアップ

Rubyライブラリーの管理コマンド gem を最新バージョンにしておきます。

C:\Temp> gem update --system

4. Ruby用 SQLite3ドライバーソフトのインストール

gem (Ruby Gems) からインストールします。コマンドプロンプトで以下のようなコマンドを実行してみましょう (終了するまで時間がかかるかもしれません)。

C:\Temp> gem install sqlite3-ruby   --no-rdoc --no-ri

5. Rails のインストール

Rails , Rake を gem (Ruby Gems) からインストールします。コマンドプロンプトで以下のようなコマンドを実行してみましょう (あるていど時間がかかります)。

C:\Temp> gem install rake --no-rdoc --no-ri
C:\Temp> gem install rails --no-rdoc --no-ri

7. rake のエラー対策 (暫定)

C:\Ruby\lib\ruby\gems\1.9.1\specifications\rake.gemspec ファイルを削除して下さい

6. ドキュメントのインストール

Ruby のドキュメントは http://www.ruby-lang.org/ja/man/archive/ruby-refm-1.9.1-dynamic-20100729.zip はからダウンロードし適当なディレクトリーに展開して下さい。展開して出来たファイルのなかの index.html をブラウザーで表示して下さい。

その他の準備

Ruby (Ruby on Rails) の開発はWindowsの 「メモ帳」でも出来ますが、EmEditor Text Editor Free版 や サクラエディタ、秀丸(シェアウェア)などのエデイタ ソフトをインストールしておくと良いと思います。

質問

ご質問のある方は、私のBlog にコメント願います。


Ruby on Rails 開発環境の作り方(Mac)

Mac OS 10.5, 10.6には Ruby, Ruby on Rails(Gem)が予めインストールされています。

しかし、最新版ではない、irbで日本語が入力出来ないなどの欠点がありますので MacPorts(http://www.macports.org/) を使ってruby をインストールする事をお勧めします。

インストール

1. MacPorts(port)

http://www.macports.org/install.php ページから最新のMacPortsをダウンロードしインストールします。インストール手順は通常のMacアプリと同じです。

MacPortsでインストールしたソフトは /opt/local以下にインストールされますので、bashの設定 (~./batchrc)に以下の行を追加します。
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/share/man:$MANPATH
最初にMacPortsソフト自身とのリストを更新した方が良いでしょう。
sudo port -v selfupdate
sudo port sync

2. Ruby & Gem

ここでは新規でRuby1.9.2 をデフォルトのruby (/opt/local/bin/ruby)としてインストールする手順を書きます。もし1.8.7等と共存させる場合はrvm等を使って下さい。

MacPorts(port)を使ってインストールします。 portはソースを取得しコンパイルしてコマンドを作るのでインストルに多少時間がかかります。

sudo port install ruby19 +nosuffix
sudo gem update --system

3. SQLite3

SQLite3もMacPorts(port)でインストールします。

sudo port install sqlite3

RubyのSQLite3ドライバーは Gem でインストールします。

sudo gem install sqlite3-ruby --no-rdoc --no-ri

4. Rails

Railsは は Gem でインストールします。Railsに必要なRakeもインストールします。

sudo gem install rake --no-rdoc --no-ri
sudo gem install rails --no-rdoc --no-ri

5. rake のエラー対策 (暫定)

/opt/local/lib/ruby1.9/gems/1.9.1/specifications/rake.gemspec を削除して下さい。


http://rubyforge.org/projects/rubygems/


「Scaffoldの半歩先に」 解答例


演習1 解答例

作業手順

rails todo
cd todo
ruby script/generate scaffold todo due:date task:string
rake db:migrate
ruby scrip/server

変更点

app/controllers/todos_controller.rb の indexメソッド

Todo.find にソートオプション を追加

1   def index
2     @todos = Todo.find(:all##(, :order => 'due')##)
3 
4     respond_to do |format|
5       format.html # index.html.erb
6       format.xml  { render :xml => @todos }
7     end
8   end

ソースコード

解答例のソースコードは http://ey-office.net/redmine/repositories/browse/rails/tags/todo_q1 で参照できます。


演習3解答例

作業手順

ruby script/generate model user name:string user_id:integer
ruby script/generate migration AddUserIdToTodo user_id:integer
rake db:migrate
ruby script/console      # usersデータの作成,todos.user_id更新
  User.new(:id=>1, :name=>'山田')
  u.save
  u = User.new(:id=>2, :name=>'川田')
  u.save
  Todo.update_all("user_id=1")
  User.find(:all)       # users の確認
  Todo.find(:all)      # todos の確認
  quit

変更点

1. app/models/user.rb

Todoとの一対多の関連を記述
1 class User < ActiveRecord::Base
2   ##(has_many :todos)##
3 end

2. app/models/todo.rb

Userとの多対一の関連(従属)を記述
1 class Todo < ActiveRecord::Base
2   ##(belongs_to :user)##
3 end

3. app/views/todos/index.html.erb

user.nameカラム表示用のコードを追加
 1 <h1>Listing todos</h1>
 2 
 3 <table>
 4   <tr>
 5     <th>Due</th>
 6     ##(<th>Name</th>)##
 7     <th>Task</th>
 8   </tr>
 9 
10 <% for todo in @todos %>
11   <tr>
12     <td><%=h todo.due %></td>
13     ##(<td><%=h todo.user.name %></td>)##
14     <td><%=h todo.task %></td>
15     <td><%= link_to 'Show', todo %></td>
16     <td><%= link_to 'Edit', edit_todo_path(todo) %></td>
17     <td><%= link_to 'Destroy', todo, :confirm => 'Are you sure?', :method => :delete %></td>
18   </tr>
19 <% end %>
20 </table>
21 
22 <br />
23 
24 <%= link_to 'New todo', new_todo_path %>

4. app/views/todos/show.html.erb

user.nameカラム表示用のコードを追加
 1 <p>
 2   <b>Due:</b>
 3   <%=h @todo.due %>
 4 </p>
 5 
 6 <p>
 7   <b>Task:</b>
 8   <%=h @todo.task %>
 9 </p>
10 
11 ##(<p>
12   <b>Name:</b>
13   <%=h @todo.user.name %>
14 </p>)##
15 
16 <p>
17   <b>Memo:</b><br/>
18   <%=new_line(h(@todo.memo)) %>
19 </p>
20 
21 <%= link_to 'Edit', edit_todo_path(@todo) %> |
22 <%= link_to 'Back', todos_path %>

5. app/views/todos/edit.html.erb

user.name入力表示用のコードを追加
 1 <h1>Editing todo</h1>
 2 
 3 <%= error_messages_for :todo %>
 4 
 5 <% form_for(@todo) do |f| %>
 6   <p>
 7     <b>Due</b><br />
 8     <%= f.date_select :due %>
 9   </p>
10 
11   <p>
12     <b>Task</b><br />
13     <%= f.text_field :task %>
14   </p>
15 
16   ##(<p>
17     <b>Name</b><br />
18     <%= f.select :user_id, User.find(:all).collect {|u| [ u.name, u.id ] } %>
19   </p>)##
20 
21   <p>
22     <b>Memo</b><br />
23     <%= f.text_area :memo %>
24   </p>
25 
26   <p>
27     <%= f.submit "Update" %>
28   </p>
29 <% end %>
30 
31 <%= link_to 'Show', @todo %> |
32 <%= link_to 'Back', todos_path %>

6. app/views/todos/new.html.erb

user.name入力表示用のコードを追加
 1 <h1>New todo</h1>
 2 
 3 <%= error_messages_for :todo %>
 4 
 5 <% form_for(@todo) do |f| %>
 6   <p>
 7     <b>Due</b><br />
 8     <%= f.date_select :due %>
 9   </p>
10 
11   <p>
12     <b>Task</b><br />
13     <%= f.text_field :task %>
14   </p>
15 
16   ##(<p>
17     <b>Name</b><br />
18     <%= f.select :user_id, User.find(:all).collect {|u| [ u.name, u.id ] } %>
19   </p>)##
20 
21    <p>
22     <b>Memo</b><br />
23     <%= f.text_area :memo %>
24   </p>
25 
26  <p>
27     <%= f.submit "Create" %>
28   </p>
29 <% end %>
30 
31 <%= link_to 'Back', todos_path %>

ソースコード

解答例のソースコードは http://ey-office.net/redmine/repositories/browse/rails/tags/todo_q3 で参照できます。

演習2解答例

作業手順

ruby script/generate migration AddMemoToTodo memo:text
rake db:migrate

変更点

1. app/helpers/todos_helper.rb

改行を<br/>タグに変換する new_lineメッソドを追加
1 module TodosHelper
2 ##(
3   def new_line(s)
4     s.gsub(/\n/, "<br>")
5   end
6 )##
7 end

2. app/views/todos/show.html.erb

memoカラム表示用のコードを追加
 1 <p>
 2   <b>Due:</b>
 3   <%=h @todo.due %>
 4 </p>
 5 
 6 <p>
 7   <b>Task:</b>
 8   <%=h @todo.task %>
 9 </p>
10 
11 ##(<p>
12   <b>Memo:</b><br/>
13   <%=new_line(h(@todo.memo)) %>
14 </p>)##
15 
16 <%= link_to 'Edit', edit_todo_path(@todo) %> |
17 <%= link_to 'Back', todos_path %>
18 

3. app/views/todos/edit.html.erb

memoカラム入力用のコードを追加
 1 <h1>Editing todo</h1>
 2 
 3 <%= error_messages_for :todo %>
 4 
 5 <% form_for(@todo) do |f| %>
 6   <p>
 7     <b>Due</b><br />
 8     <%= f.date_select :due %>
 9   </p>
10 
11   <p>
12     <b>Task</b><br />
13     <%= f.text_field :task %>
14   </p>
15 
16   ##(<p>
17     <b>Memo</b><br />
18     <%= f.text_area :memo %>
19   </p>)##
20 
21   <p>
22     <%= f.submit "Update" %>
23   </p>
24 <% end %>
25 
26 <%= link_to 'Show', @todo %> |
27 <%= link_to 'Back', todos_path %>
28 

4. app/views/todos/new.html.erb

memoカラム入力用のコードを追加
 1 <h1>New todo</h1>
 2 
 3 <%= error_messages_for :todo %>
 4 
 5 <% form_for(@todo) do |f| %>
 6   <p>
 7     <b>Due</b><br />
 8     <%= f.date_select :due %>
 9   </p>
10 
11   <p>
12     <b>Task</b><br />
13     <%= f.text_field :task %>
14   </p>
15 
16   ##(<p>
17     <b>Memo</b><br />
18     <%= f.text_area :memo %>
19   </p>)##
20 
21   <p>
22     <%= f.submit "Create" %>
23   </p>
24 <% end %>
25 
26 <%= link_to 'Back', todos_path %> 

ソースコード

解答例のソースコードは http://ey-office.net/redmine/repositories/browse/rails/tags/todo_q2 で参照できます。

Ruby on Rails 教育関連情報

テキスト

開発環境の作成

ドキュメントを取得


吉田裕美 blog , EY-Office , Redmine