There's an echo in my head

日々のメモ。

Travis CIでbundlerのキャッシュが効いていなかった

会社で開発しているRailsアプリケーションをTravis CIで回しているんだけど、bundlerでインストールされるgemのキャッシュが効いておらずログにこんな出力が出ていた。 store build cache $ bundle clean Cleaning all the gems on your system is dangerous…

capistrano-pending v0.2.0をリリースした

https://rubygems.org/gems/capistrano-pending/versions/0.2.0 Capistranoのプラグイン方式がv3.7から大きく変わって:scm変数が非推奨になり、さらにv4.0からは消されるらしく、その対応のため。といってもいただいたPRの挙動を確認しただけだけど。 github…

launchdで動かしてるmemcachedのログを取る

homebrewでインストールしてるのでlaunchdに読ませてるplistは~/Library/LaunchAgents/homebrew.mxcl.memcached.plistにある。 下記にコメントしたあたりをよしなに記載する。 <plist version="1.0"> <dict> <key>Label…</key></dict></plist>

`ps -ef | grep [f]oo`というやつ

調べては忘れるのでメモ。 grep [f]ooって結局grep fooと同じなのになんだこれはと思ってたけど、psはgrep自身のプロセスも返してくる(ことがある)ので、 ps -ef | grep foo だと foo を探しているうちに grep foo というプロセス自身にマッチしてしまう p…

innobackupex --move-backでファイルの移動

xtrabackupからファイルを復元するとき、ネットの記事とかPerconaの記事とかを見ると--copy-backを目にすることが多いんだけど、コピーするほどのディスク領域などない…!という場合には--move-backを使えばいい。 innobackupex --move-back /path/to/BACKUP…

capistrano-rubotyというgemを書いた

capistranoでrubotyをデプロイするのをよしなに助けてくれるgemを書いた。 github.com デーモン化とPIDファイルの書き出しに対応したruboty v1.3.0が必要になるので要注意。

rubotyをデーモンとして動かす

Herokuで動かしてたりdockerでデプロイしてたりするとあまり旨味はないのかもしれないけど、普通にcapistranoでデプロイして動かしたいようなときもあるのでやってみた。 下記のスクリプトを例えばyour_ruboty/lib/daemonize.rbみたいな場所に置いておく。 #…

routes.rbでワイルドカードに引っ掛けたパスを別のサブドメインにリダイレクトする

http://aerial.st/archive/...に来たアクセスを一律にhttp://archive.aerial.st/archive/...にリダイレクトするようにした。 Rails.application.routes.draw do # (snip) get "archive/*path", to: redirect(subdomain: "archive", path: "/archive/%{path}"…

acts_like?でduck typing

1年ぐらい前に社内ブログにメモしてた内容をまんま転載。 はて、これはduck typingなのか? 概要 Object#acts_like?を使うとクラスの異なるオブジェクトが同じ振る舞いをするかどうかの判定が手軽にできるようになる。 具体例 ActiveSupportではTimeとDateTi…

knife-soloでControlMasterが煩わしかったのでなんとかした

knife-solo v0.5.0から 最初はrootでknife solo bootstrap my.host.jp -x rootする 続けてそのときに作ったユーザsome_userでknife solo cook my.host.jp -x some_userする としたときにエラーが発生するようになった。 原因はknife-solo v0.5.0でSSHのContr…

パイプした内容をopenコマンドの引数に渡すopipeというコマンドを作った

