言語ネゴシエーション/github を使った公開 の変更点
更新- 追加された行はこの色です。
- 削除された行はこの色です。
- ソフトウェア/rails/言語ネゴシエーション/github を使った公開 へ行く。
- ソフトウェア/rails/言語ネゴシエーション/github を使った公開 の差分を削除
SIZE(22){COLOR(RED){このページの内容は非常に古いです(Rails 1.x.x)。最新の Rails では洗練された国際化の機構が標準で入っているため、下記は読むだけ無駄な内容になっています。}}
[[ソフトウェア/rails/言語ネゴシエーション]]
#contents
* git リポジトリ(ローカル)の作成 [#a85568da]
時代は subversion ではなく git なのだそうで。
http://www.kaeruspoon.net/articles/477 とか、~
http://www.kaeruspoon.net/articles/479 とか、~
http://www.netfort.gr.jp/~dancer/diary/200812.html.ja とか、~
http://blog.champierre.com/archives/670 ~
http://www.tempus.org/n-miyo/git-course-trans-ja/svn.ja.html~
あたりを参考に。
まずは git のインストール。
LANG:console
$ sudo aptitude install git-core
以下の新規パッケージがインストールされます:
git-core liberror-perl{a} rsync{a}
先に進みますか? [Y/n/?] Y
liberror-perl (0.17-1) を設定しています ...
git-core (1:1.6.3.1-1) を設定しています ...
rsync (3.0.5-1) を設定しています ...
$ git --version
git version 1.6.3.1
$ git config --global user.name "Osamu TAKEUCHI"
$ git config --global user.email "osamu@big.jp"
$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto
$ git config --global color.interactive auto
$ git config --global color.ui auto
$ git config --global core.pager "lv -c"
$ cat ~/.gitconfig
[user]
name = Osamu TAKEUCHI
email = osamu@big.jp
[color]
diff = auto
status = auto
branch = auto
interactive = auto
ui = auto
[core]
pager = lv -c
vendor/plugins/language_negotiation 以下にあるプラグインと、~
テスト用の Rails アプリケーションと、~
2つのリポジトリを別々に作成する。
まずはプラグインの方から
LANG:console
$ cd vendor/plugins/lanugage_negotiation/
$ git init
Initialized empty Git repository in (rails)/negotiation/vendor/plugins/lanugage_negotiation/.git/
$ git add .
$ git commit
First commit of LanguageNegotiation plugin for Ruby on Rails
Almost working with:
Ruby version 1.8.7 (i486-linux)
RubyGems version 1.3.2
Rails version 2.2.2
apache2 2.2.11-3
Documentation should be completed.
[master (root-commit) 3df21b6] First commit of LanguageNegotiation plugin for Ruby on Rails
10 files changed, 636 insertions(+), 0 deletions(-)
create mode 100644 MIT-LICENSE
create mode 100644 README
create mode 100644 Rakefile
create mode 100644 init.rb
create mode 100644 install.rb
create mode 100644 lib/lanugage_negotiation.rb
create mode 100644 tasks/lanugage_negotiation_tasks.rake
create mode 100644 test/lanugage_negotiation_test.rb
create mode 100644 test/test_helper.rb
create mode 100644 uninstall.rb
$ git status
# On branch master
nothing to commit (working directory clean)
次にテストアプリケーション
LANG:console
$ cd ../../..
$ pwd
(rails)/negotiation
$ git init
Initialized empty Git repository in (rails)/negotiation/.git/
$ mkdir db/migration
$ find . -type d -empty|xargs -L1 -I{} touch {}/.gitignore # 空のディレクトリに .gitignore を作成
$ touch log/.gitignore tmp/.gitignore vendor/plugin/.gitignore
$ cp config/database.yml config/database.sample.yml
$ cat > .gitignore
.DS_Store
*~
/log/*.log
/db/*.sqlite3
/config/database.yml
/tmp/*
!/tmp/*.gitignore
!/tmp/cache
!/tmp/pids
!/tmp/sessions
!/tmp/sockets
/public/cahce_in_test_environment
/vendor/plugins/language_negotiation
$ git add .
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: .gitignore
# new file: README
# new file: Rakefile
# new file: app/controllers/application.rb
# new file: app/controllers/test_controller.rb
# new file: app/helpers/application_helper.rb
# new file: app/helpers/test_helper.rb
# new file: app/models/.gitignore
# new file: app/views/layouts/application.html.en.erb
# new file: app/views/layouts/application.html.ja.erb
# new file: app/views/layouts/application.text.en.erb
# new file: app/views/test/_ok.html.en.erb
# new file: app/views/test/_ok.html.ja.erb
# new file: app/views/test/acceptid.html.ja.erb
# new file: app/views/test/acceptid.text.ja.erb
# new file: app/views/test/actioncached.html.en.erb
# new file: app/views/test/actioncached.html.ja.erb
# new file: app/views/test/fragmentcached.html.en.erb
# new file: app/views/test/fragmentcached.html.ja.erb
# new file: app/views/test/index.html.en.erb
# new file: app/views/test/index.html.ja.erb
# new file: app/views/test/onlyja.html.ja.erb
# new file: app/views/test/pagecached.html.en.erb
# new file: app/views/test/pagecached.html.ja.erb
# new file: app/views/test/renderfile_.html.en.erb
# new file: app/views/test/renderfile_.html.ja.erb
# new file: config/boot.rb
# new file: config/database.sample.yml
# new file: config/environment.rb
# new file: config/environments/development.rb
# new file: config/environments/production.rb
# new file: config/environments/test.rb
# new file: config/initializers/inflections.rb
# new file: config/initializers/mime_types.rb
# new file: config/initializers/new_rails_defaults.rb
# new file: config/locales/en.yml
# new file: config/routes.rb
# new file: db/migration/.gitignore
# new file: db/schema.rb
# new file: doc/README_FOR_APP
# new file: doc/api
# new file: lib/tasks/.gitignore
# new file: log/.gitignore ...
# new file: public/.htaccess
# new file: public/404.html
# new file: public/422.html
# new file: public/500.html
# new file: public/dispatch.cgi
# new file: public/dispatch.fcgi
# new file: public/dispatch.rb
# new file: public/favicon.ico
# new file: public/images/rails.png
# new file: public/index.html
# new file: public/javascripts/application.js
# new file: public/javascripts/controls.js
# new file: public/javascripts/dragdrop.js
# new file: public/javascripts/effects.js
# new file: public/javascripts/prototype.js
# new file: public/robots.txt
# new file: public/stylesheets/.gitignore
# new file: script/about
# new file: script/console
# new file: script/dbconsole
# new file: script/destroy
# new file: script/generate
# new file: script/performance/benchmarker
# new file: script/performance/profiler
# new file: script/performance/request
# new file: script/plugin
# new file: script/process/inspector
# new file: script/process/reaper
# new file: script/process/spawner
# new file: script/runner
# new file: script/server
# new file: test/fixtures/.gitignore
# new file: test/functional/test_controller_test.rb
# new file: test/performance/browsing_test.rb
# new file: test/test_helper.rb
# new file: test/unit/.gitignore
# new file: tmp/.gitignore
# new file: tmp/cache/.gitignore
# new file: tmp/pids/.gitignore
# new file: tmp/sessions/.gitignore
# new file: tmp/sockets/.gitignore
# new file: vendor/actionmailer
# new file: vendor/actionpack
# new file: vendor/activemodel
# new file: vendor/activerecord
# new file: vendor/activeresource
# new file: vendor/activesupport
# new file: vendor/plugins/.gitignore
# new file: vendor/rails
# new file: vendor/railties
#
$ git commit
Testing framework of LanguageNegotiation plugin for Ruby on Rails
Works with:
Ruby version 1.8.7 (i486-linux)
RubyGems version 1.3.2
Rails version 2.2.2
apache2 2.2.11-3
...
$
git は空のディレクトリを無視するので、空のディレクトリ全てに
.gitignore というファイルを作っておく。
個々のディレクトリの .gitignore にルールを書くことを勧める記述が
多いのだけれど、見通しが悪くなるのでルートディレクトリの .gitignore に
一元化するのがよいと思う。
ルールを / から始めるとリポジトリのルートディレクトリからの絶対パスとして、~
ルールを / から始めなければ個々のディレクトリからの相対パスとして、解釈されるらしい。
tmp ディレクトリの指定が結構面倒で、~
/tmp/*
とすると、.gitignore も含めて無視されるため、空のディレクトリとなった /tmp 自身も無視されてしまう。
!.giignore
とすることで、.gitignore は無視しないように指定できる。
同様に、/tmp/cache/.gitignore なども無視しないように書いたのが以下のルール。
!/tmp/*.gitignore
!/tmp/cache
!/tmp/pids
!/tmp/sessions
!/tmp/sockets
これでローカルに2つのリポジトリが作成できた。
* プロジェクトを github に登録 [#s00cb9d3]
https://github.com/
にアカウントを作成し、プロジェクト RailsLanguageNegotiationPlugin と
RailsLanguageNegotiationPluginTestApp を作成。
表示されたガイダンスに沿う形で、
LANG:console
$ git config --global github.user osamutake
$ git config --global github.token c2b35c1bd09d64bf37a713702d7ae659
$ git remote add origin git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
$ git push origin master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
$ cd ~/.ssh
$ ls id_dsa
ls: cannot access id_dsa: そのようなファイルやディレクトリはありません
$ ssh-keygen # もし id_dsa がすでにあればスキップ
Generating public/private rsa key pair.
Enter file in which to save the key (/home/takeuchi/.ssh/id_rsa): (何もせずENTER)
Enter passphrase (empty for no passphrase): (何もせずENTER)
Enter same passphrase again: (何もせずENTER)
Your identification has been saved in github.
Your public key has been saved in github.pub.
The key fingerprint is:
ab:5e:07:df:a1:02:84:cf:a3:21:d1:7e:aa:38:b3:2f takeuchi@dora
The key's randomart image is:
+--[ RSA 2048]----+
| ................|
| |
+-----------------+
$ cat id_isa.pub
ssh-rsa AAAB3Nza...
$ # 表示された内容をコピーして https://github.com/account#keys の SSH Public Keys に追加
$ cd (rails)/negotiation/vendor/plugins/language_negotiation
$ git push origin master
Counting objects: 15, done.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (15/15), 6.86 KiB, done.
Total 15 (delta 0), reused 0 (delta 0)
To git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
* [new branch] master -> master
https://github.com/ を見るとちゃんと登録されている。とても簡単。
** 取り出せる事をテスト [#a95bef8f]
じゃ、取り出せるか試してみるか、と軽い気持ちで操作したら、えらい事になった。
LANGUAGE:console
$ cd ..
$ mkdir language_negotiation2
$ cd language_negotiation2
$ git pull git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
From git@github.com:osamutake/RailsLanguageNegotiationPlugin
* branch HEAD -> FETCH_HEAD
Auto-merging README
CONFLICT (add/add): Merge conflict in README
Auto-merging Rakefile
CONFLICT (add/add): Merge conflict in Rakefile
Auto-merging test/test_helper.rb
CONFLICT (add/add): Merge conflict in test/test_helper.rb
Automatic merge failed; fix conflicts and then commit the result.
空のディレクトリでどうして conflict?~
と思ったら、テストアプリケーションのリポジトリにマージされてました。
LANGUAGE:console
$ cd ../../..
$ git status
README: needs merge
Rakefile: needs merge
test/test_helper.rb: needs merge
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: MIT-LICENSE
# new file: init.rb
# new file: install.rb
# new file: lib/lanugage_negotiation.rb
# new file: tasks/lanugage_negotiation_tasks.rake
# new file: test/lanugage_negotiation_test.rb
# new file: uninstall.rb
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# unmerged: README
# unmerged: Rakefile
# unmerged: test/test_helper.rb
#
pull したのを取り消し、マージされたファイルを書き戻す。
LANGUAGE:console
$ git reset HEAD
README: locally modified
Rakefile: locally modified
test/test_helper.rb: locally modified
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README
# modified: Rakefile
# modified: test/test_helper.rb
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# MIT-LICENSE
# init.rb
# install.rb
# lib/lanugage_negotiation.rb
# tasks/
# test/lanugage_negotiation_test.rb
# uninstall.rb
no changes added to commit (use "git add" and/or "git commit -a")
$ rm MIT-LICENSE init.rb install.rb lib/lanugage_negotiation.rb
$ rm test/lanugage_negotiation_test.rb uninstall.rb
$ rm -r tasks
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README
# modified: Rakefile
# modified: test/test_helper.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout README Rakefile test/test_helper.rb
$ git status
# On branch master
nothing to commit (working directory clean)
ふう。~
git は親ディレクトリをさかのぼってリポジトリデータを検索する仕様なのね。
negotiation アプリケーションの外に出て、
LANGUAGE:console
$ cd
$ mkdir language_negotiation
$ cd language_negotiation
$ git pull git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
fatal: Not a git repository (or any of the parent directories): .git
あら、そもそも pull と書いていたのが間違い、と。
LANG:console
$ git clone git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
Initialized empty Git repository in /home/takeuchi/language_negotiation/RailsLanguageNegotiationPlugin/.git/
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 15 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (15/15), 6.86 KiB, done.
$ ls
RailsLanguageNegotiationPlugin
$ cd RailsLanguageNegotiationPlugin/
$ ls
MIT-LICENSE README Rakefile init.rb install.rb lib tasks test uninstall.rb
$ git status
# On branch master
nothing to commit (working directory clean)
$ cd ../..
$ rm -rf language_negotiation/
正しく落とせている。
もしかして・・・
LANG:console
$ cd (rails)/negotiation
$ cd vendor/plugins/
$ git clone git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
Initialized empty Git repository in (rails)/negotiation/vendor/plugins/RailsLanguageNegotiationPlugin/.git/
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 15 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (15/15), 6.86 KiB, done.
$ ls
RailsLanguageNegotiationPlugin lanugage_negotiation
$ ls RailsLanguageNegotiationPlugin
MIT-LICENSE README Rakefile init.rb install.rb lib tasks test uninstall.rb
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# RailsLanguageNegotiationPlugin/
nothing added to commit but untracked files present (use "git add" to track)
$ rm -rf RailsLanguageNegotiationPlugin
これでもうまく行くわけね。
やはりもう少し git に慣れないと危険だ。
- Gitを使いこなすための20のコマンド http://sourceforge.jp/magazine/09/03/16/0831212/2
- Lern.github http://learn.github.com/
で、いきなり公開されてしまうのだから、もう少しドキュメントをしっかりしないとだめだと今更反省。~
テストアプリケーションの方は特に、なので、しばらくローカルで更新して、整ったら push するのが良さそう。
ローカルでも履歴が取れるのが subversion よりも良いところみたい。
* git を使った編集作業 [#w301c061]
http://github.com/osamutake/RailsLanguageNegotiationPlugin/issues#issue/1
にも書いたけれど、言語の優先順位について考える必要がありそう。
これを例にして、git を使った編集作業について書く。
LANG:console
$ jed vendor/plugins/language_negotiation/lib/language_negotiation.rb
(編集)
$ jed vendor/plugins/language_negotiation/test/language_negotiation_test.rb
(編集)
$ cd ../../..
$ rake test:plugins
Loaded suite /usr/lib/ruby/1.8/rake/rake_test_loader
Started
...
Finished in 0.037807 seconds.
3 tests, 30 assertions, 0 failures, 0 errors
$ rake test:functionals
Loaded suite /usr/lib/ruby/1.8/rake/rake_test_loader
Started
..........................
Finished in 0.31159 seconds.
30 tests, 112 assertions, 0 failures, 0 errors
テストが無事通ったらコミット作業。
LANG:console
$ cd vendor/plugins/language_negotiation
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: lib/lanugage_negotiation.rb
# modified: test/lanugage_negotiation_test.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git diff
(差分がカラー表示される)
$ git add lib/lanugage_negotiation.rb test/lanugage_negotiation_test.rb
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: lib/lanugage_negotiation.rb
# modified: test/lanugage_negotiation_test.rb
#
$ git commit
Adjust priority of template file without language specification
When template files 'some.html.en' and 'some.html' exist,
request for 'some.ja' should be processed with 'some.html'
instead of 'some.html.en'.
See
http://github.com/osamutake/RailsLanguageNegotiationPlugin/issues#issue/1
Other improvements:
- removed not being used
ActionController::AbstractRequest::language
- calls for
ActionController::AbstractRequest.accepts_languages.first
were replaced by those for
ActionController::AbstractRequest.language_priority.first
- optimized template_handler_extension extraction from template_path
in ActionView::Base::_pick_template
- removed not being used
ActionController::Caching::Actions::ActionCachePath::language
[master e3a80c3] Adjust priority of template file without language specification
2 files changed, 45 insertions(+), 44 deletions(-)
$ git push
Counting objects: 11, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1.37 KiB, done.
Total 6 (delta 3), reused 0 (delta 0)
To git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
3df21b6..e3a80c3 master -> master
以上でリモートリポジトリも更新される。
テストアプリケーションのコミットではちょっとミスした。
LANG:console
$ cd ../../..
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/controllers/test_controller.rb
# modified: test/functional/test_controller_test.rb
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# app/views/test/nolang.html.erb
# app/views/test/nolang.html.ja.erb
$ git commit -a
Adjust priority of template file without language specification
When template files 'some.html.en' and 'some.html' exist,
request for 'some.ja' should be processed with 'some.html'
instead of 'some.html.en'.
See
http://github.com/osamutake/RailsLanguageNegotiationPlugin/issues#issue/1
[master 26c50dc] Adjust priority of template file without language specification
2 files changed, 49 insertions(+), 0 deletions(-)
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# app/views/test/nolang.html.erb
# app/views/test/nolang.html.ja.erb
nothing added to commit but untracked files present (use "git add" to track)
$ git add app/views/test/nolang.html.*
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: app/views/test/nolang.html.erb
# new file: app/views/test/nolang.html.ja.erb
#
$ git commit --amend
[master 678da96] Adjust priority of template file without language specification
4 files changed, 51 insertions(+), 0 deletions(-)
create mode 100644 app/views/test/nolang.html.erb
create mode 100644 app/views/test/nolang.html.ja.erb
$ git log
commit 678da9633211e515a7ec56034bb7b46e6724bd3e
Author: Osamu TAKEUCHI <osamu@big.jp>
Date: Wed Jun 10 17:45:01 2009 +0900
Adjust priority of template file without language specification
When template files 'some.html.en' and 'some.html' exist,
request for 'some.ja' should be processed with 'some.html'
instead of 'some.html.en'.
See
http://github.com/osamutake/RailsLanguageNegotiationPlugin/issues#issue/1
commit ad51715241e8f480da6de8d1d87035fea6c0d2ba
Author: Osamu TAKEUCHI <osamu@big.jp>
Date: Wed Jun 10 10:34:05 2009 +0900
Testing framework of LanguageNegotiation plugin for Ruby on Rails
Works with:
Ruby version 1.8.7 (i486-linux)
RubyGems version 1.3.2
Rails version 2.2.2
apache2 2.2.11-3
git commit -a で変更点はすべてコミットされるかと思いきや、
新規作成ファイルについては対象外だったようだ。
手動で git add した後、git commit --amend したところ、
コミットのやり直しができて、ミスの形跡も残らなかった。
最後に github の該当する issue にコミット番号をコメントして、
Closed に移して一件落着。
* CHANGELOG について [#e36e8a78]
ファイル中に変更履歴を残したい。
こんな手順で良いんだろうか?
LANG:console
$ git log > CHANGELOG
$ git add CHANGELOG
$ git commit --amend
$ cd vendor/plugins/language_negotiation
$ git log > CHANGELOG
$ git add CHANGELOG
$ git commit --amend
$ git push origin master
To git@github.com:osamutake/RailsLanguageNegotiationPlugin.git
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:osamutake/RailsLanguageNegotiationPlugin.git'
$ git push origin +master:master
最後の部分、--amend でコミットしたせいでリモートの情報とローカルの情報が
食い違ってしまっていて、そのままだと push させてくれない。
ローカルを優先して強制的に push するための呪文が git push origin +master:master らしい。
同様の現象は、ローカルでの作業中にリモートリポジトリが書き換わった
場合にも起きる。
その場合には素直に git pull origin master して、ローカル側を更新する事になる。
* tar ball の作り方 [#l75803c1]
git ではなく tar ball で落としたい人向けに、
ファイルパスに "*.git*" を含まないファイルのみを
日付付きのファイル名に tar.gz してアップしておくと
いいのかな、などと、
LANG:console
$ find . -not -path '*/.git*' -a -type f | \
tar fcz `date +"language_negotiation-%y%m%d%H%M%S"` -T-
これを Downloads ページにアップロードすれば・・・
む、よく見たら Dowloads ページに行かなくてもページの真ん中に
download ボタンがあって、これをクリックすればソースツリーを
zip か tar で落とせる仕組みになっているんだね。
自分で tar ball を作る必要は無かったようでした。
* スペルミスの修正 [#wd5c4d69]
!!!
今まで気づかなかったというのが信じられないほどに lanugage_negotiation 。
LANG:console
$ cd ..
$ mv lanugage_negotiation language_negotiation
$ cd language_negotiation
$ grep -i lanugage * */*
README:LanugageNegotiation
Rakefile:desc 'Test the lanugage_negotiation plugin.'
Rakefile:desc 'Generate documentation for the lanugage_negotiation plugin.'
Rakefile: rdoc.title = 'LanugageNegotiation'
init.rb:require "lanugage_negotiation"
lib/lanugage_negotiation.rb:# LanugageNegotiation
tasks/lanugage_negotiation_tasks.rake:# task :lanugage_negotiation do
test/lanugage_negotiation_test.rb:class LanugageNegotiationTest < ActiveSupport::TestCase
$ jed
(編集)
$ grep -i lanugage * */*
$ find . -iname lanu*
./test/lanugage_negotiation_test.rb
./tasks/lanugage_negotiation_tasks.rake
./lib/lanugage_negotiation.rb
$ cd test
$ git mv lanugage_negotiation_test.rb language_negotiation_test.rb
$ ls
language_negotiation_test.rb test_helper.rb
$ cd ../tasks/
$ git mv lanugage_negotiation_tasks.rake language_negotiation_tasks.rake
$ cd ../lib
$ git mv lanugage_negotiation.rb language_negotiation.rb
$ cd ..
$ find . -iname lanu*
$ git status
# renamed: lib/lanugage_negotiation.rb -> lib/language_negotiation.rb
# renamed: tasks/lanugage_negotiation_tasks.rake -> tasks/language_negotiation_tasks.rake
# renamed: test/lanugage_negotiation_test.rb -> test/language_negotiation_test.rb
# modified: README
# modified: Rakefile
# modified: init.rb
# modified: lib/language_negotiation.rb
# modified: tasks/language_negotiation_tasks.rake
# modified: test/language_negotiation_test.rb
$ cd ../../..
$ rake test:plugins
3 tests, 30 assertions, 0 failures, 0 errors
$ rake test:functionals
30 tests, 112 assertions, 0 failures, 0 errors
$ cd vendor/plugins/language_negotiation/
$ git commit -a -m "Typo fixing lanugage -> language"
[master aef2a17] Typo fixing lanugage -> language
6 files changed, 9 insertions(+), 9 deletions(-)
rename lib/{lanugage_negotiation.rb => language_negotiation.rb} (99%)
rename tasks/{lanugage_negotiation_tasks.rake => language_negotiation_tasks.rake} (67%)
rename test/{lanugage_negotiation_test.rb => language_negotiation_test.rb} (98%)
$ git status
nothing to commit (working directory clean)
$ git log > CHANGELOG
$ git commit -a --amend
[master 79ce1e9] Typo fixing lanugage -> language
7 files changed, 16 insertions(+), 10 deletions(-)
rename lib/{lanugage_negotiation.rb => language_negotiation.rb} (99%)
rename tasks/{lanugage_negotiation_tasks.rake => language_negotiation_tasks.rake} (67%)
rename test/{lanugage_negotiation_test.rb => language_negotiation_test.rb} (98%)
$ git push origin master
アプリケーション側のコードに全く触れずに済むあたり、Rails の設計の良さが光る。
プラグイン内にしても、ドキュメント部分を除けば
init.rb:require "lanugage_negotiation"
test/lanugage_negotiation_test.rb:class LanugageNegotiationTest < ActiveSupport::TestCase
この2つだけ。
しかも後者は必ずしも直す必要のない部分。
すばらしい。
PS 今まで気づかなかったのが恐ろしい。
* CHANGELOG 更新コマンド [#h3d7010e]
メッセージの入力を求められるのがおっくうなとき、git commit の
-C オプションが使える。
LANG:console
$ test -d .git && \
git log > CHANGELOG && \
git commit -a --amend -C `head -1 CHANGELOG | sed "s/.* //"`
+ .git ディレクトリが存在すれば~
(リポジトリのトップディレクトリである事を確認してから)
+ git log を CHANGELOG に入れ
+ 前回と同じメッセージを付けて commit する
Counter: 6442 (from 2010/06/03),
today: 1,
yesterday: 1