[Rails] NetBeans で、Rails の新規プロジェクト作成

新規でプロジェクトを作成する手順を忘れないようにメモしておきます。
環境


NetBeans を立ち上げて、ファイル>新規プロジェクトウィンドウが開いたら下記の通り選択していきます。

プロジェクトを選択

名前と場所(プロジェクト名や実行環境の設定)

  • プロジェクト名:test
  • プロジェクトの場所:C:\workspace\
  • Ruby プラットホーム:Ruby 1.8.6-p111
  • サーバ:Mongrel 1.1.2

データベース構成(ここで設定したものが、config/database.yml に反映されます。)

  • データベース情報を直接指定を選択
  • データベースアダプタ:postgresql
  • データベース名:test_development
  • ユーザ名:test
  • パスワード:test

Rails のインストール

2.3.4 だったので、2.3.5 にアップデートしたかったので、更新ボタンからバージョンアップしました。バージョンアップができたら完了ボタンを押して、プロジェクトの作成は完了です。
完了押したら config/database.yml が表示されると思うので、内容確認して OK そうなら DB の作成を行います。

データベースを作成

ユーザの作成

「データベース構成」で入力したユーザを作成しておかないと、DB の作成ができないので、 createuser PostgreSQL User's Guide を参考に作成してください。じゃないと、こんなエラーが出ます。

FATAL        C28000        Mユーザ"shopping"のパスワード認証に失敗しました

test ユーザ作成には、下記コマンドを実行しました。

createuser -U postgres -s -P test
rake で DB を作成

