Rails on NaCl


FedoraCore 5 でRuby on Rails開発環境の構築

FedoraCore 5にてRailsと統合開発環境であるRadRailsのセットアップを行います。
また、後半ではRadRailsからバージョン管理システムSubversionを使用する方法について説明します。

表記に付いて

この文書中では、コマンドプロンプト「$」は一般ユーザでの実行、「#」は root での実行を表します。

Rails のインストール

FedoraCoreではRailsの公式パッケージは用意されていません。そのため、Railsをインストールするにはrpmパッケージを作成するか、RubyGems (Rubyのパッケージ管理システム)を利用する必要があります。
ここでは rpm パッケージで Rails のインストールを行います。

yum のリポジトリ登録

以下の内容を /etc/yum.repos.d/nacl-rails.repo に記述します。

[rails]
name=Fedora Rails $releasever - $basearch - NaCl
baseurl=http://rails.netlab.jp/fc5/yum/repos/fc$releasever/$basearch/
enabled=1
gpgcheck=0

rails のインストール

以下のコマンドを実行し、Rails をインストールします。

# yum install rails
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/4]
rails                                                                [2/4]
updates                                                              [3/4]
extras                                                               [4/4]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for rails to pack into transaction set.
rails-1.1.0-fc5.nacl1.noa 100% |=========================| 108 kB    00:00
---> Package rails.noarch 0:1.1.0-fc5.nacl1 set to be updated
--> Running transaction check
--> Processing Dependency: ruby-actionmailer = 1.2.0 for package: rails
--> Processing Dependency: ruby-actionpack = 1.12.0 for package: rails
--> Processing Dependency: ruby-actionwebservice = 1.1.0 for package: rails
--> Processing Dependency: ruby-activesupport = 1.3.0 for package: rails
--> Processing Dependency: ruby-activerecord = 1.14.0 for package: rails
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for ruby-actionmailer to pack into transaction set.
ruby-actionmailer-1.2.0-f 100% |=========================|  14 kB    00:00
---> Package ruby-actionmailer.noarch 0:1.2.0-fc5.nacl1 set to be updated
---> Downloading header for ruby-actionpack to pack into transaction set.
ruby-actionpack-1.12.0-fc 100% |=========================|  43 kB    00:00
---> Package ruby-actionpack.noarch 0:1.12.0-fc5.nacl1 set to be updated
---> Downloading header for ruby-activesupport to pack into transaction set.
ruby-activesupport-1.3.0- 100% |=========================|  24 kB    00:00
---> Package ruby-activesupport.noarch 0:1.3.0-fc5.nacl1 set to be updated
---> Downloading header for ruby-actionwebservice to pack into transaction set.
ruby-actionwebservice-1.1 100% |=========================|  20 kB    00:00
---> Package ruby-actionwebservice.noarch 0:1.1.0-fc5.nacl1 set to be updated
---> Downloading header for ruby-activerecord to pack into transaction set.
ruby-activerecord-1.14.0- 100% |=========================|  42 kB    00:00
---> Package ruby-activerecord.noarch 0:1.14.0-fc5.nacl1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 rails                   noarch     1.1.0-fc5.nacl1  rails             747 k
Installing for dependencies:
 ruby-actionmailer       noarch     1.2.0-fc5.nacl1  rails              91 k
 ruby-actionpack         noarch     1.12.0-fc5.nacl1  rails             605 k
 ruby-actionwebservice   noarch     1.1.0-fc5.nacl1  rails              95 k
 ruby-activerecord       noarch     1.14.0-fc5.nacl1  rails             467 k
 ruby-activesupport      noarch     1.3.0-fc5.nacl1  rails              86 k

