Hatena::ブログ(Diary)

femocoの日記

2009-07-10

githubに初めてリポジトリを作成する際のチュートリアル

14:31

SSH公開鍵を作成する

使用しているパソコンにsshの公開鍵が無い場合は、新たに作成します。

rsaまたはdsaの鍵ペアを既に持っている場合は、このステップは省略します。

cd ~/.ssh
ssh-keygen
Generating public/private rsa key pair.  
Enter file in which to save the key (/Users/username/.ssh/id_rsa): # press enter here  
Enter passphrase (empty for no passphrase): # type in your passphrase here  
Enter same passphrase again: # type your passphrase again  
Your identification has been saved in /Users/username/.ssh/id_rsa.  
Your public key has been saved in /Users/username/.ssh/id_rsa.pub.  
The key fingerprint is:  
30:93:77:c6:97:af:61:82:dc:ea:9b:6b:67:d4:1b:61 user@host  

公開鍵(ここではid_rsa.pubという名前のファイルとします)の内容を以下のようにしてクリップボードにコピーします。

cat id_rsa.pub | pbcopy

githubのアカウントのページを開き、「SSH Public Keys」の項目以下の「add another public key」をクリックし、コピーしてある公開鍵の内容をペーストします。

githubリポジトリを作成する

http://github.com/repositories/newのページを開き、新しいリポジトリを作成します。

project name、description、homepage urlを必要に応じて記入し、Create Repositoryをクリックして新規リポジトリを作成します。

project name: sample

description: my sample repository

homepage url: http://d.hatena.ne.jp/femoco

リポジトリの作成が完了すると、githubが次の作業を指示してくれます。

以下のように表示されました。

Global setup:
  Download and install Git
  git config --global user.name "FeMoCo"
  git config --global user.email email@address.hoge
        
Next steps:
  mkdir sample
  cd sample
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:femoco/sample.git
  git push origin master

この指示に従い、リポジトリに載せるためのディレクトリを作成していきます。

ここでは、~/code/sampleというディレクトリ以下にファイルを置いていることにします。

cd ~/code
mkdir sample
cd sample
git init
touch README
git add README
git commit -m "first commit"
git remote add github git@github.com:femoco/sample.git
git push github master
ここで公開鍵に対するパスフレーズを訊かれるので、設定したパスフレーズを入力します。

これで、作成したリポジトリにREADMEのみがpushされました。

githubをリモートリポジトリとして設定する

cd ~/code/sample
emacs .git/config

作成したconfigファイルを以下のように編集します。

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
[remote "github"]
	url = git@github.com:femoco/sample.git
	fetch = +refs/heads/*:refs/remotes/origin/*
	push = refs/heads/master:refs/heads/master

githubにpushする

sampleディレクトリに何か新しいファイルを作成して、githubにpushしてみます。

cd ~/code/sample
emacs sample.txt

sample.txtを以下のように編集してみます。

This is a sample text for github tutorial.

commitし、以下のようにpushします。

git push github master

以上で、githubにpushすることが出来ました。

Railsでcsvからfixturesを投入するには?

10:55

rake db:fixtures:load FIXTURES=fixture_file_name

で普通に読みこむことができます。

rake db:fixtures:loadは、読みこむファイルがyamlでもcsvでも、自動的に判別して読みこんでくれます。

fixtureデータとして使用するためのcsvの形式は以下の通りです。

  • test/fixturesに、テーブル名.csvとして読みこむファイルを作成する。
  • デリミタにはコンマ「,」を使用する。
  • idフィールドは不要ですが、作成しても問題ない。
  • 1行目にはフィールド名のヘッダを入れる。

具体例をメモしておきます。

例えば、日本の都道府県のテーブルを作成し、そこにデータを投入したい場合には以下のようにします。

先ず、テーブルとモデルを作成します。

テーブル名はprefecturesとし、フィールドはtitle:stringとpermalink:stringをもうけます。

script/generate model prefecture title:string permalink:string

これで、db/migrate以下に20090710012451_create_prefectures.rbのようなmigrationが生成されます。

このまま使っても良いのですが、t.timestampを削除しておきます。

以下のようになります。

class CreatePrefectures < ActiveRecord::Migration
  def self.up
    create_table :prefectures do |t|
      t.string :title
      t.string :permalink
    end
  end

  def self.down
    drop_table :prefectures
  end
end

テーブルを作成します。

rake db:migrate

fixture用のデータの作成

test/fixtures以下にprefectures.csvというファイルを作成し、以下の内容を記入します。

id,title,permalink
1,北海道,hokkaido
2,青森県,aomori
3,岩手県,iwate
4,宮城県,miyagi
5,秋田県,akita
6,山形県,yamagata
7,福島県,fukushima
8,茨城県,ibaraki
9,栃木県,tochigi
10,群馬県,gunma
11,埼玉県,saitama
12,千葉県,chiba
13,東京都,tokyo
14,神奈川県,kanagawa
15,山梨県,yamanashi
16,長野県,nagano
17,新潟県,niigata
18,富山県,toyama
19,石川県,ishikawa
20,福井県,fukui
21,岐阜県,gifu
22,静岡県,shizuoka
23,愛知県,aichi
24,三重県,mie
25,滋賀県,shiga
26,京都府,kyoto
27,大阪府,osaka
28,兵庫県,hyogo
29,奈良県,nara
30,和歌山県,wakayama
31,鳥取県,tottori
32,島根県,shimane
33,岡山県,okayama
34,広島県,hiroshima
35,山口県,yamaguchi
36,徳島県,tokushima
37,香川県,kagawa
38,愛媛県,ehime
39,高知県,kouchi
40,福岡県,fukuoka
41,佐賀県,saga
42,長崎県,nagasaki
43,熊本県,kumamoto
44,大分県,oita
45,宮崎県,miyazaki
46,鹿児島県,kagoshima
47,沖縄県,okinawa

最後に、実際にfixtureのデータをロードします。

rake db:fixtures:load FIXTURES=prefectures

これでprefecturesテーブルにデータが投入されました。