(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Ruby

Mutation Testing with Ruby

最近ちょっと興味をもったテスト手法(技法?)があって、ちょこっとだけ調べたので書いてみます。 まえがき テストを書いていて何を指標にテスト書いたらいいか分からない、ということがありませんか? うん?コードカバレッジ 100% を目指してテストを書く?ええ…

Effective Ruby 読んだ

最高に面白かった。軽く紹介したいと思う。結論から書くと掛け値なしに良い本でした。 Rails 書く人は Railser と揶揄されがちですが、 Rails を普段書いてるけど Ruby はよく分からんという人にもオススメです(無粋なツッコミする人がいるので少し補足する…

Ruby の定数は奇妙だ

仕事で今まで奇跡的に動いていたコードが突然動かなくなるバグに遭遇して調べていたら、 Ruby の定数に関する仕様のせいだということが判明した。 class Hoge X = 'X' end という風に定義されている定数があるのを class Fuga puts X # 本来なら動かない end…

ネストしたハッシュのキーを String から Symbol へと変更する

class Hash def nested_symbolize_keys self.reduce({}) do |memo, (k, v)| v = v.nested_symbolize_keys if v.is_a?(Hash) memo[k.to_sym] = v memo end end end 例外とか考えてない愚直なコード。ちょっと今日こんなのほしいなって思ったから、思いつきで…

Slack で動く bot を作る(特定の文字列に反応するようにする)

Slack で動く bot を作る(とりあえず発言だけ) - (define -ayalog '()) ということで今回もサクッと。Slack で bot 作ってという無茶ぶりを某 naoiwata-san に言われたので、とりあえず API とか調べてたら思いの外簡単に出来そうだったのでやってみたという…

Padrino で Jbuilder を使う

なんか今ふたつ方法があるぽくて、以下に並べてみる。 anthonator/tilt-jbuilder · GitHub andrewjanssen/padrino-jbuilder · GitHub tilt-jbuilder といわれる gem と padrino-jbuilder というまんまな名前の gem 、このふたつが今 Sinatra/Padrino でアプ…

Rails で Helper Method を Controller で使いたい

って思ったんだけど、これが少し事情が複雑で単純に Helper を Controller に include するのはあまりよろしくないらしく出来れば AbstractController で定義されている helper を使う方が良いらしい。helper (AbstractController::Helpers::ClassMethods) -…

destructuring-bind ってステキですね

例えば Ruby ではこういうことが出来る。 a, b = [1, 2] a+b #=> 3 便利ですね。そして Clojure ではこういうことが出来る。 (def m {:a 1, :b 2, :c 3}) (let [{a :a, c :c} m] (+ a c)) ;=> 4 (def v [100, 200, 300]) (let [{a 0, b 2} v] (+ a b)) ;=> 4…

腐ってやがる…

はい、半年前に書いたコードをちょいちょい弄ってるんですが、テストコードが腐ってました。いやー、当時 FactoryGirl を触ろうとしていて使い方分からないし、色々分からないし諦めてたんですが、改めて fixture 使ってるコード読むとなんか辛い。あと、直…

pismo という gem を使って Web Page から meta 情報を取得する

リンクを入力したら、タイトルを取得するって「はてなブログ」とかでよくある感じですが、それがまんま欲しかったので調べたら、まぁ gem あるよねってことで。 pismo っていうんですがかなりさくっと使えたので好感触でした*1。 peterc/pismo · GitHub usag…

RSpecでパラメタライズドテストを書く

書く必要あんのかって感じもありつつ、なんとなくこう書きたいから書いた!っていう感じ。例えばこんな感じ。 subject { FactoryGirl.build(:people, params) } 0.step(100, 10) do |n| context "#{n}の場合" do let(:params) { {age: n} } it '正常に更新出…

既に認証機能が作られているアプリで後からActiveAdminを入れるときにやったこと

gregbell/active_admin · GitHub なんとなーく、 ActiveAdmin あたりが賑やかでいいなぁと思ったので入れたかったんだけど、現在開発中のアプリでは既に認証の機能を実装してあるから*1、そのまま入れちゃうと Devise あたりと競合してしまってしんどいので…

テストの書き方とアプリとしてどうあるべきか

require 'spec_helper' describe Group do describe '#add_member' do subject { group.add_member member } context 'ユーザーを追加した場合' do let(:group) { FactoryGirl.build(:group) } let(:member) { FactoryGirl.build(:member) } it 'グループの…

rbenvでRuby環境下に置かれたgemを全削除する

そんな夢のようなスクリプトを書いてくれている人がいた。最高。 Uninstall all rbenv gems #!/usr/bin/env bash uninstall() { list=`gem list --no-versions` for gem in $list; do gem uninstall $gem -aIx done gem list gem install bundler } #rbenv v…

FactoryGirlって便利ですね

って今日思ったよ。 頑張ってテスト書いてるよ!

Rubyで作る奇妙なプログラミング言語を読んだ

Rubyで作る奇妙なプログラミング言語 ?ヘンな言語のつくりかた?作者: 原悠出版社/メーカー: マイナビ発売日: 2014/01/16メディア: Kindle版この商品を含むブログを見るほい。読みました。Esoteric Languageを題材にした珍しい本ですね。前々からずっと読んで…

rspecのlet

let(:user) { FactoryGirl.create(:user) } って書いてたら全然テスト通ってくれなくて、カナシミだったんだけど下のように感嘆符を付けるだけでテストが通るようになった。 let!(:user) { FactoryGirl.create(:user) } letは必要なときにしか評価されないか…

yamlでハードタブ使っちゃダメなの忘れてた…

(): found a tab character that violates indentation while scanning a plain scalar at line 815 column 15 って言われて気付く、ハードタブダメだったね…って。

middlemanがスゴイ。

Middleman: Hand-crafted frontend development ちょっと静的な*1webサイトを作ろうと思ったときに、これ使うの最高に良いと思う。いいなって思った機能が2つあるんだけど*2 ファイルの変更を監視してコンパイルしてくれる 自動的にリロードしてくれる(LiveR…

Railsで開発していて困ること

Searchableっていう名前のmoduleが定義されていて、まさか自作のmoduleだなんて思わなくてすっげー紛らわしかった。なんかいかにもそんなクラス名のクラスがRailsならありそうだなーって思うじゃん><2014-02-25 18:25:34 via webなんというか、Javaのimpor…

書き初め

今年、一番最初に書いたプログラムです。 Rubyでユーザーストリーム取得して、自分に対する空リプに対して問答無用で「くけっ」と返すプログラムです(ぇ # -*- coding: utf-8 -*- require 'twitter' Process.daemon config = { :consumer_key => "YOUR_CONS…

Railsで最近ハマったこと?

たまになのでブログ書く。 最近、Railsで開発してみてハマったこと ここ1週間で2回OSを入れなおすというミラクルが起こり、なんというか、それに伴って当然のことながら環境を2回も作りなおすはめになり、そのたびに地味にハマったので(というか、以前ハマっ…

静的なWEBサイトを開発(?)するときに楽をする為に

やったこと Jadeで書いたソースコードを保存したら自動でコンパイルして、自動で生成したHTMLを適当なブラウザで開く&自動でコミットする。 普通にHTML書いているだけなら、上書きする度にCtrl+rをブラウザで押して更新すればいいけど、テンプレートエンジン…

福岡Ruby会議でLTしてきたよ><

12月1日快晴(たぶん) 地域Ruby会議ということで、福岡Ruby会議01に参加して、しかもLTまでしてきました。 僕はLispの国(くまもと)からの参加でいつも通り新幹線で、朝から移動でしたよっと。 開始前のできごと… GuildCafe Costaで行われた福岡Ruby会議01。で…