ンンンパ

ふとしです

移転しました

Ruby

ActiveModel の errors.messages に入ってるエラーメッセージが、どの validation でひっかかったかテストで知りたい。

という思いがずっと前からあって下記エントリーのような対応をしていました。 テストが通るたびにレッドライト!グリーンライト!ってさけんでるんだけど RSpec でわからないことがある。 - うさぎ飢餓 Rails 触りはじめのエントリーでとても懐かしい。 それ…

Rails の form_for でエラー出たときに、エラーはちゃんとエラーが出た項目の下に出したい。

エラーは各フォームの近くに表示したいけど form_for の中身の記述を増やしたくはないのでカスタムフォームビルダーを作成する。 Rails Guide でやり方読む フォームヘルパー — Rails ガイド Ruby on Rails ガイド どうやってカスタムフォームビルダーをつく…

Rails Engine を RSpec でアレしてたら controller spec で No route matches が出まくって困った

rails plugin new --mountable からつくる Rails プラグイン作成を試しています。 自動テストにはいつも RSpec を使っているので使えるように調整して model spec は問題なく終了したのですが、controller spec でひっかかりました。 generate にまかせた sp…

Capybara と Phantomjs で ChatWork をアレしようと思ったら Capybara::Poltergeist::StatusFailError とかいわれてなにも取得できなくて困った。

取得できる HTML は <html><head></head><body></body></html> こんなんだし、status_code は nil だしで完全に困っていたが debug: true オプションをつけると題名のようなエラーが出ていたのでグーグル先生に聞くとこれ。 Ruby: Phantom.js blocked on specific site? SSL のハンドシェイクでしく…

カスタム Validator をつくったら自動的に translate されなかったので困った。

ネット先生いわくこのようにエラーメッセージを追加しなさいとのことだったが、直接 errors に << すると ActiveModel::Errors#normalize_message を通らないのでメッセージが未消化のまま出てくる事態となる。 class StrNumValidator < ActiveModel::EachVa…

Ruby on Rails の Routes を Controller スペックで使える感じに内部で取得する。

