Rails勉強会@東京第30回に参加してきた#1

いつものように,まとめログを.

##セッション一覧

  • 前半
    • scaffold 半歩先へ
    • Redmine & git/github & ActiveRecord without Rails <- ここに参加
    • OpenID
  • 後半
    • Rails 2.1の新機能 <- ここに参加
    • Agile Web Development with Rails 3rd editionを読んでみる
    • Passenger(mod_rails)

##Redmine & git/github & ActiveRecord without Rails

###git

  • 分散バージョン管理システム
  • offline でも commit や log を見ることができるのが便利
  • merge が便利
  • やってみる(Yuguiさんが開発中のRedmine for ruby-langを元に)
    • githubから持ってくる
% git clone git://github.com/yugui/redmine4ruby-lang.git
  • branchを見る
% git branch
* master
- master が trunk にあたるものだが,名称は慣習的なもの
  • .git/objects にオブジェクトデータベースがある.実体かな.

|blob|file に対応する object| |tree|directory tree 構造の snapshot| |commit|commit 履歴の参照を保存するオブジェクト|

  • HEAD は最新Revを指すポインターのようなもの
    • [~]をHEADの後につけると,一つ前のRevに.
% git show HEAD
% git show HEAD~
% git show HEAD~~
% git....
  • 気軽にbranchが切れるのが便利そう.
  • svn のようにコピーが別フォルダに作られないのがいいな.
$ git branch rust1
$ git checkout rust1
$ vim Rakefile
$ git stauts
# On branch rust1
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   Rakefile
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git add Rakefile
$ git commit
test
  • gitk で見ると,branch の遷移具合がよくわかる(会社マシンに Ubuntu 入れたらやってよう).
  • git push で clone 元に patch を上げる
  • merge するには,例えば master に戻って下記のようにする.
$ git checkout master
$ git merge rust1
  • github
    • Rails製の git hosting service
  • revert
    • commit 前なら
% git reset --hard HEAD
|<<
---local には commit してしまった
>|ruby|
% git reset --hard HEAD~
|<<
---HEAD~, HEAD~~ などで1つ前,2つ前....
--revertした参照を探すには
>|ruby|
% git fsck --lost-found
  • 消えたcommit情報を見るには,上記で調べた SHA1 から
% git show SHA1
  • branchを消すには(と言っても,参照を消すだけなので実体は残る)
% git branch -D rust1
  • branchを切って編集したあとに,
    • –mixed で HEAD を branch を切った場所まで戻し,commitし直すとログが1つにまとまる(これは仕事でも使えそうな気がする).

###Redmine

  • subversion/git/mercurial/… など様々な SCM で,adapter を書けばだいたい何でも対応できる

###ActiveRecord は使わないが migration は使いたい場合

require 'active_record'
ActiveRecord::Schema.define(:version => 1) do
  create_table "todos" do |t|
    t.string  ....
  end
end

###その他

  • drubyをキャッシュとして使ってるそうな.
    • 確かにそう言う使い方もできるな.
  • ActionMailer.receive(email)
    • かなり重い
    • drubyなど使って軽量化しているらしい.

長くなるので続きは明日書きます.

 
comments powered by Disqus