Folioscope

Archive for 2015

  • Bashのバージョン管理ツールを作りました

    開発環境を容易に構築するために、 Node.jsだとnvm、Rubyだとrvmのような、 各言語のインタプリタをローカルにインストールツールが多くあります。Bashでもそれがしたかったので、作りました。 ueokande/bashvm Bash Version Manager github.com インストール まずGitHbuのプロジェクトを $HOME/.bashvm にクローンします. git clone https://github.com/ueokande/bashvm …

  • Rails脳でNode.jsに足を踏み込んだら、いろいろと思い出した

    技術的なことはあまり含みません。 Node.jsを始めましたが、プログラマとしてごく当たり前のことすら忘れかけていたことが分かったので、記事にしました。 Node.jsを始める Node.jsはじめました。 正確には、Electronを使って便利ツールを作りたくなったので、前から気になってたElectronを触ってみました。「Rails触ったことあるし、Node.jsも日本語の記事を斜め読みすれば一日で使えるだろう」と、謎の動機で始めました。 もうすでにこの時点でおかしいですね。Rails …

  • Bashでstdout/stderr/exit codeをキャプチャ

    Shell Script Advent Calendar 2015 7日目の記事です。BashのちょっとしたTipsです。Bashに限らないかも知れませんが、検証環境がBashしかありませんでした。 問題 Bashで $(command) と書くと、commandがサブシェルで実行され、 stdout(標準出力)を変数に格納することができます. hoge_value=$(echo 'hoge') # hoge_value => "hoge" ただ …

  • Travis CI がテストするブランチとPull Req. のビルドは異なる

    GitHubとTravis CIを連携すると、PRを立てたときデフォルトだとpushとPRそれぞれに対してCIが走る。 2つも要らないんじゃないかと思いつつ放置してたが、push側はパスしたのにPR側がFAILしたということがあった。 同じリビジョンに対してテストしてると思ってたが、どうやら違うみたい。 それぞれのTravis CIのログからソースコードを取得してる部分を見てみると、pushに対しては、 git clone --depth=50 --branch=my_topic_branch …

  • git stash -u が .gitignore のファイルを削除する

    git stash -u と bundler git stash には、untrackedなファイルをまとめて退避する、 -u | --include-untracked オプションがある。 新しくファイルを作ったがまだコミットしてない時に、git stash -u をよくする。 便利だ。 問題はbundlerを使うRubyプロジェクトで、git stash -u すると、bundle installが初めからインストールを始める 不便だ。 原因を調べてみると、.gitignore …

  • Bash用ユニットテストフレームワーク作りました

    Bash用テストフレームワークに、Batsやshunit2がありますが、イケてないなーと思ってたら、気づいたら自分で作ってました。 ueokande/bashtub Tiny unittest framework for Bash. github.com テストの結果はモダンなテストフレームワークのように、カラフルに表示します。 またFAIL時は、FAILしたテストの結果を表示します。 自分の Arch Linux 上の Bash 4.3.42 および、Travis CI 上で動作すること …

  • SNSのIDを、まるで髪でも切るように、ひと思いにバッサリと

    インターネット上のIDを変えた。 唐突ではなく、半年前から変えようかとずっと悩んでました。 自分はインターネットアイドルじゃないので、影響は少ないと思いますが、なかなか踏みきれませんでした。 なぜ変えたか 変えた理由は2つあります。 ひとつは、前のIDを音読するのが恥ずかしいからでした。 もうひとつの理由が、インターネット上でもう1人の自分を演出するのが難しくなってきたからです。 インターネット上のもう1人の自分とは SNSアカウントの存在意義は、大きく分けて2つあると僕は思っています。 現実 …

  • RailsプラグインのテストのためのテストRailsプロジェクト

    Railsのプラグインを開発するときには、テスト用のRailsプロジェクトが必要になりますね。 そこでテスト用のRailsプロジェクトをプロジェクトのサブディレクト以下に作成して、specからRailsアプリをテストできるようにします。 ディレクトリ構成は以下のとおりです。 / # project root ├── Gemfile ├── lib # プロジェクトの本体 └── spec ├── rails_app/ # Railsアプリのディレクトリをspec以下に ├── …

  • 複雑な設定ファイルを動的に生成

    はじめに 「巨大化した設定ファイルを階層的に書きたい...」だとか「実行する環境によって読み込む設定を動的に変えたい...」とか思ったことはありませんか?RubyのDSLのように自由度が高かったらすぐに実現できますが、設定ファイルはそうにはいきません。 しかし名前付きパイプを経由することで、言語問わず、自分が書いたプログラムの出力を、設定ファイルとして使うことができます。 SSHの例 ここでは例として、SSHの設定を対象にします。 まず、次のようなRubyプログラム …

  • チーム内情報共有ツールrendezvousがちょっとよさ気

    チーム内での情報共有ツールの和製Railsアプリ、rendezvousを少し使ってみましたという記事です。 tadyjp/rendezvous OSS service for team collaboration. github.com wikiなどは古典的な情報共有ツールとして使われていますが、使いやすいとは言い難いですし、モダンじゃないです。 だからesa.ioとかQiita:Teamとかがヒットしているんでしょうね。 とはいえ少しバグがあるのですが、そこはPull Req.チャンスだと思 …

Page 1 of 3 >