ンンンパ

ふとしです

移転しました

Ruby

新着順 人気順

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

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

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

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

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

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

一年越しでpaizaコーディングスキルチェックの「うなぎを蒲焼きにしたくない」を倒せたので嬉しくなって日記に書く。

トイレ最高! 去年、6回ぐらい挑戦して駄目だったけど、今日ふと思いついて何度か失格して、トイレで座ってる時に突然わかって書いたらうまくいきました。 トイレ最高! 日記です 結局今回も何度か失格はしてるんですけど、個人的に引っかかってたのをなんと…

Authlogicに関するメモ

認証機能再発明するべからずは有名な鉄則ですが、まるで知らないままというのもマズイので実装を読むことでお茶を濁していきたい。 saltやSCryptの運用、persistence_tokenの更新などで比較的安全にいけるのでは。 パスワード salt Authlogic::Random.friend…

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…

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

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

SASS 記法でマップの書き方がわからなくて困った。

SCSS ではこうですが、SASS では怒られる。 $black: ( name: 'black', light: #666, dark: #000 ) SASS 記法では 1 行でおねがいしますということでした。 $black: (name: 'black', light: #666, dark: #000) ちまたでは SCSS の記事ばかりですが {} 書きた…

rails-erdでRails Engineベースのアプリケーション(Spree、Solidusなど)のER図を得る。

たっぷりとしたコードを含むRails Engineは上から読んでいくにはつらいものです。 いくつかのgemに分割されているSpreeのようなアプリケーションを読むにはインストールして起動しつつ、その上で読んでいくのが楽ですが、手がかりがないのはつらい。というこ…

Access-Control-Allow-Originが設定されてないWeb APIを叩くために中継サーバー書いた。

大げさなタイトルみがありますがただのRailsです。 github.com うすうす実装なのでさがせばあるんでしょうけど、人が書いたもの使いたくない場合ってあるじゃないですか。 起動 $ TARGET=http://you-want-to-ajax.server.com ALLOW=http://your-local-js.ser…

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

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

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

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

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

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

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 のハンドシェイクでしく…

Authlogic の Session.create! を失敗したときに Session のインスタンスを例外オブジェクトに持たせたかった。

要は ActiveRecord::RecordInvalid#record のように使いたいんでモンキーパッチで module Authlogic module Session module Existence class SessionInvalidError < ::StandardError def initialize(session) @record = session super end def record @recor…

Rails の FormBuilder をテストしようと思ったら new にわたす template をどうすればいいかわからず困った

view 内の form_for から instantiate_builder を経てこういう形で呼びだされます。 builder.new(object_name, object, self, options) self is 何?かというと view から呼びだされるのでもちろん view ですが、FormBuilder 対象のテストなので view なんて…

Ruby 外から Web アクセスする何か (Capybara とか、cli とか) を RSpec でテストするときのアクセス先をモックする

mmmpa.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmpa.net のテストをこの方法で行いました。 本編 たとえば、Capybara は各種ブラウザを介するアクセスのため、webmock が効かず、別の gem が必要なのは有名です。 https://github.com/o…

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

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

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

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

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

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

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

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

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

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

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

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

Rails で mountable なのを作ってる時、test/dummy 以下の FactoryGirl が二重に呼び出されてしまいアレだった。

ネット上で見つけたコードを馬鹿正直にコピペしていたら死んだし俺が悪かったという話です。 いつもの感じで rails plugin new new_plugin --mountable cd new_plugin rails g rspec:install したままではプラグイン用に生成される factories にパスが通って…

Squeel 導入したら ActiveRecord#select で死んだ

User.select(:first_name, :last_name) みたいなことをしておった状態に squeel をいれたら ArgumentError (wrong number of arguments (2 for 0..1)) と言われました。 コードをみたら引数一個しか取らない感じになってる。他はだいたい*argsなのに、なんで…

うまれてはじめて gem をつくって公開しました。

Tanemaki といいます mmmpa/tanemakigithub.com README.md に書いてあるとおり、seed.rb で CSV に使って大量の初期値を楽にぶちこむためのやつです。業務で 10 keys ほどもつ Hash を Hoge.create に投げてるのをみて、これは 3 度ぐらい seed.rb を読むと…

Viewのテンプレート内で下から上に挿入するgem書いた。

Kaizan mmmpa/kaizangithub.com 改ざんです。self.output_buffer.gsub!するとCould not concatenate to the buffer because it is not html safe.って怒られたりHTML素通しだったりするので、そこら辺の対処用。 こんなの何に使うんだっていうと、いま作って…

プログラミング問題とその回答に「ん?」と思うところがあったのでメモる

問題はこれ。 【Rubyプログラミング問題】値札分割メソッド(split_price)を作成してください - Qiitaqiita.com 自分の回答はこれ def split_price(price_text) unit = (price = price_text.to_s).slice!(/[^0-90-9]*\z/) price == '' ? [unit, ''] : [pric…

今朝のメールフォームをHerokuで動くように変更した。

http://sinatra-liaison.herokuapp.com/ github.com データベースへの保持をしなくなったので、Herokuにかんして特につまずくことはなかった。 CGIとSinatra間でのちょっとした違いでちょっと時間がかかった。 CGIとSinatraでのパラメーターの扱いのちがい …

Herokuを使う予定のない人もTwelve-Factorは読んでおいて損がない。「プロフェッショナルのための実践Heroku入門」読んだ。

The Twelve-Factor AppはHerokuが提唱する、モダンなアプリケーション開発において守らなければならないドグマみたいなもんです。 なおネットで無料で和訳ページがあります。 12factor.net 見よう見まねでやってた実際的な開発手法がカリッとまとまっている…