Transaction Summary
=============================================================================
Install      6 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 2.0 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): rails-1.1.0-fc5.na 100% |=========================| 747 kB    00:00
(2/6): ruby-actionmailer- 100% |=========================|  91 kB    00:00
(3/6): ruby-actionpack-1. 100% |=========================| 605 kB    00:00
(4/6): ruby-activesupport 100% |=========================|  86 kB    00:00
(5/6): ruby-actionwebserv 100% |=========================|  95 kB    00:00
(6/6): ruby-activerecord- 100% |=========================| 467 kB    00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: ruby-activesupport           ######################### [1/6]
  Installing: ruby-actionpack              ######################### [2/6]
  Installing: ruby-activerecord            ######################### [3/6]
  Installing: ruby-actionwebservice        ######################### [4/6]
  Installing: ruby-actionmailer            ######################### [5/6]
  Installing: rails                        ######################### [6/6]

Installed: rails.noarch 0:1.1.0-fc5.nacl1
Dependency Installed: ruby-actionmailer.noarch 0:1.2.0-fc5.nacl1 ruby-actionpack.noarch 0:1.12.0-fc5.nacl1 ruby-actionwebservice.noarch 0:1.1.0-fc5.nacl1 ruby-activerecord.noarch 0:1.14.0-fc5.nacl1 ruby-activesupport.noarch 0:1.3.0-fc5.nacl1
Complete!

mysql アダプタのインストール

この文書ではMySQLを利用します。以下のコマンドでruby-mysqlパッケージをインストールしてください。MySQLのパッケージがインストールされていない場合はruby-mysqlの依存関係チェックにより自動でインストールされます。

# yum install ruby-mysql
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/4]
rails                                                                [2/4]
updates                                                              [3/4]
extras                                                               [4/4]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for ruby-mysql to pack into transaction set.
ruby-mysql-2.7-8.fc5.i386 100% |=========================| 3.6 kB    00:00
---> Package ruby-mysql.i386 0:2.7-8.fc5 set to be updated
--> Running transaction check
--> Processing Dependency: libmysqlclient.so.15 for package: ruby-mysql
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mysql to pack into transaction set.
mysql-5.0.18-2.1.i386.rpm 100% |=========================|  37 kB    00:01
---> Package mysql.i386 0:5.0.18-2.1 set to be updated
--> Running transaction check
--> Processing Dependency: perl(DBI) for package: mysql
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for perl-DBI to pack into transaction set.
perl-DBI-1.50-2.2.i386.rp 100% |=========================|  17 kB    00:00
---> Package perl-DBI.i386 0:1.50-2.2 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 ruby-mysql              i386       2.7-8.fc5        extras             44 k
Installing for dependencies:
 mysql                   i386       5.0.18-2.1       core              2.9 M
 perl-DBI                i386       1.50-2.2         core              581 k

Transaction Summary
=============================================================================
Install      3 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 3.5 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): perl-DBI-1.50-2.2. 100% |=========================| 581 kB    00:05
(2/3): ruby-mysql-2.7-8.f 100% |=========================|  44 kB    00:00
(3/3): mysql-5.0.18-2.1.i 100% |=========================| 2.9 MB    00:22
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 1ac70ce6
Public key for ruby-mysql-2.7-8.fc5.i386.rpm is not installed
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
Key imported successfully
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: perl-DBI                     ######################### [1/3]
  Installing: mysql                        ######################### [2/3]
  Installing: ruby-mysql                   ######################### [3/3]

Installed: ruby-mysql.i386 0:2.7-8.fc5
Dependency Installed: mysql.i386 0:5.0.18-2.1 perl-DBI.i386 0:1.50-2.2
Complete!

ローカルホストでMySQLサーバを起動するために以下のパッケージも追加でインストールします。

