Ruby

Swift で早期リターン

早期リターンを使うと、コードが読みやすくなります。 例えば、 nil をとりうる値 hoge があって、 nil のときは処理を終了させたいというメソッドの場合、Ruby ではこんな感じになります。 # 早期リターンなし def test if hoge # hoge が nil でないときの…

Rails のルーティング

ルーティングを追加するとき、毎回調べているので少しずつまとめていこうかと思います。 等価な書き方が色々あるので絶対これというわけではありません。 scope URI Pattern にのみ追加されます。 Rails.application.routes.draw do scope :user do resource…

モデルの属性に自作のバリデーションを追加する

モデルの属性のバリデーションをしたいときに、バリデーションヘルパーの既存バリデーションだけでは足りないことがあると思います。 そのため、Rails ではバリデーションを自作することができます。 その一つの方法としてバリデーションメソッドがあります…

Rails の Time と DateTime

日時を扱うクラスには DateTime と Time の二つがあり、どちらを使えば良いのかを知ることもなく過ごしてきてしまっていたのですが、ざっくりと知ることができたのでメモ。 基本的には Time ( ActiveSupport::TimeWithZone ) を使う Rails 環境においては、…

ローカル環境の Ruboty を slack で動かす

ローカル環境の Ruboty を slack で動かしてみたときのメモです。 Ruboty の使い方は、先日投稿したエントリにざっくり書いてあります。 komaji504.hateblo.jp slack team を用意する 作っていない場合はこちらから。 Slack: Be less busy slack 用アダプタ…

Ruboty を使ってみた

Ruboty 作者の r7kamura さんのエントリを読んで使ってみました。 r7kamura.hatenablog.com 動かしてみる gem install ruboty ruboty --generate cd ruboty bundle install ここまでで Ruboty が動作する状態になります。 bundle exec ruboty を実行すること…

RSpec の expect_any_instance_of でハマった

class Test def say_hoge hoge1 = Hoge.new hoge2 = Hoge.new hoge1.say hoge2.say end end class Hoge def say puts 'hoge' end end こんな感じのクラスがあったとして、 Test#say_hoge で Hoge インスタンスが Hoge#say を1回ずつ実行していることをテスト…

Rubyのブロックをメソッド間で受け渡す

ブロックとは ブロックについてはこちらの記事が分かりやすかったです。 qiita.com ブロックを引数にとるメソッドの定義 定義方法は、ブロックを引数にとることを明示する or しないの2通りがあります。 メソッドを呼び出したときの実行結果は同じです。 明…

Factory Girl で関連を定義する

1対1の関連を持つ users テーブルと profiles テーブルがあり、User モデルと Profile モデルがそれぞれ以下のように定義されているとします。 users テーブル field type id int プライマリキー name string email string profiles テーブル field type id …