repo: repoでリポジトリを管理するための設定方法

Androidのプロジェクトって、アプリのプロジェクトとテストプロジェクトの2つの管理をしなきゃいけないじゃないですか。それって面倒ですよね。だからgitで2つのプロジェクトを含んだリポジトリを作って管理すりゃいいのかなと思って、そういうふうにして、BitBucketにリポジトリ作り終えたところで、一服していたら、眼鏡が大好きな人にこう言われたのです。

repoってあれですか?Androidのソースをダウンロードするときに使うやつでしょ?というくらいしか知識のない僕に対して、眼鏡大好きな人は優しく教えてくれました。

なるほど。便利そうだから、使ってみる事にしようと決意しました。

ありやまさんが教えてくれていますが、簡単にいうと、複数のリポジトリをrepoコマンドを使う事で一気に操る事が出来るという事ですね。Androidのプロジェクトのように複数のプロジェクトが絡んだり(プログラム、テスト、ライブラリのプロジェクトとか)する場合に、一気にpushしたり、一気にpullしたりするのに便利そうですね。ふむふむ。

参考にしたサイトは以下の通り。
Repo と Git の使い方 (Using Repo and Git)

  1. まずBitBucketにリポジトリを作る。AndroidアプリのプロジェクトのリポジトリとAndroidアプリのテスト用のプロジェクトのリポジトリの2つとかが多分普通ですね。作り方はBitBucketのサイトで勉強してください。ここでは、AndroidSampleプロジェクトとします。
  2. プロジェクトを作ってgitでコミットしてBitBucketのリポジトリにpushしといてください。
  3. Eclipseでrepo用のプロジェクトを作ります。これは別になんでもない、ただのプロジェクトを作ります。RepoHogeHogeというプロジェクトにしたとします。
  4. RepoHogeHogeプロジェクトにdefault.xmlというXMLファイルを作ります。XMLファイルに以下の記述をします。remoteタグのfetchのssh://git@bitbucket.orgは、githubを使ってるんなら、それ用に置き換えて。patorashは自分のBitBucketのユーザ名とかに置き換えて。
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
        <remote name="origin" fetch="ssh://git@bitbucket.org/" />
        <default revision="master" remote="origin" />
        <project path="AndroidSample"
            name="patorash/androidsample.git" remote="origin" />
        <project path="AndroidSampleTest"
            name="patorash/androidsampletest.git" remote="origin" />
    </manifest>
    
  5. RepoHogeHogeプロジェクト用のリポジトリをBitBucketに作ってpushします。
  6. 準備は完了。
  7. ターミナルで、チェックアウトするディレクトリで以下を実行。ちゃんとユーザ名はリポジトリ名を置き換えること。
    repo init -u git@bitbucket.org:patorash/repohogehoge.git
  8. ターミナルで、以下を実行。
    repo sync
  9. これで、AndroidSampleプロジェクトとAndroidSampleTestプロジェクトがチェックアウトされます。
  10. ただ、RepoHogeHogeをBitBucketにpushして直ぐにrepo syncを実行したらうまくいかないときがありました。
    それで凄い悩みました。BitBucketの調子が悪いときも結構あるのかもしれません。失敗する場合は、.repoディレクトリを削除して、再度repo initのやつをやってみてください。何度かやっていたら成功しました。

以上です。実際に使うのはこれからなので、またわかったら書いていきたいと思います。


Rails: capybaraのインストールで転ける対処法

Web+DB Press vol.61に、Railsのテストについて詳細に書かれているので、こちらに倣って色々とGemfileに書いていた。

group :development, :test do
  gem "rspec"
  gem "capybara"
  gem "rspec-rails"
end

しかし、bundle updateをかけたらエラーで落ちた。
nokogiriのインストールで落ちている模様。。。

原因は、libxml, libxslt, libiconvがなかったからのようだった。
私はHomeBrewを使っているので、これらをインストールしてからbundle updateを行なったところ、正常にインストールできた。

brew install libxml2 libxslt libiconv
brew link libxml2 libxslt libiconv
bundle update

これでインストールできた。
エンドツーエンドのテストのところは、なんかいろんなタイプのテストライブラリがあるみたいだから、また調べていきたい。


Rails: rails generateで生成されるひな形を編集する

Railsをやっていてイライラするのが、ファイル毎に文字コード指定を毎回しなければならないところ。
もうrails generateするときに最初から
# conding: utf-8
を追加してくれていればいいのに!!と思ったので、調べたら、@aguuuさんのブログがヒットした。

rake rails:templates:copy

で、ひな形のコピーができるんかなー?と思ってやったら、rakeのエラーでこけた…orz
以下、エラーメッセージ(ユーザ名は伏せ字です)

rake aborted!
No such file or directory – /Users/*******/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/generators/rails/stylesheets/templates