# yum install  mysql-server
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/4]
rails                                                                [2/4]
updates                                                              [3/4]
extras                                                               [4/4]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mysql-server to pack into transaction set.
mysql-server-5.0.18-2.1.i 100% |=========================|  33 kB    00:01
---> Package mysql-server.i386 0:5.0.18-2.1 set to be updated
--> Running transaction check
--> Processing Dependency: perl-DBD-MySQL for package: mysql-server
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for perl-DBD-MySQL to pack into transaction set.
perl-DBD-MySQL-3.0002-2.2 100% |=========================| 8.6 kB    00:00
---> Package perl-DBD-MySQL.i386 0:3.0002-2.2.2 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 mysql-server            i386       5.0.18-2.1       core              6.6 M
Installing for dependencies:
 perl-DBD-MySQL          i386       3.0002-2.2.2     core              150 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 6.7 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): perl-DBD-MySQL-3.0 100% |=========================| 150 kB    00:01
(2/2): mysql-server-5.0.1 100% |=========================| 6.6 MB    01:02
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: perl-DBD-MySQL               ######################### [1/2]
  Installing: mysql-server                 ######################### [2/2]

Installed: mysql-server.i386 0:5.0.18-2.1
Dependency Installed: perl-DBD-MySQL.i386 0:3.0002-2.2.2
Complete!

Railsの動作確認

ここまででRailsを利用する環境が整いましたので、簡単な動作確認を行います。ここでは一般ユーザにて動作確認を行います。
まずホームディレクトリのsrcの下にtestというRailsプロジェクトを作成します。

$ mkdir src
$ cd src/
$ rails test

次にTestモデルを作成します。

$ cd test/
$ ./script/generate model Test

データベースの指定を行います。ここではデータベースとして、デフォルトのMySQLを利用します。
データベースの設定は config/database.yml で行います。標準ではMySQLを利用するように設定されています。特にデータベースの指定は必要ありませんが、ソケットファイルの指定が必要になります。
config/database.yml に以下のようにソケットの指定を追加します。

development:
  adapter: mysql
  database: test_development
  username: root
  password:
  host: localhost
  socket: /var/lib/mysql/mysql.sock  # <- 追加

development: だけではなく、test:、 product: にも同様にソケット指定の行を追加する必要があります。
データベースのスキーマを db/migrate/001_create_tests.rb にて定義します。このファイルでは標準で作成されたファイルのコメントを外します。

def self.up
  create_table :tests do |t|
    t.column :name, :string   # <- コメントを外す
  end
end

MySQLのデータベースをmysqlコマンドで作成します。MySQLが起動していない場合は、以下のコマンドで起動します。

# /etc/init.d/mysqld start

データベースの作成を行います。

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3 to server version: 5.0.18

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> create database test_development;
Query OK, 1 row affected (0.00 sec)

mysql> create database test_test;
Query OK, 1 row affected (0.00 sec)

mysql> create database test_product;
Query OK, 1 row affected (0.01 sec)

mysql> quit
Bye

rake migrate コマンドでテーブルを作成します。

$ rake migrate
(in /home/ryosuke/src/test)
 CreateTests: migrating ===================================================
—create_table(:tests) → 0.0192s
CreateTests: migrated (0.0200s) ==========================================

generate コマンドで scaffold を作成します。

$ ./script/generate scaffold Test Test

Webrick HTTPサーバを起動します。

$ ./script/server

http://localhost:3000/ をブラウザで表示するとRailsの「Welcome」画面が表示されます。
http://localhost:3000/Test をブラウザで表示すると作成したTestプロジェクトが表示されます。

RadRailsのインストール

RadRailsはRailsの統合開発環境で、Eclipseへのプラグインとして開発されています。プラグインですが、RadRailsを含めたEclipseのインストールパッケージも用意されています。

Eclipseのインストール

FedoraCore5 には GNU libgcj がインストールされており、j2sdk 1.4.2 相当の環境として利用可能なので、別途j2sdkをインストールする必要はありません。また、Eclipseも標準パッケージとして用意されており,利用しているシステムにインストールされていない場合は以下のコマンドでインストールしてください。

# yum install eclipse-platform

Eclipse の起動

メニューの「アプリケーション」から「プログラミング」、「Eclipse」で起動できます。

RadRailsプラグインのインストール

このサイトの統合開発環境を利用する RadRails 「プラグインのインストール」を参照してください。