There's an echo in my head

日々のメモ。

gem

gitが自動解決できずに発生したTSVファイルのコンフリクトを可能な限り解決するfix_tsv_conflictを作った

gem

作った。 github.com ゲームのマスターデータをTSVファイルで管理していると、内容自体は衝突していないのに同時に同じ箇所に書き足したということで衝突してしまうことがある。あとはエディタの設定で末尾の空白スペークが消えてしまったとか。そういった単…

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

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

capistrano-rubotyというgemを書いた

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

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

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

GuardでEnterを打ったときに全プラグインが実行されないようにする

gem

$HOME/.guardrcもしくはGuardfileと同じディレクトリの.guardrcに次のように追記する。 Pry.commands.delete(/^$/) 全プラグインを実行するにはaやallを入力すればよい。

SingleXLSXというgemをリリースした

Ruby標準のCSVライブラリのように、一枚のシートだけからなるXLSXファイルを読み書きするためのもの。 a2ikm/single_xlsx http://rubygems.org/gems/single_xlsx 使い方 読み 配列の配列で取得する。 Name Age Einstein 76 Feynman 69 SingleXLSX.read("path…

natsortというgemを作った

自然順ソートするやつ。 require "natsort" %w(a 02 1).natsort #=> ["1", "02", "a"] PHPからRubyに移ってきた頃にこことか見ながら適当にmixinしてたものをちゃんとgemにしたんだけど、最近はnturallyとかあるのでそっちを使ったほうがよさそうな気もして…

bootstrap_form-datetimepickerというgemを作った

gem

http://rubygems.org/gems/bootstrap_form-datetimepicker Twitter Bootstrap 3.x、bootstrap_formと組み合わせてbootstrap-datetimepickerを使うときのヘルパを提供する。 たとえば、 <%= bootstrap_form_for(@item) do |f| %> <%= f.datetime_picker :avai…

capistrano-pendingというgemを作った

http://rubygems.org/gems/capistrano-pending Capistrano 2で使えていたdeploy:pendingというコミットの差分ログを表示するレシピが3になってから使えなくなっていたので、同じ動作をするものを作った。 Capistranoは3.2.0以上が必要。このバージョンからre…

ActiveDecoratorと組み合わせてJbuilderのpartial!を使うとnil?というキーができる

