Make Healthy Life

最近はSQLばっかり書いてるWebエンジニアの日記です。

rspec+Capybaraでビューのテストを書くときのデバッグ

rspec+Capybaraでテストを書く時、pry-debuggerを使用してる。
binding.pryを記述したところでpryコンソールが立ち上がることは以前書いた。

pry-debuggerがとても便利 - Make Healthy Life

pryコンソールが立ち上がったところでどうやってデバッグしたらいいのか、結構迷ったのでまとめておく。

まず何か変数(val)の中身を見たい時。とにかく変数名を打ち込めば中身が見れる。

[1] pry(..)> val


あとhave_content()メソッドでビューのテストもしている場合、テストでは画面が出てこないので、変数の中身がわかるだけではデバッグしようがない。
そんなときは今見ているURLを確認。なんらかの原因で違うURLを見てる場合もあるしね。

[1] pry(..)> current_url

URLは問題ないとなれば、実際にHTMLをチェック。

[1] pry(..)> page.html

か、もしくはテキストだけをチェックもできる。

[1] pry(..)> page.text

画面が見れないからどうやってデバッグしたらいいんだ〜!って思ってたけど、これでなんとかなった。
画面キャプチャを画像ファイルにして保存してくれるプラグインもあるみたいだけど、インストールで挫折した。。でもこのコマンドがあれば十分!!

pry-debuggerがとても便利

ruby on railsを勉強してる。
とりあえずrailsチュートリアル(Ruby on Rails チュートリアル:実例を使って Rails を学ぼう)をやってるのだけど、良いデバッグ方法を友人から教わった。

pry-byebugを使うと、binding.pryと記述した時点でpryが立ち上がる。
あとは変数の中身をみたり、いろいろ解析できる。

pryはirbの代わりとなるコンソール環境で、色付けされてたり、いろいろとirbよりいいらしい。
pryのインストールは以下を参考に。
Rubyistよ、irbを捨ててPryを使おう - TIM Labs

pry-byebugはGemfileにgemを記載。developmentだけじゃなくてtestにも使える。
deivid-rodriguez/pry-byebug · GitHub


rspec+Capybaraでテストしてて、エラーが出たんだけど理由がわからず、変数の中身を調べたかったときに重宝した。
ただCapybaraだと注意点があって、it "--" do -- end句の中でないと変数がセットされていないこと。
つまり以下コードだと、pryを起動したタイミングで変数がnilになる。

describe "signin" do
    let(:user) { FactoryGirl.create(:user) }
    before { visit signin_path(user) }
    
    binding.pry

    it { should have_link('Sign out') }
    it { should have_title(user.name) }    
end

$userを調べたいのであれば、it句の中にbiding.pryを記述する必要がある。

describe "signin" do
    let(:user) { FactoryGirl.create(:user) }
    before { visit signin_path(user) }
    
    it 'test' do
      binding.pry
    end

    it { should have_link('Sign out') }
    it { should have_title(user.name) }    
end

こんなことで2時間もはまってしまった。

グリーンスムージーをはじめた

転職して気持ちと時間に余裕ができたので、グリーンスムージーを飲みはじめることにした。
きっかけは旅行でハワイにいって、スムージーを作るジューサーのCMをみてからだけど。
帰ってから調べてみたら、YouTubeにアップされてた。

The NutriBullet Show - YouTube

3週間ぐらい続けてるけど、明らかに肌がすべすべしだした。体感的に疲れにくくなった気がする。

ブレンダー選び

旅行から帰ってきて、とにかくグリーンスムージー飲みたい!って思ったけど、ジューサーをどれにするか迷った。
調べてみると数千円〜10万円近くするものまである。
グリーンスムージーミキサーはココに注意して選ぼう | グリーンスムージーミキサーの人気商品

値段が高くなるほどパワーも強くなり、ちゃんと細かくくだけるので美味しくなるらしい。
こーゆー選択肢をみせられるとどうしても最上級モデルがほしくなるんだけど、さすがに10万円はだせない。2万円くらいのビタントニオで我慢しよ〜かなと思ってたけど、よく調べると最初に海外CMで見たNutriBulletProは同じ2万円で最上級のバイタミックスと同じパワー(900W)がでるらしい。
アメリカAmazonで探すと売ってたので、早速購入。
Magic Bullet NutriBullet Pro 900 Series Blender/Mixer System: Electric Personal Size Blenders: Amazon.com

ちなみにこれを日本amazonで購入すると海外送料含めても日本の方が1万円余計にかかる。英語できて良かった。

アメリカAmazonはとても優秀で、$40程度の送料で3〜4営業日で届けてくれる。アメリカからなのに!アメイジングジェフベソス!!

日々のレシピ

NutriBulletにはたくさんのガイドブックがついてて、こんなの飲んだら良いよ〜というのがあるけど、とりあえずガン無視でグリーンスムージーばっかり飲んでる。
この本を参考に。

からだの中から若返るグリーンスムージー健康法

からだの中から若返るグリーンスムージー健康法

