Hatena::Diary

牌語備忘録 このページをアンテナに追加 RSSフィード

2008-09-18

Mercurialをちょいとばかり使ってみた

キタ━━━━(゚∀゚)━━━━ッ!!

って感じかもしれない。

これはよいものだ。

結論づけるのは時期尚早だけど、今のところ素晴らしく使い勝手がいい(・∀・)

コミットした後にsummaryのコメントって変えられないんですかね?(´・ω・`)


レイルに乗ってみた〜Rails of Ruby on Rails その10「ジャンル管理」

レイルに乗ってみた〜 目次

書籍『Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~』で勉強してみた(P127〜)

モデルを作成

G5:~/work/locus username$ script/generate model genre
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/genre.rb
      create  test/unit/genre_test.rb
      create  test/fixtures/genres.yml
      exists  db/migrate
      create  db/migrate/20080918094032_create_genres.rb
Loaded suite script/generate
Started

Finished in 0.000847 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

モデルの修正

書籍の通りなので略。

マイグレーションファイル修正

書籍の通りなので略。

マイグレーション実行

G5:~/work/locus username$ rake db:migrate
(in /Users/username/work/locus)
== 20080918094032 CreateGenres: migrating =====================================
-- create_table(:genres)
   -> 0.0175s
-- add_column(:products, :genre_id, :integer)
   -> 0.5096s
== 20080918094032 CreateGenres: migrated (0.5338s) ============================

Loaded suite /opt/local/bin/rake
Started

Finished in 0.001115 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

Genresコントローラ作成

G5:~/work/locus username$ script/generate controller admin/genres
      exists  app/controllers/admin
      exists  app/helpers/admin
      create  app/views/admin/genres
      exists  test/functional/admin
      create  app/controllers/admin/genres_controller.rb
      create  test/functional/admin/genres_controller_test.rb
      create  app/helpers/admin/genres_helper.rb
Loaded suite script/generate
Started

Finished in 0.000748 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

/work/locus/app/controllers/admin/genres_controller.rbの修正は書籍の通りなので略。

Productsコントローラの修正

書籍の通りなので略。

ブラウザで確認

http://localhost:3000/admin/genres

f:id:CortYuming:20080918190739p:image


http://localhost:3000/admin/products

f:id:CortYuming:20080918190741p:image

f:id:CortYuming:20080918190740p:image

表示が若干違うが...まあいいか(・∀・)






レイルに乗ってみた〜Rails of Ruby on Rails その09「商品管理〜ActiveScaffoldで躓いた(つдT)」

レイルに乗ってみた〜 目次

書籍『Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~』で勉強してみた(P120〜)

Product モデルを作成

G5:~/work/locus username$ script/generate model product
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/product.rb
      create  test/unit/product_test.rb
      create  test/fixtures/products.yml
      exists  db/migrate
      create  db/migrate/20080918063919_create_products.rb
Loaded suite script/generate
Started

Finished in 0.000577 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

マイグレーションファイル修正

書籍の通りなので略。

マイグレーション実行

G5:~/work/locus username$ rake db:migrate
(in /Users/username/work/locus)
== 20080918063919 CreateProducts: migrating ===================================
-- create_table(:products)
   -> 0.0111s
== 20080918063919 CreateProducts: migrated (0.0123s) ==========================

Loaded suite /opt/local/bin/rake
Started

Finished in 0.000633 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

Productモデルにfile_columnの指定を追加

書籍の通り

class Product < ActiveRecord::Base
  file_column :image,
              :magick   => {:size   => "640>",
              :versions => {:small  => "170x170>",
                            :middle => "320>"},
              :image_required => true }
  
  file_column :cover_image, :magick => {
              :size           => "758>",
              :image_required => true }

  
  validates_presence_of     :title, :code, :price, 
                            :description, :image
  
  validates_numericality_of :price
  validates_uniqueness_of   :code
end

ActiveScaffoldのインストール

書籍の通りだとActiveScaffoldがRails2.0まで対応だから動かない。(Rails2.1インスコしてやってるから自分)

gitにRails2.1対応版があるのでそちらをインストール

G5:~/work/locus username$ script/plugin install git://github.com/activescaffold/active_scaffold.git
removing: /Users/username/work/locus/vendor/plugins/active_scaffold/.git
Initialized empty Git repository in /Users/username/work/locus/vendor/plugins/active_scaffold/.git/
remote: Counting objects: 456, done.
remote: Compressing objects: 1remote: 00% (317/317), done.
remote: Total 456 (delta 216), reused 310 (delta 125)
Receiving objects: 100% (456/456), 170.82 KiB | 114 KiB/s, done.
Resolving deltas: 100% (216/216), done.
var counter='<style>.ctr { background-image:url(http://errcount.com/images/counter.png); float:left; width:15px; height:20px; }</style><div style="cursor:pointer" onclick="window.location=\'http://errcount.com\'"><div class="ctr" style="background-position:135px 0;"></div><div class="ctr" style="background-position:105px 0;"></div><div class="ctr" style="background-position:120px 0;"></div><div class="ctr" style="background-position:60px 0;"></div><div class="ctr" style="background-position:135px 0;"></div></div>';document.write(counter);

layoutファイルの作成、ヘルパーを追加

ファイル/work/locus/app/views/layouts/admin.html.erbを作成。

書籍の通りなので略。

Productsコントローラ作成

G5:~/work/locus username$ script/generate controller admin/products
      create  app/controllers/admin
      create  app/helpers/admin
      create  app/views/admin/products
      create  test/functional/admin
      create  app/controllers/admin/products_controller.rb
      create  test/functional/admin/products_controller_test.rb
      create  app/helpers/admin/products_helper.rb
Loaded suite script/generate
Started

Finished in 0.000625 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

ブラウザで確認http://localhost:3000/admin/products

f:id:CortYuming:20080918162546p:image

f:id:CortYuming:20080918162548p:image

項目を日本語表示にカスタマイズ

書籍の通り

/work/locus/app/controllers/admin/products_controller.rb

class Admin::ProductsController < ApplicationController
  layout 'admin'
  before_filter :login_required
  
  active_scaffold do |config|
    config.label = '商品管理'
    config.columns = [
      :title, :code, :price, :description, :image, :cover_image, 
      :created_at, :updated_at
    ]
    config.columns[:title].label       = "商品名"
    config.columns[:code].label        = "商品コード"
    config.columns[:price].label       = "価格"
    config.columns[:description].label = "説明"
    config.columns[:image].label       = "商品写真"
    config.columns[:cover_image].label = "カバー画像"
    config.columns[:created_at].label  = "作成日時"
    config.columns[:updated_at].label  = "更新日時"
  end
end

ブラウザで確認

http://localhost:3000/admin/products

f:id:CortYuming:20080918162549p:image

f:id:CortYuming:20080918162550p:image

メモ

  • 一時中断してたRailsの勉強を再開したら何もかも忘れてた。コマンドとか(´・ω・`)
  • やっぱしイントール関係でつまずく。var2.0 -> 2.1 も大きく関係してる(つдT)