プロジェクト>生成>Rake タスクを実行/デバッグ から db:create を選択して実行します。
もし undefined method `quote_ident' for PGconn:Class とかいうエラーが出たら、下記のような感じで対応して、rake をリトライすればたぶん OK です。

{RAILS インストール時のパス}\ruby\lib\ruby\gems\1.8\gems\activerecord-2.3.5\lib\active_record\connection_adapters\postgresql_adapter.rb
の438行目あたりを修正

def quote_ident(name)
  %("#{name}")
end

# Quotes column names for use in SQL queries.
 def quote_column_name(name) #:nodoc:
   quote_ident(name.to_s)
 end

github デビューしました(リポジトリ作ったり、push したり)

会社で使おうと思って入れた Redmineプラグインが日本語化されていなかったので、作成してみました。で、せっかくなのでそれを github に push してみようということに。(ちなみに、scrumdashboard というプラグインです。)

アカウント登録

まず、サインアップ からアカウント登録しました。もちろん無料ので。
登録画面に出てくる SSH Public Key は、後で設定すればいいので空欄で登録。
※どうでもいいけど
最初、Username がなんだかわからなくて普通にフルネーム入力しちゃいました。そしたら Acuount Settings で名前入力するところがあって…。
Username を yunkichi にしたかったのですが、どうやって変更するのかわからず悩みました。結局 Acuount Settings > Administrative Information > Username の横にある、rename から無事変更できました。

アカウントの設定

自分の情報を入力(任意っぽい)

アカウント登録が完了したらログインした状態になるので、Acuount Settings を選択し、下記項目の入力をしました。

  • Name
  • Email
  • Website / Blog
  • Company
  • Location
Gravatar の設定

Username の横とかに表示されるアイコンも変更したいです。
アイコンのマークのところに、Change your avatar at gravatar.com と書いてあるので、Gravator のサイトへ行きます。
Gravatar のトップページに書いてありますが、ブログに投稿したりコメントしたりした時に、どのサイトでも名前の横に画像を表示できるサービスだそうです。

登録方法
  1. 登録ボタンから、メールアドレスを登録します。
  2. 登録したメールアドレス宛てにメールが届くので、メールに記載されている URL にアクセスします。
  3. パスワードの設定とか聞かれるので、設定します。
  4. アカウントを作成したら、My Account>Add an Image から画像を追加します。(今回はローカルからファイルを選択してアップ。)
  5. 画像を追加したら、「G」「PG」「R」「X」の4つの中から Rating を選んで完了です。(なんかそれぞれの説明を読んでると、「G」以外選びようがないなと思いました。)
  6. 反映されるまで、5 〜 10分くらいかかるので待ちます。

SSH の公開鍵生成

github に push したりするときは、SSH の公開鍵が必要になります。
ローカルにインストールした Git を立ち上げて、ホームディレクトリで SSH の公開鍵を生成するため、下記コマンドを実行します。(OS は Windows XP、Git は msysGit を使っています。)

cd		# ホームディレクトリに移動
ssh-keygen	# SSH の公開鍵生成

ホームディレクトリ以下にできる、/HOME_DIR/.ssh/id_rsa.pub のファイルを開いて、中身を丸ごとコピーします。
コピーできたら github に戻って、 Acuount Settings > SSH Public Keys を選択してコピーしたものを貼り付けて保存します。(Title はなんでも良いです。)
これで、github に push する準備ができました。

ためしに自分のリポジトリを作る

せっかくなので、githubリポジトリを作ってみることに。
ログインした時の自分のトップページみたいなところに、Create a Repository というリンクがあるのでクリックします。
入力するのは、Project Name だけで OK です。Who has access to this repository? のところは、Anyone を選択しておきました。
Create Repository のボタンを押すと、こうやってリポジトリ作って、commit したり push したりしてねっていう丁寧な説明が表示されるのでそのままやってみると push まで簡単にできました。

本家のリポジトリを fork する

ここから本番。やりたかったのは、github に公開されている Redmineプラグインに日本語設定用のファイルを pushすることです。

  1. ログインした状態で、本家のリポジトリがあるページに行って、fork というボタンを押します。(これで自分のリポジトリに clone されます。)
  2. 自分のリポジトリに clone してきたものを、今度はローカルマシンに clone します。
  3. ローカルマシンで変更したいところとか追加したいところをいじって commit します。
  4. できたら github(fork してできた自分のリポジトリ)に push します。

これで完了!本家に取り込んで欲しいときは、Pull Request をしてみればいいそうです。
一応実行したコマンドを書いておきます。

git clone git@github.com:yunkichi/redmine-scrumdashboard-plugin.git scrumdashboard
## 変更したりファイル追加したり。##
git add 変更したファイル
git commit -m 'Add Japanese setting file.'
git push

※clone してきたリポジトリは、URL を指定しなくても、git push だけで push してくれます。できたー。
ちなみに、URL はここ です。変なところあったら教えてください。

Redmine とリポジトリの同期設定

デフォルトでは、ブラウザから「リポジトリ」を開くまでリポジトリへのコミットが「活動」に表示されません。
「リポジトリ」を開くまでSubversion等のリポジトリへのコミットが「活動」に表示されません (Redmine.JP) 参照。
Redmine 0.8 までは、cronで一定時間ごとに取得するという対策が公開されていましたが、タイムラグが発生するなど問題があったそうです。
Redmine 0.9 では、Redmineリポジトリの情報を読み込ませるために、特定の URL にアクセスする方法が追加されたようなので、コミットと同時にリポジトリの情報を取得する を参考に、設定しました。
ちなみにこのサイトでは SVN を例に書いてありましたが、リポジトリが Git でも同じやり方で設定できました。

  • Redmine の設定
    • 「管理」>「設定」>「リポジトリ」を開き、「リポジトリ管理用のWebサービスを有効にする」をONにします。
    • APIキー」に、APIキーとして使用する文字列を設定します。右側の「キーの生成」をクリックすると、Redmineにランダムな文字列を生成させることもできます。
    • 画面下の保存ボタンをクリックし、設定を保存します。
  • リポジトリの設定

Subversion の場合は post-commit 、Git の場合は共有リポジトリpost-update に設定してください。

/usr/bin/wget -q -O /dev/null http://localhost/redmine/sys/fetch_changesets?key=SKPqaeMuFoyg00si1yGi9
※赤字の部分が、キーの生成で作成されたランダムな文字列です。
    • hooks スクリプトに実行権限を付与します。(実行権限があった場合は不要)
chmod 755 post-commit
chmod 755 post-update

これで、いちいち「リポジトリ」を開かなくても、コミット(Git の場合は共有リポジトリに push )した際に自動的に「活動」に反映されます。

Ruby技術者認定試験を受験しました

業務で Ruby を使っているので、今のチーム全員でRuby技術者認定試験を取得しようということになりました。1月17日までに受験すると、1回だけ無料でリテイクができるそうなので、1月16日に受験してきました。

試験について

90分 50問回答で、75点以上が合格です。その場で合否がわかります。

勉強方法、期間

通勤時間で下記対策本を読んでました。毎日ではなかったけど、ブログ書き始めたあたりからちょこちょこ読んでたので、期間で言うと 1カ月くらい勉強してたかも。
業務で全然使ったことないメソッドとかもあったので、Stringクラス、Arrayクラス、Hashクラス などよく使うものについては たのしいRuby 第2版 を読みました。
どうしても覚えられないものとかは、ブログに書きました。ブログとなると、ちゃんと書かなきゃと思うので、意外と覚えられます。(inject メソッドの使い方chomp メソッドと chop メソッド
あとは、Web の練習問題をいくつか。前日に まつもと ゆきひろのRuby検定 - ITpro EXPO検定---ITpro EXPO 2008:ITpro をやったら 7割くらいの正解率であせりました。(前日…)
     

受験してみて思ったこと

結果は、92/100 点で余裕で合格。前日に絶望しかけてたのですが、拍子抜けでした。
対策本からそのまま出てる問題とかもあったし、すべて選択式なので思ってたより簡単でした。複数選択する問題も、答えがいくつか教えてくれるので消去法が使えます。
あと、試験時間は余りすぎるほどありました。回答終わって全問見直ししても 30〜40分くらいで終わります。

個人的によかったこと

(無料リテイクできるとはいえ、2度も受験しに行くのはめんどくさかったので、1回で受かってよかった…。)
普段使わないようなメソッドも覚えられたし、知識は前より全然増えました。
次の案件で役に立つかも。。

Windows でのパスワードファイル(.pgpass)の場所

前に PostgreSQL でのバックアップの取り方 の中で、ポスグレのパスワードファイル(.pgpass)を作成して使うと書いたのですが、Windows でポスグレを入れた場合はどこにその設定ファイルをおけばいいのか書いてなかったので、追記します。

PostgreSQLWindows にインストールしている場合

インストール時に設定を変えていなければ下記にあります。

%APPDATA%\postgresql\pgpass.conf


編集の仕方は、PostgreSQL でのバックアップの取り方 と変わりません。
パスワードファイルに設定しておけば、ポスグレに接続するときもユーザー名だけではいれるので楽です。

Git の共有リポジトリを作成して、Redmine 上から確認できるよう設定

Git でバージョン管理するだけなら git init をするだけなのですが、共有リポジトリを作るときはオプションが必要になります。
あと、Redmine 上から見れないと不便なのでその設定しました。

リポジトリの作成

/var/git の下に、redmine.git というディレクトリを作成し、それをリポジトリにすることにします。
redmine.git を共有リポジトリとするため、オプションを指定してコマンドを実行します。

[root@localhost git]# mkkdir redmine.git
[root@localhost git]# git init --bare redmine.git
Initialized empty Git repository in /var/git/redmine.git/

git のパス設定

共有リポジトリの作成は完了したので、次に Redmine 側の設定を行います。
/{RAILS_ROOT}/lib/redmine/scm/adapters/git_adapter.rb の、GIT_BIN の設定を下記のように変更します。

変更前:  GIT_BIN = "git"
変更後:  GIT_BIN = "/usr/local/bin/git"

共有リポジトリのパス設定

ブラウザで、プロジェクトを選択>設定>リポジトリバージョン管理システムのプルダウンから Git を選択をします。
Path to.git に redmine.git のフルパスを設定し(/var/git/redmine.git)、保存します。

Git で管理しているディレクトリを共有リポジトリに push してみる

今の状態だとリポジトリが空なので何も表示されません。そこで、稼働中の Redmineredmine.git に入れてみます。

Redmineディレクトリに移動し、先ほど作成した共有リポジトリに push します。
※ git push 'push するディレクトリ名' 'push する対象のブランチ' という感じで。

[root@localhost redmine]# git push /var/git/redmine.git master


これで Redmine 上から共有リポジトリを見ることができます。

シンボリックリンクの作成と削除の仕方

【 ln 】ファイルやディレクトリにリンクを張る - Linuxコマンド集:ITpro を見れば作成は一発なんですけど、一応。

作成

ln -s /home/www/hoge-0.1 hoge

削除

  • 削除する場合、hoge/ のようにスラッシュをつけると削除できないので注意
rm hoge