yan's Handicraft

作成したフリーソフトを公開
Home » Page 2

WinMerge を Windows のGitシェルのdiffツールに使う

6月 6th, 2013 Posted in git, PC/システム開発

Windows環境で、git diff したときに WinMerge で比較できるようにした時のメモ。 (GitForWindowsのシェルを使用することを前提)

手順

  • extDiff.sh に以下の内容を書いて、パスを通したディレクトリに配置する
#!/bin/sh

# If there are seven arguments, new file and old file will be passed to an argument. 
[ $# -eq 7 ] && /c/<WinMergeのインストールディレクトリ>/WinMergeU "$2" "$5"
  • コマンド git config --global diff.external extDiff.sh を実行

参考

EclipsePDTとSymfony1.4でPHP開発環境を作る

6月 5th, 2013 Posted in LL, php Tags: , ,

仕事上Symfony1.4で開発しないといけなくなったので、PHPの環境構築メモ

使用する環境の前提

  • Windows8
  • Symfony1.4
  • Pleiades All in One Eclipse4.2 Juno
    • MergeDoc Project Pleiades – Eclipse
    • Juno の致命的なパフォーマンスバグが SR2で改善されたらしいので今回は、Junoでやってみます
    • OSに応じた Pleiades (Juno) PHP版をダウンロード。 ( 今回ダウンローとしたファイルは pleiades-e4.2-platform_20130303.zip )
  • sympony1.40.20 — symfony.comのダウンロードページ の 下のほうにある「Download previous stable releases:」でバージョン選択してダウンロードできました。(2013-6-5 時点)
    ( 今回ダウンローとしたファイルは symfony-1.4.20.tgz )

インストールとか、環境セットアップとか

PHP と pleiades の準備

  • pleiades-e4.2-platform_20130303.zip を解凍してお好きなディレクトリに配置。( <Programsホーム>と以後呼ぶことにします )
  • <Programsホーム>\xamppC:\xampp にコピー。 (移動でもいいと思います)
    • phpの動作確認 <Programsホーム>/xampp/ にディレクトリ移動した後、php --version を実行して バージョン情報が表示されればうまくいっている。
    • php.ini がルートディレクトリを起点に設定されているので、C:\xampp 以外に置くと色々面倒っぽい
  • php.exe に環境変数PATHをとおるようにする。( 後で、phpコマンドを実行し易くするため )
  • eclipse用のWKスペース用ディレクトリを作成。 ( <wkspace>と以後呼ぶことにします )
  • プロジェクト用のディレクトリを、<wkspace> 以下に作成します。( <プロジェクトHOME>と以後呼ぶことにします )

Symfony の準備

  • Jobeet (Symfony1.4のチュートリアル(日本語訳)) の1日目に 従ってセットアップしていきます
  • <プロジェクトHOME>/lib/vendor にディレクトリを作成し、そこに、symfony-1.4.20.tgz を解凍します。
  • ディレクトリ名を <プロジェクトHOME>/lib/vendor/symfony-1.4.20 から <プロジェクトHOME>/lib/vendor/symfony に変更します
    • symfony の動作確認
      • <プロジェクトHOME> ディレクトリに移動して php lib/vendor/symfony/data/bin/symfony -V コマンドを実行して、symfony のバージョン情報が表示されれば成功
  • 以下のコマンドを実行して、プロジェクトを作成します
    • php lib/vendor/symfony/data/bin/symfony generate:project <プロジェクト名> --orm=Propel
    • <プロジェクトHOME> 以下に、ディレクトリとファイルが作成されます
  • Windows 環境でsymfono コマンドを発行できるように、<プロジェクトHOME> ディレクトリに移動して、以下のコマンドを実行します
    copy lib\vendor\symfony\data\bin\symfony.bat .
  • gitで管理する場合は、管理対象外を指定するために <プロジェクトHOME>/.gitignor を作成し、以下を書いておきます
    logs
    cache
  • <プロジェクトHOME> ディレクトリで以下のコマンドを実行して、アプリケーションを作成します
    • symfony generate:app frontend
    • note: コマンド中の frontend はアプリケーション名。 慣習的には、frontend 、 backend のような名前にする模様ですが、 この名前が必須なわけではないです。

Apache の設定

  • C:\xampp\apache\conf\extra\httpd.conf ( Alias をつける方法で今回解決することにします )
    • やりたいこと
      • <プロジェクトHOME>/lib/vendor/symfony/data/web/sf<プロジェクトHOME>/web が Apache 経由でアクセスできるようにします
    • 以下を C:\xampp\apache\conf\extra\httpd.conf の末尾に追加 (Junoに付属しているApacheは 2.4.3 なので昔の Allow from all みたいな設定とだいぶかわってる )
      ( <プロジェクトHOME> のディレクトリ名をfoo とすると以下のような感じになる)
Alias /foo/sf  <プロジェクトHOME>/lib/vendor/symfony/data/web/sf
<Directory <プロジェクトHOME>/lib/vendor/symfony/data/web/sf>
  AllowOverride All
  Require all granted
</Directory>

Alias /foo  <プロジェクトHOME>/web
<Directory <プロジェクトHOME>/web>
  AllowOverride All
  Require all granted
</Directory>
  • Apacheを起動
    • C:\xampp\xampp-control.exe で xamppの管理画面からApachを起動
  • http://localhost/foo/index.php にアクセスして「Symfony Project Created」画面が表示されれば成功

Symfony 1.4 関係のリンク

Symfony 1.4

チュートリアル

感想

  • 最初に思ったより大変でした。
  • Eclipse PDTプラグイン は、Symfony 1.4 では特にいいところが見当たりません
  • 「MergeDoc Project Pleiades – Eclipse (PHP用)」は色々つまっていて便利

軽量Linux linuxbean をインストール

5月 30th, 2013 Posted in Linux, linuxbean, PC/システム開発 Tags:

最初から日本語化されている軽量Linuxということで興味があった linuxBean をセットアップしてみる。
( Windows ではまりがちな、GIT や、sbt を簡単に扱いたくてVMのLinuxを使おうかとおもって。。 )

入手先など

今回インストールした環境

  • VirtualBox上のVMにインストール

linuxbeanインストール

  1. linuxbean のCDから起動して、live モードでブートします
  2. デスクトップに「linuxBean 12.4のインストール」というアイコンがあるのでダブルクリックします
  3. ウィザードに従って、ちょっと色々入力します
  4. 再起動を促すダイアログが表示されるので、再起動。
    Ubuntuなんかと比べるとあっという間に、インストール終了
    • “Please remove installation media and close the trey (if any) then press ENTER:” が CUI画面に表示されるので、 ENTER を押下。
  5. インストール完了です

その他、やってみたこと

パッケージを最新にする

  • 「アップデートマネージャー」で更新チェックした後「アップデートをインストール」ボタンをクリック
    • 「アップデートマネージャー」を開くには、以下のいずれかが良いかと思います
      • 左側のバーの該当アイコンをクリックする
      • 豆マーク > 設定 > Synaptecパッケージマネージャー

ssh をインストール

  • 「Synaptecパッケージマネージャー」で、パッケージ名「ssh」を選択してインストールします
    • 「チェックボックス」をマークして、上のほうにある「適用」ボタンを押下
    • ターミナルで apt-get install ssh でもいけると思いますが、GUIツールでやれるのはうれしい
    • 「Synaptecパッケージマネージャー」を開くには、以下のいずれかが良いかと思います
      • 左側のバーの該当アイコンをクリックする
      • 豆マーク > 設定 > Synaptecパッケージマネージャー

Oracle JDK を配置

使わない人には関係ないけど。。。 私は使うので

単純にJDKを配置して、使うユーザの設定でパスを通すことを前提としてます

bashの設定ファイルをrootからコピー

  • ユーザのホームディレクトリに .bashrc .profile がなかったので、rootのファイルをコピー
cd ~
cp /root/.bashrc .
cp /root/.profile .

ログインユーザのパス設定など

  • cd ~; mkdir bin
  • .bashrc の末尾に以下を追加
export JAVA_HOME=/usr/local/java/jdk7
export PATH=$HOME/bin:$JAVA_HOME/bin:$PATH
  • .bash_profile の末尾に以下を追加
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

シャットダウン時、自動的に電源OFF状態にする

  • 「Grub Customizer」を開く ( 豆マーク > 設定 > Grub Customizer )
  • 「General settings」タブをクリックし、「kernel parameters」の acpi=noneacpi=force に変更して、アイコンの一番左上の四角いやつをクリックしてセーブ

はまったこと

Guest Additions のインストール

  • VirtualBox の Guest Additions をインストールすると起動しなくなってしまった。
    これは痛い。Guest Additions 使わないと、VMの文字列をカットアンドペーストできないし、 WindowsのディレクトリをLinuxのVMにマウントしたりできない。
    • VirtualBox4.2.12 の「Guest Additions」のバグらしい。 参考ページ:VirtualBoxのフォーラム 4.2.12 がリリースされてから結構時間がたってますが、アナウンスも控えめ。Oracle さん優しくありませんね。
    • Download VirtualBox (Old Builds) から 「VirtualBox 4.2.10」を入手して、linuxbeanもインストールしなおしました。 ( 使い古した環境に 最新のGuest Additionsを当てなおすのが怖くなりました。。。 )
    • Guest Additions のインストールは以下のような感じ
      • VM上のWindowメニュー「デバイス」>「Guest Additions のインストール」
      • ターミナルでコマンド実行
cd /media/VBOXADDITIONS_?????    <--- 番号部分が変わる
 sudo sh VBoxLinuxAdditions.run

感想

  • 軽快にうごきました。SSHでホストOS(win)から接続してアイドル状態なら、CPUは1%以下。使ってみようと思います。

Gitblit で Git サーバを構築する

5月 28th, 2013 Posted in git, PC/システム開発 Tags: ,

ブログ 「イマドキのIDE事情 第154回 簡単デプロイ!「Gitblit」で共有Gitサーバを手軽に構築 」 で、Gitblit というものが紹介されていましたのでやってみました。

バイナリの入手

  1. Gitblitの本家サイトhttp://gitblit.com/ の「Download Gitblit GO」 をクリックして ダウンロードサイトへ遷移し、zip圧縮されたバイナリを入手します。 (2013-5-28 時点のバージョンは gitblit-1.2.1.zip )
    「Gitblit GO」は Jetty を内蔵していて、単独で動作するようです
  2. gitblit-?.?.?.zip を適当なディレクトリに解凍して、配置します
  3. <Gitblit の配置ディレクトリ>/data/gitblit.propertiesserver.httpPort = の設定を修正します。
    今回は、 server.httpPort = 8080 を設定してみました。 ( 参考:Gitblitの本家のsetup )
  4. 今回は、Windows環境で試したので <Gitblit の配置ディレクトリ>\gitblit.cmd をコマンドプロンプトで実行します。
    ( シェル実行用の gitblit も存在してます。Linux ならそちら )
  5. http://localhost:8080/ にアクセスします。(ポート番号は上で設定したものになります)
    すると、Gitリポジトリ一覧のWeb画面が表示されます。
  6. 「リポジトリ作成」をクリックし、「名前」にリポジトリを入力して、「保存」ボタンを押下すると、 gitリポジトリの出来上がりです。
    • リポジトリをローカルにクローンするには git clone http://localhost:8080/git/<リポジトリ名>.git でできます

感想

  • 参照元の記事では、「Gitblit War」をTomcat に乗せる方法を説明されていましたが、
    「Gitblit GO」はTomcatをセットアップする必要もなく、すごく簡単です。

CloudBees にデプロイしたい

5月 23rd, 2013 Posted in cloud, CloudBees, PC/システム開発

最近 scalatra で作ってみていたWebアプリを、 クラウドなるものにデプロイしてみたかったのでやってみました。

“Servlet 3.0” 現時点で使える CloudBees でやってみます。

CloudBees にユーザ登録する

  • CloudBees でユーザ登録します。
    2013-5-25時点では「Try it for Free!」のボタンを押下してアカウントを登録できました。

CloudBees SDK のインストール

インストールするための材料

  • 「CloudBees SDK 自体のダウンロード」
    • CloudBeesにログインしたトップページからダウンロードリンクがありました。 ただし、2013-5-25時点でバージョンが少し古かったです。
      左上のほうにある「Download Tools and SDK」タブクリックして、さらに、 「Bee SDK」ボタンを押下するとダウンロードできました。
    • http://cloudbees-downloads.s3.amazonaws.com/sdk/cloudbees-sdk-1.5.0-bin.zip というようなURLを直接たたいてもダウンロードできました。 ( バージョンについてはCloudBees SDK の説明ページ に記述されている箇所がありました )

インストール

CloudBees SDK の説明ページ の説明に従ってセットアップしていきます

  • ダウンロードした cloudbees-sdk-?.?.?-bin.zip を適当な場所に解凍
  • 環境変数 BEES_HOME を設定。bees.batbees ファイルが存在するディレクトリを BEES_HOME として指定
  • 環境変数 PATH に、環境変数 BEES_HOME を追加

動作確認

  • コマンド bees help を実行して Updating Bees SDK. This may take a while が表示されればインストール成功です。
    • プロキシ設定する必要がある環境では、 CloudBees SDK の説明ページ の 「Running behind a proxy」を参考に設定が必要な模様 ( おそらく、bees init ・・・ のような感じで設定ればよさそう。( やってません) )
    • しばらく待った後、いくつか入力を求められます。
      • Enter your default CloudBees API end point [us | eu]:
        • us を入力しておく ( おそらく、どっちでもいい)
          ( EU地域でサーバ運用する場合、個人情報などのデータ格納に法律上のサーバの場所の制限があるらしい。 日本人にはあんまり関係ないし、us のほうが多分回線が太いと思う )
      • Enter your CloudBees account email address:
        • 登録した際のメールアドレスを入力
      • Enter your CloudBees account password:
        • 登録した際のパスワードを入力
    • その後、help 結果が、ドバっと表示される
    • ユーザの情報は C:\Users\<ユーザ名>\.bees に格納される模様。 bee config:delete というコマンドでクリアできるらしい ( やってません)

“RUN@cloud Application Service”を利用開始しアプリケーションを追加

  • ログイン後のホームの上のほうにあるボタン「RUN@cloud Application Service」を押下して、 さらに、「Subscribe」ボタンを押下して利用開始します。 ( もちろのFreeを選択しました )
  • 利用開始後、ホーム画面に行き、『大きな+マークに「Add Applications」の注釈がついたボタン』 を押下すると、アプリケーション登録用ダイアログが表示されるので、 「アプリケーション名」を入力して登録します。
    • 「Application is ready」という結果ダイアログが表示され、 アプリケーションのURLが表示されます。
      ( URL は http://<アプリケーション名>.<アカウント名>.cloudbees.net/ )

アプリケーションのデプロイ

Getting Started with RUN@cloudScalatra本家の Deploying to CloudBees を参考にデプロイしていきます。

  • 予め warファイルを作成しておき、以下のコマンドを実行します。
    bees app:deploy <warファイルのパス> -a <アプリケーションID> -t <ClickStack>
    • -t <ClickStack> は省略可能です。(省略した場合は、アプリケーションコンテナが Tomcat6 になりました)
      私は Servlet 3.0 のコンテナにしたかったので、 -t tomcat7 を指定しました。
    • 動作確認
      • http://<アプリケーション名>.<アカウント名>.cloudbees.net/ をブラウザで表示して 表示できれば成功です。

Scalatra でアクセスログとエラーログを出力したい

5月 22nd, 2013 Posted in PC/システム開発, scala, Scalatra

開発していると、必ずと言っていいぐらい、「アクセスログ」や「異常発生時のログ」の出力
を求められるので、Scalatra ではどうやったらいいのかやってみました。

  • org.scalatra.ScalatraServlet#serviceHttpServlet#service をオーバーライドして
    handle メソッドを呼び出す実装になっていたので、handle メソッドオーバーライドしてあげれば
    ログが統一的に出力でるのではないかと思いやってみました。

    • 結果
      • アクセスログは出力できるのですが、例外がキャッチできず、異常発生時のログが出力できませんでした。
        ソースを追いかけてみると、handle メソッド処理中に例外が発生すると、
        所々で例外をキャッチしていました。
  • 更にソースを読むと変数org.scalatra.ScalatraBase#errorHandler が、例外が発生時の
    処理に使われているのが分かりました。
    変数errorHandlerを書き換えてやると、異常時にログが出力できました。

    • 特記事項
      • errorHandler の型は type ErrorHandler = PartialFunction[Throwable, Any]
        という風に定義されています
      • Googleグループ scalatra-user でこの辺のことを議論されているスレッドがありました。==>
        “Logging exceptions”

実装例

テンプレートとして作成される ????Stack クラスに、以下のような感じで実装してみました

  errorHandler = {
    case rt: RuntimeException => {
      log.error("システムエラー発生 (RuntimeException) Path=:" + Option(request).fold("")(_.getRequestURI) +
        "\n  ErrorMessage=" + rt.getMessage, rt)
      status = HttpServletResponse.SC_BAD_REQUEST
      "Exception occured!"
    }

    case rt: Throwable => {
      log.error("システムエラー発生 (RuntimeException以外) :\n  ErrorMessage=" + rt.getMessage, rt)
      throw rt
    }
  }

  override def handle(req: HttpServletRequest, res: HttpServletResponse): Unit = {
    val path = req.getRequestURI
    val startMillis = System.currentTimeMillis()
    log.info( """[AccessLog] Path={}""", path)
    try {
      super.handle(req, res)
    } finally {
      val elapsedMillis = System.currentTimeMillis() - startMillis
      log.debug( """[EndLog]elapsedMillis={} ,Path={}""", elapsedMillis, path)
    }
  }

Scala用のIDE

5月 21st, 2013 Posted in scala

Scala用のIDEとして、「IntelliJ IDEA(ver 12.1.3)」「Scala IDE for Eclipse (Ver3.0)」の両方を使ってみましたが、 2013-5-21現在、まだ IntelliJ のほうが良いと感じました。

Eclipseのほうは、宣言に飛ぶのがいまいちで、私としてはこの点がちょっと許容できないです。
でも、数年前に比べたら、「Scala IDE for Eclipse」のほうがかなり追いついてきていると思います。

Scalatra のテスト

5月 21st, 2013 Posted in PC/システム開発, scala, Scalatra

Scalatraのテストを試してみました。
Scalatraの本家サイト”Scalatra guides” の Testing あたりに、 説明があるので、それをもとに試してみました。

2013-5-21時点では、Scalatest を使う方法と Specs2 を使う方法とが説明されています。

感想とメモ

  • APサーバを起動せずに、単体テストとして、サーブレットの動作確認が簡単にでき、お手軽。(Scalatest 、Specs2 両方とも)
    • org.scalatra.test.EmbeddedJettyContainer をいう trait をテストクラスが実装していて、 Jettyのコンテナ(のモックかな?)がサーブレットコンテナを提供してくれている模様。
    • 本家サイトのサンプルとほとんど変わりませんが、 書いてみたテストソースはyangiYAのGitHubのこのあたりにあります
  • 私の好みとしては、Scalatest でテストするタイプ。Specs2 のほうは、なんだか記述がまどろっこしいように感じてしまいます。 ( Specs2 のほうは、BDD(Behavior Driven Development , (振る舞い駆動)) で最近の流行だとは思います。 )
  • Scalatest のほうは、依存を追加しないとコンパイルできませんでした。
    project/build.scala に以下を追加してから、sbt で gen-ideaeclipse を実行しました。
"org.scalatra" %% "scalatra-scalatest" % ScalatraVersion % "test",
  • テストクラスが実装している org.scalatra.test.Client のおかげで、 テストクラスから、HTTPアクセス結果の「HTTPステータス」「HTTPレスポンス」などにアクセスできるようになっています。 単体テストとして、HTTPの結果を確認するテストコードを書けるようになっている思想のようだ

以上、簡単な感想でした。
画面でいちいち動作確認せずに、簡単な疎通レベルのテストが 単体テストとしてかけそうでいいなと思います。(Rubyist にとっては、当然なのかな)

Windows環境で Linux ぽく Scalatra をセットアップする

5月 12th, 2013 Posted in sbt, scala, Scalatra

Windows環境でシェルを動かす最もポピュラーな方法は Cygwin だとおもいますが、 Cygwinはインストールも大げさで自力でセットアップする部分が多いと思います。
「GitHub for Windows」を使えばシェルが動くようになり、 gitもお手軽に利用できるので「GitHub for Windows」をつかって、 scaratra を セットアップしてみたいと思います。

事前準備


事前にインストールしておくもの

  • JDK1.7(Java SE7)
  • GitHub for Windows
    • GitHub for Windows の以下を設定しておいてください
      1. toolsoptions... を選ぶ
      2. default shellGit Bash をクリックして選択状態にする
      3. UPDATE ボタンをクリックして保存

Windowsの環境変数を設定しておくもの

windowsの環境変数 PATH に設定するもの

  • c:\Users\<ユーザID>\bin
  • <Jdkインストールディレクトリ>\bin

windowsのシンボリックリンクを作成する

これをやっておかないと、あとの作業でつまづきます。
(Git Shellが提供するコマンドでは windowsのパスとUnixぽいパスをうまくだましてくれるのですが、
javaに渡す引数はそのまま渡されてしまうようなので、シンボリックリンクで何とかしようという対応策です)

  1. コマンドプロンプトを管理者として起動します
  2. mklink /D c:\c c:\ を実行します。(cというディレクトが、cドライブ直下となるようにする)

Git Shell でLinuxぽく作業する


Conscript をインストール

以下のコマンドを実行します

cd ~;
curl https://raw.github.com/n8han/conscript/master/setup.sh | sh

動作確認

  • cs --version コマンドを実行して、色々ダウンロードされたあと、ヴァージョンと、Usage が表示されれば成功

giter8 をインストール

以下のコマンドを実行します

cs n8han/giter8
  • これでセットアップしてくれるのですが、 bin/g8.bat が作られて、 そのままでは、Git Shell でg8コマンドが実行できないです。
    仕方ないので、bin/g8.batを参考に bin/g8 ファイルを作成します。 (以下をテキストエディタで作成)
#!/bin/sh
java ${CONSCRIPT_OPTS} -Xmx1G -jar "${HOME}/.conscript/sbt-launch.jar" "@file:///C:/Users/yanagawa.h/.conscript/n8han/giter8/g8/launchconfig" "$@"

動作確認

  • g8 コマンドを実行して、色々ダウンロードされたあと、ヴァージョンと、Usage が表示されれば成功

新しい scaratra プロジェクトを作成する

  • プロジェクトを作成するディレクトリを予め作成して、そのディレクトリに移動します。
    (たとえば以下のような感じで)
cd ~;
mkdir newPrj
cd newPrj
  • 以下を実行して新規プロジェクトを作成します
g8 scalatra/scalatra-sbt
  • 対話的に入力を求められるので、以下のような感じで入力していきます
organization [com.example]: jp.que.ti
package [com.example.app]: sample
name [My Scalatra Web App]: foo
scalatra_version [2.2.0]:
servlet_name [MyScalatraServlet]:
scala_version [2.10.0]: 2.10.1
version [0.1.0-SNAPSHOT]: 0.0.1-SNAPSHOT

Template applied in .\foo
  • name が作成されるディレクトリになります。 (参考:scaratra本家の説明 なんとなく直観で何を入れれば分かるかとは思いますが、詳しいことは本家サイトの説明を! )
  • これで、scaratra の新規プロジェクトが作成されました
  • 各種設定ファイルをバージョン管理システムに投入したくなければ、 このあたりでコミットするのが良いらしい。 ( 参考:3分でsbtとEclipseに対応したScalaプロジェクトを作る )

scaratra プロジェクトをビルドする

  • プロジェクトディレクトリで実行すれば完了
sbt

Webアプリケーションを起動する

container:start

動作確認

  • localhost:8080/ にアクセスして、 「Hello, world!」が表示されれば成功
  • ソースの変更をソースに反映させたい場合は、以下も実行
~ ;copy-resources;aux-compile
  • サーバーを止める場合は以下
container:stop

warファイルを作成する

  • sbt コマンド待ちの状態で、以下を実行します。(<プロジェクトディレクトリ>/target/scala-2.10 以下に作成されます )
package

Eclipse用の設定ファイルを作成する

  • plugins.sbt に sbteclipse-plugin の依存ライブラリを追記します
    cd <プロジェクト名> としてから (今回の例では cd foo) 以下を実行します。 ( 参考:本家のIDEサポートページ )
cat <<'EOF' >> project/plugins.sbt


addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.2.0")
EOF

  • 最新バージョンは sbteclipse のサイト(GitHub) で確認してください
  • sbt コマンド待ちの状態で、以下を実行します。( .project@ と.classpath` ファイルができる)
eclipse

IntelliJ IDEA用の設定ファイルを作成する

  • plugins.sbt に sbt-idea プラグインの依存ライブラリを追記します
    cd <プロジェクト名> としてから (今回の例では cd foo) 以下を実行します。 ( 参考:本家のIDEサポートページ )
cat <<'EOF' >> project/plugins.sbt


addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.4.0")
EOF

gen-idea


追記

最初はうまくいっていた、scalatra の新規プロジェクト作成ですが、
エラーが発生するようになったしまいました。
(原因解明できていません。いろいろ環境いじっていたので、何がきっかけかもよくわからず。。。)
Windowsでsbtを使っていると、なぜかハマることが多いような気がします。

$ g8 scalatra/scalatra-sbt
java.lang.IllegalArgumentException: Invalid wildcards +refs/pull/*/head:refs/remotes/origin/pr/*
        at org.eclipse.jgit.transport.RefSpec.(RefSpec.java:142)
        at org.eclipse.jgit.transport.RemoteConfig.(RemoteConfig.java:176)
        at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:151)
        at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:121)
        at giter8.Apply$class.clone(apply.scala:38)
        at giter8.Giter8.clone(giter8.scala:3)
        at giter8.Apply$class.inspect(apply.scala:21)
        at giter8.Giter8.inspect(giter8.scala:3)
        at giter8.Giter8.ghInspect(giter8.scala:48)
        at giter8.Giter8.run(giter8.scala:24)
        at giter8.Giter8.run(giter8.scala:12)
        at giter8.Giter8.run(giter8.scala:3)
        at xsbt.boot.Launch$.run(Launch.scala:55)
        at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45)
        at xsbt.boot.Launch$.launch(Launch.scala:69)
        at xsbt.boot.Launch$.apply(Launch.scala:16)
        at xsbt.boot.Boot$.runImpl(Boot.scala:31)
        at xsbt.boot.Boot$.main(Boot.scala:20)
        at xsbt.boot.Boot.main(Boot.scala)
Error during sbt execution: java.lang.IllegalArgumentException: Invalid wildcards +refs/pull/*/head:refs/remotes/origin/pr/*