ActiveDecoratorと組み合わせてJbuilderのpartial!を使ったら、次のようにnil?というキーで空のハッシュができていた。 { "nil?": {}, // .jbuilderに書いた通りのキー } これは、partial!したときに裏で呼ばれるrenderメソッドの:localsオプションにjsonオ…

capistrano-ec2_taggedというgemのv0.1.0をリリースした

以前Capistranoでデプロイ対象のEC2インスタンスをタグで指定するものを書いているという記事で紹介した、capistrano-ec2_taggedというgemをリリースした。 capistrano-ec2_tagged (0.1.0): http://t.co/Bn9FSwBrgb Get ip addresses of AWS EC2 instances f…

Capistranoでデプロイ対象のEC2インスタンスをタグで指定するものを書いている

capistrano-ec2_taggedというgemを作った。まだrubygems.orgには上げていない。 これはCapistranoで指定タグのEC2インスタンスにデプロイのようなことをやるためのもので、次のようにして使う: # Gemfile gem "capistrano-ec2_tagged", require: false, gith…

aws_configというgemを作った

先日*1書きかけだった~/.aws/configをパースしてくれるものをとりあえず動くものにしてgemにした。 http://rubygems.org/gems/aws_config これを使えば次のようにaws-sdkを初期化できる。 require "aws-sdk" require "aws_config" AWS.config(AWSConfig.defa…

`bundle install --path vendor/bundle`したgemの入れなおし

いつのまにかbundle install GEMNAMEができなくなっていたので。 gem install GEMNAME -i vendor/bundle/ruby/1.9.1 ruby 2.0だとvendor/bundle/ruby/2.0.0になるみたい。 追記 できるのはbundle update GEMNAMEだった。

ok_gntpdというgemのバージョン0.0.5をリリースしました

しました。 ok_gntpd (0.0.5): is.gd/Pk8Yl2 An GNTPd which always return "OK".— RubyGemsさん (@rubygems) 2013年2月24日 リポジトリはgithub:a2ikm/ok_gntpdです。 これはGrowl Notification Transportation Protocol 1.0にしたがってOKを返すだけのサー…

rspecの初期化手順

とりあえずspecを回したいよね、というとき。 $ vim Gemfile $ bundle install $ rbenv rehash $ rspec --init $ vim spec/spec_helper $ vim Rakefile Gemfile gem "rspec" spec/spec_helper 冒頭に以下を追記して、$LOAD_PATHの追加(この場合はlib/)と適…

pebbles-suddenly_death gemを入れてみた

gem

RustでHello, worldしようと思ったけどなかなかビルドが終わらないので、待ってる合間にリリースされたpebbles-suddenly_death gemで遊んでみた。 $ gem install pebbles-suddenly_death メソッドを呼び出すと、処理を行った後に1/100の確率で例外を投げると…

ok_gntpd.gemを作った

常にOKを返すGNTPサーバok_gntpd.gemを作った。 内容はほぼMacで(たぶん*nix系であれば)動く、とても簡単なGNTPサーバ のコピペ。ソースはGitHubに上げてある。 GNTPdってしてるけど、まだdaemonにできない。

serialize-rails gemでJSONをDBに格納する

ActiveRecordのserializeはYAMLにしか対応していないけど、serialize-railsを使うとJSONやXML、RubyのMarshalも保存できるようになる。 # Gemfile source 'http://rubygems.org' gem 'rails', '3.2.9' # 3.0.0 以上が必要 gem 'serialize-rails' # app/model…

bundlerでgemを作る

不完全ながらメモ。 雛形を作る $ bundler gem hello こうするとhelloディレクトリが作られて、その中にひな形のファイル(hello.gemspecとかlibとかが作られる)。 hello.gemspecを変更する TODOと書かれているgem.description、gem.summaryは変更しないとr…

Railsアプリケーションにサブ機能を追加するchili

chiliはchankoのようなもの。 chankoは、大規模レガシープロダクトをレガシーコードのままベータ機能をサービス壊さずにぶっこむのに特化してるけど、ある程度ダーティさがある。chiliは、新規サービスにRails的な思想を守ったまま綺麗にベータ機能を追加す…

GitHubのWikiにサイドバーを作る

GitHubの採用しているWikiエンジンgollumの機能を使うと、プロジェクトのWikiにサイドバーを設定することができる。 $ git clone git@github.com:foo/bar.wiki.git $ cd bar.wiki $ vim _Sidebar.md $ git add _Sidebar.md $ git push origin master 自分で…

gemのディレクトリに移動する

$ cd $(dirname `gem which active_record`)

schema_plusで外部キー制約をかける

schema_plusを使うとcreate_tableやadd_columnでカラムを定義するときに:referencesオプションにテーブル名を渡すだけで、外部キー制約を手軽にかけることができる。 create_table :posts do |t| t.integer :category_id, references: :categories end 個々…

rabl、配列を作るときはcollectionよりもnodeを使ったほうが楽なこともある

{ "user": { "id": 1, "name": "John Smith", "posts": [ { "id": 1, "title": "Hitchin' Ride" ] } } というJSONを作りたいとき、"posts"が配列だからcollectionでも使えばいいのかなと思ったけど、どうにもうまくいかなかった。結局nodeを使うのが楽だった…

rablで各エンドポイントに共通のノードをルートに生やす

【追記】とても微妙。要検証 言葉で説明しづらいので、例を示す。APIが次のようなJSONを返すとする。 { "note": { "text": "補足情報" }, "user": { "id": ユーザのID, "name": "ユーザー名" } } ここで "note"はAPIの各エンドポイントで共通のノードなので…

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