読者です 読者をやめる 読者になる 読者になる

一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

ActiveRecordで引数があるscopeはクラスメソッドで定義しろ

tech rails

タイトルの通りで、ActiveRecordでscopeを使う場合、引数が必要であればクラスメソッドを使うことがRails Guideで推奨されている。 これを知ったのはかなり前のことで、それから自分は引数を受け取るscopeはクラスメソッドとして定義しています。

class Article < ActiveRecord::Base
  def self.created_before(time)
    where("created_at < ?", time)
  end
end

Using a class method is the preferred way to accept arguments for scopes. These methods will still be accessible on the association objects:

category.articles.created_before(time)

Active Record Query Interface — Ruby on Rails Guides

推奨されているだけであって、別にscopeを使いたければ使ってもいいのだけど、今となってはnamed_scopeで遅延評価が便利〜。とか無いので、自分の場合はscopeで定義するのは

scope :acitve, -> { where(state: 'active') }

のように、絞り込みの条件だけで使うようにしている。

Rails俺は気づかなかったシリーズ「改行コードをHTMLタグに置換」

rails tech

文字列の改行コードを
タグに置換したい!とかよくある事だったので、毎回helperに#brとかメソッドを定義していたけど、simple_formatというヘルパが既に定義されていた。

my_text = "Here is some basic text...\n...with a line break."

simple_format(my_text)
# => "<p>Here is some basic text...\n<br />...with a line break.</p>"

simple_format(my_text, {}, wrapper_tag: "div")
# => "<div>Here is some basic text...\n<br />...with a line break.</div>"

more_text = "We want to put a paragraph...\n\n...right there."

simple_format(more_text)
# => "<p>We want to put a paragraph...</p>\n\n<p>...right there.</p>"

simple_format("Look ma! A class!", class: 'description')
# => "<p class='description'>Look ma! A class!</p>"

simple_format("<blink>Unblinkable.</blink>")
# => "<p>Unblinkable.</p>"

simple_format("<blink>Blinkable!</blink> It's true.", {}, sanitize: false)
# => "<p><blink>Blinkable!</blink> It's true.</p>"

全然気づかなかったこれ。Railsが用意してるなら、使っていかないとだな。

デジタル握力計を購入

shopping

マクロス マクロス デジタルハンドグリップメーター MCZ-5041 931327

マクロス マクロス デジタルハンドグリップメーター MCZ-5041 931327

体重が増えないという理由で前腕のトレを全くしてこなかったんだけど、バランスを考えると前腕が細いままというのは変なのでついに鍛えることにした。 で、握力のMAXを測るためにこれを購入。 もっと高いかと思ったけど2000円代で買えるとは思ってなかった。安いですね。 機能としては19人分の測定記録を保存しておけるとかあるけど、特にいらないかなあ。

ちなみに自分のMAXは同世代の平均と同じぐらいの48kgでした。 これは弱いので大急ぎで鍛えないとだな。

筋トレ用にアンクルウェイト3kg購入

shopping muscle

トータルフィットネス ソフレソフレアンクルリストウエイト 3.0kg 2個セット STW-083

トータルフィットネス ソフレソフレアンクルリストウエイト 3.0kg 2個セット STW-083

今まで使っていたアンクルウェイト2kgが軽くなってきたので、3kgを購入。 アンクルウェイトって、ものによってはしばらく使っていると中身が漏れてしまう事があったので、レビューを色々読み込んで買ったのがこれ。

f:id:yatmsu:20150427002903j:plain

こんな感じ。評判通り丈夫な作りで、長く使えそうです。 レッグレイズが捗りそうだ。

US配列のキーボードを購入した

hardware

自分は客先常駐で働いている期間が長かった。常駐先ではキーボードの持ち込み等が禁止されている現場が多く、家ではUSキーボード職場ではJISキーボードという状況にストレスを感じ、JISキーボードに戻したという経緯があるんだけど、当分そんなスタイルで働くことは無さそうなのでUS配列キーボード購入に踏み切りました。で、色々とキーボードを使ってみた。まずはこれ。

Apple Wireless Keyboard (US) MC184LL/A

Apple Wireless Keyboard (US) MC184LL/A

元々これのJIS配列を使っていたのでスムーズに移行できたんだけど、どうもしっくりこない。あ、どうせなら使ったことがないCherry製MXスイッチを使っているやつにしようと思って以下を購入。

打鍵感はよかったけど、なんかダメ。どうやら「`~」「|」キーの位置とcontrolがあって欲しい場所にcaps lockがあるのがストレスになっている事に気づいた。US配列だと大抵のキーボードは同じ配列になっているのだ・・・・というわけで、

結局、HHKB Pro2 墨 を購入。以前にUS配列のキーボードを使っている時期があって、その時使っていたのがHHKB Liteだったので、こうなる予感はしてたけど、やっぱりHHKBなのか。実は今回、HHKBとかRealforce以外のキーボードでどうにかしようと思っていました。しかし結局はHHKBという結末に。

で、結局買うことになったHHKBの素晴らしいところは、

  • controlキーの位置
  • 「`~」「|」の位置
  • Realforceほどじゃないけど、キーストロークが軽い
  • Macに対応できる

などなど。自分にとってはこのぐらいかな。他にも以下を購入。 しかしHHKBはいいんだけれども、たまに勉強会などでMacBookのキーボードを触る時に「HHKBじゃないと打てないw」なんてならないよう、慣れておかないとだな。

HHKBに対応したカラーのキートップもっと欲しいですね。自分で作るしか無いかなぁ。

ホコリ対策。

RailsでCustom FormBuilderのSpecってみんなどう書いているんだろう

rspec rails tech test

RailsでFormBuilderを独自拡張した場合のSpecってあまり言及されていないよなと思う。

例えば、こんな感じで独自FormBuilderを書いたとする。

app/forms/application_form_builder.rb

するとSpecはこんな感じかなあと思っているのだけど・・・。

spec/forms/application_form_builder_spec.rb

なんかしっくりこない。 ActionView::Helpers::FormBuilderのコミットログを見ると、initializeメソッドの引数が変更になることもあるので、form_forを呼んでから書くというのがいいかなとか考えてる。 コードとしてはこんな感じ。 form_forから書いた方がClassを直で呼ぶより保守性が高いかな?

参考URL

ジェットウォッシャードルツを購入

shopping

前から気になっていたジェットウォッシャードルツを買いました!

迷ってたけど、据え置きタイプでなくて携帯タイプを買いました。

据え置きタイプと違って水はここに入れます。ここに入る水が少ないのが残念だった。

実際に使ってみて

自分の場合、普段からデンタルフロスを使っているので、よく言われる食べかす等が大量に取れたとかいう事は無かった。ただ、歯医者でブラッシングして貰った後のようなスッキリした感覚にはなるので、使っていきたいと思う。暫く使えば歯茎も下がってきそう。