日記はScrapboxに移動しました。

  • Rails プロジェクトセットアップスクリプト svk 版

    , ,

    最近 svkrails を使い始め、よくわからないままにあれこれ試行錯誤している感じです。とりあえず、「ξ*゜ー゜)ξ { 遅レス。 – Railsプロジェクト セットアップ スクリプト」を svk 用に書のき替えて、以下のようなセットアップスクリプトを作ってみたりしました。

    $ svk_rails app_name depot_path [rails_opt]

    みたいな感じで実行します。最後の rails_opt ってのは rails コマンドにわたすオプション。オプションが最後にくるとかなんかかっこわるい感じだけど、あんまり使わなさそうなので問題ないかな、とか思ったり。。。ただし、-r で Ruby のパスを指定するとこだけ、デフォルトの /usr/bin/ruby18 ってのを、スクリプト内に決め打ちで -r ‘/usr/bin/env ruby‘ にしてあります。
    app_name が myapp, depot_path が //mirror/myrepos だとすると、流れ的には

    1. //mirror/myrepos/myapp/{trunk, brahches, tags} を作成
    2. //mirror/myrepos/myapp/trunk から //myapp を作成
    3. //myapp から、カレントディレクトリ直下の myapp に co
    4. rails コマンドでファイル生成
    5. 生成されたファイルを追加して ci
    6. log/*.log, config/database.yml に ignore を propset
    7. 以上を、//mirror/myrepos/myapp/trunk に push

    てな感じ。svk とかいまだに全然よくわかってないので、変なことしてる雰囲気が満載。まぁ、今後、適当にアプリ作りながら改善していこうかなってな所存。
    svk_rails

    #!/bin/sh
    RAILS='ruby /usr/bin/rails'
    RUBY_PATH='/usr/bin/env ruby'
    APP_NAME=$1
    DEPOT=$2/$APP_NAME
    shift 2
    RAILS_OPT=$@
    svk mkdir $DEPOT          -m "create a depot for $APP_NAME"
    svk mkdir $DEPOT/trunk    -m "create a trunk directory for $APP_NAME"
    svk mkdir $DEPOT/branches -m "create a blanches directory for $APP_NAME"
    svk mkdir $DEPOT/tags     -m "create a tags directory for $APP_NAME"
    svk cp    $DEPOT/trunk //$APP_NAME -m "create a local branch for $APP_NAME"
    svk co //$APP_NAME $APP_NAME
    $RAILS -r "$RUBY_PATH" $RAILS_OPT $APP_NAME
    cd $APP_NAME
    svk add *
    svk ci -m "import auto-generated files for $APP_NAME into $DEPOT"
    svk up
    svk rm log/*
    svk ci -m "delete logfiles for $APP_NAME"
    svk up
    svk propset svn:ignore "*.log" log
    svk ci -m "ignore log/*.log for $APP_NAME"
    svk up
    svk mv config/database.yml config/database.tmp.yml
    svk ci -m 'move database.yml for $APP_NAME'
    svk up
    svk propset svn:ignore "database.yml" config
    svk ci -m 'ignore database.yml for $APP_NAME'
    svk up
    cp config/database.tmp.yml config/database.yml
    svk rm config/database.tmp.yml
    svk ci -m 'delete database.tmp.yml for $APP_NAME'
    svk up
    svk propset svn:ignore "*" tmp/cache/
    svk propset svn:ignore "*" tmp/sessions/
    svk propset svn:ignore "*" tmp/sockets/
    svk ci -m "ignore tmp/*/* for $APP_NAME"
    svk up
    svk push --verbatim
    cd ../
  • C-x C-s 押下時に Firefox をリロード

    ,

    最速インターフェース研究会 :: AutoHotkeyを使ってFirefoxをリロードするだけのexeファイルを作ってみたあたりから当たりから盛り上がった AutoHotkey を用いて、エディタ保存時にブラウザを自動リロードするネタに、刺客登場。

    なんかもうこんなのでいい気がしてきた。
    (中略)
    「:w[Enter]」が押されたときにFirefoxをリロード。
    こんなのVim以外ではほとんど押さないので。押したとしてもFirefoxがリロードされるだけなのでほとんど弊害はないし。起動しておくだけでいいのでお手軽。ターミナルで別サーバのファイルを編集しててももちろんOK。

    その発想はなかったわ。。。
    つわけでさっそくパクらせていただきたく存じ申しあげたわけだが、Emacs ラー(別名「えまくさ」)としては C-x C-s 押下時に Firefox をリロードしたいところ。まぁ、上記エントリで公開されているコードをてけとうに改造すればいいだろとか思いきや、AutoHotkey がはじめてなせいもあって、ちとめんどかった。。

    1. 当然、複数のキーストロークを指定しなきゃならない(C-x C-s)
    2. XKeymacs でもって C-x C-s を windows のほぼ全体的に C-s の変わりの保存ショートカットにしちゃってるものだから、システム上の C-x C-s を殺さず、かつ AutoHotkey でも活かす必要がある
    3. あーでも、実際 CSS ファイルを編集するのって、Xkeymacs を無効にした putty 上のリモートサーバの Emacs なんだけど。。。

    ってな上記の要求を全て満たすべく ホットキー割り当ての指定方法を見ながら、あれこれいじったり。
    そんなわけで、こんな感じになりました。C-x C-s 押下時に、Xkeymacs の保存ショートカットを殺さずにシステムに通しつつ、Firefox をリロードします。以下をてけとうなファイル名で保存し、AutoHotkey でコンパイルして生成された実行ファイルを、CSS なりなんなりを書いている時だけ実行しておくといい感じ。当然、Emacs に限らず、単に C-x C-s を押下した時に Firefox がリロードされます。ウザいこともあり得るけど、必要な時だけ AutoHotkey アプリを起動すればいいので、あんまり問題ないかなとも思ったり。

    Transform, CtrlS, Chr, 19
    ~^x::
    Input, InputChar, C I L1 M T1 V, {Esc}, %CtrlS%
    if ErrorLevel = Match
    if InputChar = %CtrlS%
    SetTitleMatchMode, 2
    WinGet, FF,, Mozilla Firefox
    ControlSend,, {F5}, ahk_id %FF%
    return

    実際のところは、Emacs 使用時は auto-save-buffers を使用しているため、C-x C-s を押すことはないのだけど、まぁ、CSS/JS/HTML 編集時は意識的に押すようにしようかな、と。Firefox にフォーカスあてた上でリロードかけるよりは速いし。