Tasks: TOP => rails:templates:copy
(See full trace by running task with –trace)

スタイルシートのテンプレートディレクトリがねーよ!!ということらしいので、サクッと作る。

mkdir -p /Users/*******/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/generators/rails/stylesheets/templates

その後、再度rake rails:templates:copyを実行したら、myapp/lib/templates以下にerb/とrails/がコピーされた。
railsフォルダ以下に、controllerフォルダなどがあった。
その直下にcontroller.rbと、templatesフォルダがあり、tempaltesフォルダ以下にもcontroller.rbがあり、この2つのcontroller.rbの内容は同じで、どっちをいじればいいのかわからなかったので、controllerフォルダ直下のcontroller.rbを編集して、rails generateしてみたところ、作られたcontrollerファイルに編集内容が反映されていたので、controller直下のcontroller.rbを編集したのでよさそう。

どうせだから最初からutf-8指定にしておいてほしいものだなぁ。


RedMine: 1.3.1のインストールでハマったところ

CloudCore VPSをレンタルしてみました。まだお試し期間中ですが。

スペックが、

  • CPU: 物理1コア
  • メモリ: 2GB
  • HDD: 100GB

になっていて、年間契約すると1ヶ月当たり945円になるので(但し初年度。翌年から1,470円)VPSを考えている人にとってはいいんじゃないかと思います。

VPSを借りて、そこにgitを立てたり、RedMineを立ててリモートの仲間達と一緒に開発を進めていきたいなぁと思っていたので、まずはRedMineをインストールしようと思ったのですが、むちゃくちゃハマりました…。なので、覚えている限り、備忘録的に書いておこうと思います。

RVMのインストール
RVMをインストールしようとしたら、curlがSSLの証明書のエラーで落ちました。ぐぐったところ、CentOS5.6に入ってるSSL証明書が古いようなので、更新しました。

cd /etc/pki/tls/cert
cp ca-bundle.crt ca-bundle.crt.bak
curl http://curl.haxx.se/ca/cacert.pem -o ca-bundle.crt

これで、SSLの証明書問題が解決。
あとはRVMのクイックインストールを参考にすればOK。
ちなみにRedMineを動かすのが目的なので、Rubyのデフォルトのバージョンは1.8.7にしています。

RedMine 1.3のインストールでRMagickのインストールでこける
RedMine 1.3のインストール手順を参考に作業を進めていくと、RMagickのところで失敗しました。CentOS 5.7にRMagickをインストールというページを参考に進めるも、msttcorefontsのところで失敗します。
rpmbuild -bb msttcorefonts-2.0-1.specのところで、接続に失敗し続けます。困ったので、ぐぐりました。
msttcore-fonts-2.0-3が出てるからそれを使えばいけました。
このページから、SPECfileをダウンロードして、同じようにrpmbuildしていきます。

wget http://www.mjmwired.net/resources/files/msttcore-fonts-2.0-3.spec
rpmbuild -bb msttcore-fonts-2.0-3.spec
rpm -ivh /usr/src/redhat/RPMS/noarch/msttcore-fonts-2.0-3.noarch.rpm

mkdir -p /usr/share/fonts/default/TrueType
cd /usr/share/fonts/default/TrueType/
find /usr/share/fonts/msttcore/ -exec ln -s {} \;
gem install rmagick -v=1.15.17 --no-rdoc --no-ri

これでRMagickのインストールに成功しました。

rake generate_session_storeでこける
RedMineは、Rubyのバージョンのみならず、ライブラリのバージョンに強く依存していることを痛感しました。RedMineのインストールの通りにやっても、なぜか
rake generate_session_store
でこけていたので、調べていたところ、RubyGem自体のバージョンが新しすぎたということで失敗していました。gemのバージョンを落とします。

gem update --system 1.3.7

このバージョンまで落としたところ、RedMineのインストールができました。

開発自体も大変ですが、開発環境の構築、プロジェクト管理環境の構築も大変です(^^;)

CloudCore VPSの使い勝手も確認しつつ、いいプロジェクト管理体制を整えていきたいと思います。


GAE/J: パッケージがなくなった。

GAE/Jのプロジェクトがエラーを出してました。

com.google.appengine.repackaged.*

のクラスを使ってはダメになった?みたいです。
仕方ないので別の方法を探すしかないと思ったので、準備しました。
JsonObjectとBase64でエラーが発生していたので、jarファイルをダウンロードしました。

以前のソースではBase64DecodeExceptionクラスが必要だったのですが、org.apache.commons.codec.binary.Base64を使った場合は必要なかったので(インスタンス化する)、try catch文を修正する必要がありました。ただ、現在はコンパイルが通るようになったくらいしか確認してないので、本当にちゃんと動くかどうかはまだわかってません。明日、続きを調査しようと思います。眠い…。