ログイン時、非ログイン時の振り分けなんかは全自動総当たりテストしたいので。 routes = Rails.application.routes.routes.map do |route| path = route.path.spec.to_s.gsub(/\(\.:format\)/, "") params = path.scan(/:([a-zA-Z_]+)/).flatten.collect(&:…

Capybara で feature から 2 つ以上の scenario を回すと Capybara::Poltergeist::DeadClient で死ぬ

用もないのに Poltergeist などで全ページスクリーンショット撮るのが半ば趣味です。 さて今日も今日とて楽しくフィーチャスペックを書いておりましたところ死にました。 Failure/Error: auth_manager(page, kill: true) Capybara::Poltergeist::DeadClient:…

validates いじってないのに valid? で false になるようになった

作業をすすめていると突然テストが通らなくなって、valid? が false 返すのはいいけど errors みてもなにも message ないし本当にどうしようかと思いました。save(validate: false) でその場をしのいて、結局あとで一つずつコメントアウトしたりして、これ。…

弊社、アジャイルっぽいことをしたいらしい。

テスト一枚も書かない文化の弊社でそれやると、サイクル毎に臨死体験が楽しめると思う。 おれも頭数で聴衆として参加した Ruby ビジネスフォーラムで、講師 matz さんがアジャイル推ししていたのをきいて思いついてしまったのだろうか。同時に、テストあって…

滅裂というツイッタークライアントをつくりました。

http://m2r2.ore-omae.com/ ツイートの単語を入れかえて文意が変わる感じのやつです。 Twitter の連係保持とかアカウント確認テストの試しように作りました。 ツイートの単語を入れかえて文意が変わる感じのやつです。 が 単語のやつを入れかえてツイートが…

Ruby on Rails で Stylus をつかう。あと、nib も。

Stylus は簡潔な記法で CSS をナニできるアレです。HTML コーディングが主だった前職でもウィンド~ズ + Sublime Text で使ってました。いまも使ってますが。 http://learnboost.github.io/stylus/ 最近の Rails では stylus_rails じゃなくて stylus を使い…

Rails でアクションの再利用してたら render :hoge and return で DoubleRenderError に足つっこんだ。

任意の view を描画してアクションを中断するには render :hoge and return などとするわけですが、これは render がtrueを返すことを期待したandの使用法です。今回は new -> create の流れのなかでエラーを出すために使っていたのですが、エラー表示や hid…

RSpec 3 にアップデートするにあたっての章が「RSpec による Rails テスト入門」に追加されたらしいので早速ためした。

読むと RSpec 2.99 beta2 を導入すると RSpec 3 でなくなったりする API を使ってたりすると警告を出してくれるらしいので早速ためしました。 うまれてはじめてテスト書き出いてから 1 週間とか 2 週間なので、変更するポイントはほとんどなくて、指示に従っ…

Rails で MeCab と KEN_ALL.CSV などをもちいて住所の抽出を試みた。

http://13.ore-omae.com こんな感じの精度が悪いアレです。 形態素解析(なんて言葉も把握してなかったときですけど)を試みようとして、これあきらかに個人では無理やんとあきらめていたところ MeCab というオープンソース形態素解析エンジンを発見したので…

今日もテストを書いてて Capybara に殺されそうになってる。

コントローラーのテストの章が終わったのでフィーチャテストに進んだのですが、しょっぱなから Capybara 内でおこなった Model#create が visit 先のビューに反映されない事例に遭遇して死にそうになった。 Capybara でもコントローラーもビューも全部 Rails…

テストが通るたびにレッドライト!グリーンライト!ってさけんでるんだけど RSpec でわからないことがある。

Ruby を全面に押し出してる会社に転職してはや半年ほど、Ruby というか Rails 力が足りないので他の職務をこなしておりますが、そればっかりやってもいられないということで最近は空き時間をみて Rails をさわっています。 いちおう慣れてきた感じはするので…

Rails の Rake からツイートさせるようにしました。

http://13.ore-omae.com の追加内容を http://twitter.com/mmmpa にツイートします。 必要な gem は twitter だけなので Gemfile に書いて gem 'twitter' あとは twitter.rake かなにかを用意して引数でツイ~トできるようにする。 namespace :twitter do ta…

定期的に動くなにかを Rails でつくりました。

http://13.ore-omae.com twitter でロムしてる優れ技術者のなかには定期的に動く何かを飼っている人がおり、ワナビーとしてはやはり形から真似しなければなるまいと、とりあえずスクレイパーのたぐいをつくることにしました。 定期実行には Whenever Rails …

ファイルアップロード機能をつけた。

先日 Rails で作成したブログにファイルアップロード機能をつけた。 おもに画像をアップロードして記事内に貼りつけることを目的としているので、画像の情報を取得する必要があった。 https://github.com/sdsykes/fastimage が使えるっぽいので使った。 Fast…

Rails の練習に最小限の機能しかもたないブログをつくりました。

http://ore-omae.com/ 転職先ではいまのところ Actionscript と Javascript を書く生活ですが、他のチームでは Rails が猛威をふるっており Javascript との連携でもこの先使えるし使えるようにならないとねってことで自習をすすめています。 ということで以…

Ubuntu + rbenv + ruby-build 用コピペ

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-b…

POST データが切り捨てられちゃうのでなんでかなーと思ったら Ruby とか Rails の制限じゃなくてブラウザごとの違いだった。

Safari 系だと 1 value につき 524288 文字っぽい。DOM で編集した長いテキストを HTML のまま保存しようとしたらひっかかった。value をいくつか用意したら問題なく送信できましたけど、可変長なデータを扱うしなんだかなー。コマッタナー。追記 : hidden …

Ruby の GServer で message-body がうまくとれなかった

勉強のために Ruby でブログでもつくってみるやんけ、とまず Gserver で簡易サーバーをたてて POST を取得しようとしたらいきなりつまずいた。 require 'gserver' class HttpServer < GServer def initialize(port=8080, host="127.0.0.1", *args) super(por…