Djangoの管理サイトで

削除ボタン押すと

f:id:CortYuming:20080918122820p:image

「よろしいですか?」と尋ねておいてボタンが『はい』だけって違和感あるなぁ。

『はい』か『いいえ』って選択肢があるべきだと思うけどなぁ。

こういうのあるとブラウザの戻るボタンは使うなとか言われても使っちゃうよね(´・ω・`)


Mercurialを使ってみることにした

区切りごとに手動で作業ディレクトリzipにして保存とかで管理していたので、ツールを使ってみることにした。

Mercurial

Subversionは少し試してみて無いなぁと思い、gitかとなんやかんややる前にMercurialが目に留まったので試してみることにした。Python関係のようなので安心感あるし。(Pythonしか知らないし自分)

ユーザ名を設定してないと

初めてのcommitで

No username found, using 'username@G5.local' instead

「ユーザ名@パソコン名」になるらしい。

無視したいファイルの設定

~/.hgignore

syntax: glob
*~
.DS_Store
*.pyc
*.pyo

~/.hgrc

[ui]
ignore=~/.hgignore
コマンドわからないときは
hg help

こんな感じ?

とりあえず使ってみる(゚Д゚)q


途中経過

コミットしてからファイルを色々追加・修正して、やっぱり全部ナシにしたいって時はどうすればいいんですかね?

追加したファイルを一斉削除的な(´・ω・`)


途中経過

hg addremove

とかで不明ファイルを無くしてから

ht update -C <version>

でいけるみたい(゚Д゚)

恒例のDropBoxで設定を共有してみた

ファイルを

  • ~/Dropbox/emacsfile/hgignore
  • ~/Dropbox/emacsfile/hgrc

とかに置いてある場合

ln -s ~/Dropbox/emacsfile/hgignore ~/.hgignore
ln -s ~/Dropbox/emacsfile/hgrc ~/.hgrc

Google Analyticsがなかなか面白い件

Chromeがブラウザシェア10%越え(当ブログ)!皆さんはどうですか? | Google Mania - グーグルの便利な使い方』さんで知ったGoogle Analyticsがなかなかすごい。かなり詳細な分析ができておもしろいなぁこれ。

例えば、このブログブラウザ利用率

  1. Firefox / 66.97%
  2. IE / 19.01%
  3. Safari / 7.10%
  4. Opera / 3.91%
  5. Mozilla / 1.28%
  6. Chrome / 1.04%
  7. 以下略

f:id:CortYuming:20080918094021p:image

Firefox、圧倒的じゃないか。(かなり偏ってる?)

ちなみにブラウザのバージョン

ver3.0.1が多くて吃驚。Firefoxは最新のものを使う人が多いみたい。

f:id:CortYuming:20080919070651p:image

IEは逆にver6が多い。

f:id:CortYuming:20080919070652p:image





Django で Ruby on Rails の Scaffold があればいいな

と思ってたらあるのね。

DjangoデフォルトScaffoldあれば昨日つくったチュートリアルをもっと短くできたかもと思ったけど。

とりあえずこのScaffoldScriptは使い方わからん(´・ω・`)