葉もの:フルーツ:ナッツ = 5 : 4.5 : 0.5くらいの比率で、好きなものを入れて飲んでる。
葉ものはほうれん草や小松菜、水菜、セロリとかいろいろ試してる。小松菜と水菜は結構辛みがあって飲みづらい。
あとクセの強い葉ものは割合5にするときつい。バジルとか。飲みきれなかった。ちょっと入れるくらいがちょうどいいね。
ナッツは最初いれてなかったけど、いれるとまろやかになる。油分を足した感じになって、とても飲みやすい。

これからもいろいろ試していきたい。

Ruby on Rails モデル肥大化対策

開発してるシステムのモデルがもうカオス状態になってる。

どうカオスなのかというと以下のような状態。

  • 1つのモデルにとにかく何でも関連するメソッドを詰め込んでいる
  • メソッドの役割が単一でないため、コードを読んでも挙動が把握しづらい
  • メソッドの役割が単一でないため、修正したときの影響が広すぎる

とにかく変更したいときにとてもつらい設計になっている。どこに影響を及ぼすのかを把握するためにfind grepした結果をすべて目で洗い出さないといけない。

 

勉強中のRuby on Railsではどうやってモデル肥大化を防ぐか調べてみた。

 

この記事がとても参考になる。

肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳) | TechRacho

 

常に考えなくてはならない原則は「単一責任の原則」だそうだ。1つのモデルに対して1つの責任をもたせるようにする。

これをどうやって仕事で使っているシステムに実現するかは以下の記事が参考になる。

Rubyist Magazine - Ruby on Rails: The Bad Parts

 

機能のまとまりをモジュールとして分割して、インクルードしてやるのがいいみたい。

確かにこれならどこにどんな機能がまとまっているのかがわかるし、テストもしやすそう。懸念はコードがさらに分散することになるため、コードを追うのが大変そう。でもモジュールの名前と機能がしっかりと対応していればモジュールの中身をみなくても問題なくなるのかな。

 

いろいろ調べたけど、まだ腹落ちしていない気はする。実装してみて、修正してみないと本当の意味で効果を実感できないかも。実際に同じような状況で、リファクタリングして保守性を上げたソースコードを見てみたいな~

英語を話す

Github drinkupというイベントに行ってきた。

Tokyo Drinkup January 2014 · GitHub

 

半分くらいが外国の方で、1人で乗り込んでしまった自分はかなりアウェー感満載。

でもビール飲めばみんな友達。結構いろんな人と話せた。

驚いたのは意外と英語を喋れたこと。

 

僕はTOEIC930点を取得している。でもTOEIC930点を取得したとき、『あ、TOEICって点数良くても喋れないんだ。。。』とへこんだのを覚えてる。

TOEICはリスニングとリーディングしかやらないので、スピーキングは全く別の能力なのだと思い知った。

 

そこからTOEICの勉強(930点→満点をめざす)はやめて、スピーキングを始めた。

英語上達完全マップを参考に、中学程度の英文をひたすら読むといいらしいのでやってみた。・・が続かない!!飽きる。。。

 

ということで別の方法で。飛びついたのがこれ。

英語が自由に話せるようになるスピーキング教材|YouCanSpeak(YCS)

で、今はなんとかレベル2の15まで進んでる状況。レベル1が終わるころから英語が自然と出てくる感覚がわかるようになった。

これは本当にすごいと思う。多分レベル4まで真面目にやれば普通に会話できるのではないだろうか。

なんかステマみたいになってしまった。

 

Github drinkupでは、僕はアメリカの小学生くらいのコミュニケーション力はあるのではないかと思った。

勉強しててよかったと心から実感した瞬間だった。

CakePHP 2.4にBoostCake(Twitter Bootsrtapプラグイン)を入れた

先週末にAPI使って簡単なアプリを作ろうと思ったら、基本的な部分の実装に意外と手間取った。

CakePHPの導入やら、ユーザー認証やら、デザインやら。

 

この辺はもうテンプレートにしてしまって1つリポジトリを置いておけばいいのでは?と思い、作ってる。

 

まずは流行り?のComposerを使ってCakePHPをインストール。

以下記事を参考にさせて頂きました。

Composerを使ってCakePHP2.4.1とDebugKitをインストールするまで - higan96技術メモ

 

ユーザー認証とかは後回しにしておいて、見た目がやっぱりよくないので、Twitter Bootstrapを導入することにした。

これは専用のプラグインがあってComposerでインストールできる。

BoostCake - Bootstrap Plugin for CakePHP

Composer.jsonに以下コードを追記してupdateするだけ。楽だ~!

{
	"require": {
		"slywalker/boost_cake": "*"
	}
}

 

あとはPlugin/BoostCake/View/Layouts/bootstrap3.ctpをView/Layouts/default.ctpにコピーすれば何となく出来上がり。

 

cssで指定するだけで結構いい感じのデザインになる!

 

 

 

 

 

WiMAX 2+ の速度測定してみた(WiMAXとの比較)

前回の記事(WiMAX 2+を申し込んだ )で申し込んでた、WiMAX 2+が届いた!

さっそくセットアップして速度計測。

大体8.0Mbpsって感じ。WiMAXだと運が良くて4.0Mbpsだから、大体2倍くらい早くなったかな?

体感的にもyum installも早いし、webページの表示も早い。

 

端末代2,800円だけなら良い買い物をした気分!

 

都内で使うのならありなのかもしれない。