github.com grepして見つけたファイルをパイプしてそのままAtomで開きたいと思って作ってみた。 $ git grep -l Neko | opipe -a Atom でもよくよく考えてみたら $ atom $(git grep -l Neko) でいけるわよね…。 追記 xargsさん— 高度に発達した技術的な問題 (…

りんごジャムの作り方

用意するもの りんご 2個 グラニュー糖 80cc 作り方 りんごの皮を剥いて八等分して芯をとり、さらに5mm弱の間隔で刻む。 鍋にりんごとグラニュー糖を入れて弱〜中火で煮ながら果肉を潰していく。 あらかた潰して若干の粘り気が出てきてもうめんどくせえなっ…

OS X 10.11 El Capitanでnokogiriをインストールする

$ brew install libxml2 libxslt libiconv $ gem install nokogiri -- --use-system-libraries bundlerでインストールするときのためにも設定しておく。 $ bundle config build.nokogiri --use-system-libraries なお前提として、公式サイトのインストール方…

OS X 10.11 El Capitanでeventmachineをインストールする

OS XがOpenSSLの共有ライブラリを含めなくなった(のかな?)ために、homebrew等でインストールしてその場所をオプションで指定する必要があった。 github.com $ gem install eventmachine -- --with-cppflags=-I$(brew --prefix openssl)/include bundlerで…

pipeの途中でエラーが起きたタイミングでエラーを返す

パイプを繋げたときの返り値は最後のコマンドの返り値になる。 例えば stat = system "a | b |c" としたとき、途中でaやbがエラーになっても返り値statはfalseにならずcの返り値であるtrueになる。 cがエラーに成った時にはfalseになる。*1 これだとパイプの…

El CapitanでSIMBLを有効にする

osx

How to Install SafariStand on El Capitanから勝手に抜粋。 1 Macを再起動し、「ジャーン!」となったらCommand+Rをあるていど押し続けてリカバリモードで起動する 一度押しただけでは切り替わらなかった タイミングの判定がわりと細かい 2 メニューからTer…

手動でRailsのビューをレンダリングする

バッチで生成しておきたいとかそういうときに。 class FooController < AbstractController::Base include AbstractController::Rendering include AbstractController::Translation include AbstractController::AssetPaths include ActionView::Layouts se…

Railsのジェネレータを自作する

よく忘れるので。細かい話は他の記事にお任せして、テンプレートからファイルを作れるところまで。 0. こんなのを作りたいとかんがえる 抽象クラスFigureのサブクラスをapp/modelsに作るようなジェネレータがほしい。 クラス名は引数で指定したい こんな感じ…

Capistranoで今処理しようとしているhostの属するroleを判定する

host.rolesを叩くと、role(のSymbol)のSetが返ってくる。 task :foo do on release_roles :all do |host| host.roles #=> #<Set: {:web, :app, :db}> end end git_strategyの中でもcontextを通して同じことができる。 set :git_strategy, MyGitStrategy module MyGitStrategy def r</set:>…

レプリケーションのパスワードはmaster.infoに書かれている

MySQLでレプリケーションする際にCHANGE MASTER TOで設定したパスワードは、データディレクトリ下のmaster.infoファイルに書かれている。

一定時間だけS3のオブジェクトにアクセスできるURLを生成する

aws

プライベートなバケットなんだけど、特定のURLを知ってる人だけがダウンロードするのを許可したいというときに使うやつ。 aws-sdk-rubyのv1だとAWS::S3Object#url_forで生成できたらしいんだけど、v2ではやり方が変わってるとのことなので試しにv2でやってみ…

Mac OSXでMariaDBをソースからビルドする

Mac OSX 10.9.5 MavericksでMariaDB 10.0.13をビルドした。 wget http://archive.mariadb.org//mariadb-10.0.13/source/mariadb-10.0.13.tar.gz tar zxf mariadb-10.0.13.tar.gz cd mariadb -10.0.13 cmake . \ -DCMAKE_INSTALL_PREFIX=$HOME/opt/mariadb/10…

mysqlのスローログの出力をオンラインで停止、再開する

停止: mysql> SET GLOBAL slow_query_log = 0; 再開: mysql> SET GLOBAL slow_query_log = 1; 現状: mysql> show variables like "slow_query_%"; mysqldumpしたデータをインポートしていたらことごとくスローログに積もり積もっていって慌てて停止したとい…

/dev/twitterでTwitterと通信するようなのを作る

cat /dev/twitterで最新のツイートを取得したり、echo ねむい > /dev/twitterでツイートしたりするのが欲しくなったので試してみてる。 ロードマップとしては次のような感じ。 Linuxカーネルモジュールのキャラクタデバイスとして/dev/twitterを作る HTTPで…

tipsはQiitaに書こう、そうしよう

http://qiita.com/ikm あまり使ってこなかったけど、編集リクエストあるしシンタックスハイライトも見慣れてるしでそっちのほうが便利かと思った次第。 こっちはなんか妄想とかそういうやつに使おう。

chromedriverをインストールしてくれるchromedriver_helperをGoで書いた

go

a2ikm/chromedriver_helper やることはおおまかに2つで、 $ chromedriver_helper installで最新のバージョンを~/.chromedriver-helper/chromedriverにインストールする chromedriver_helper.BinaryPath()でインストールされているバイナリのパスを返す 詳し…

polymorphic_pathを使って定型のリンクを手軽に作る

管理画面にTwitter Bootstrapを使ってボタンっぽいリンクを作っていると、 link_to t(:new), new_user_path, class: "btn btn-success" みたいなコードがビューにあふれてきてつらい。 なので、 new_link_to User としたら同じリンクを生成するようなヘルパ…

scaffoldするときのコントローラのテンプレートをカスタマイズする

[小ネタ]RailsのScaffoldテンプレートを上書きするススメの勝手に追補的な記事。 コントローラのテンプレートはrailties/lib/rails/generators/rails/scaffold_controller/templates/controller.rbあたりから#{Rails.root}/lib/templates/rails/scaffold_con…

素のオブジェクトをfields_forに使う

例えばモデル的にGraph has_many Entityだけど、GraphはActiveRecordを使う一方でEntityには素のオブジェクトを使いたい場合。データストアが異なるとか。 class Graph < ActiveRecord::Base after_save :save_entities def entities @entities ||= [] # TOD…

reactのチュートリアルを触ってみた

ここ最近ほとんどフロントエンドを触ってなかったのでFacebookのreactのチュートリアルを試しに触ってみた。 a2ikm/react-tutorial コンポーネントってそういうことかー JSX、最初は違和感あったけど、記述量が減るし慣れれば気にならなくなる 規模が大きく…

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。