Rails

delayed_job の ワーカー を graceful にする

現バージョン v4.1.2 で、graceful にできないのは、 内部で依存している Daemon に渡すオプションがうまく渡せていないため。 delayed_job/command.rb at v4.1.2 · collectiveidea/delayed_job ここの部分。 そしてこの問題、 https://github.com/collectiv…

`wkhtmltopdf-binary` のバージョンに注意

最新の 0.12.3.1 だと、どうもサーバに中華フォントがインストールされている場合、IPAより中華フォントが優先されてしまう模様 一旦 0.9 系に戻すことで対応した

wicked_pdf が Command Error になる!

ローカル開発で突然PDF生成が死ぬようになった。 エラーはこんな感じ RuntimeError - Error: Failed to execute: ["/workspace/some_project/bundle_bin/wkhtmltopdf", "-q", "--margin-top", "0", "--margin-bottom", "0", "--margin-left", "0", "--margin…

newrelic が 422 エラーまで拾っているので400番台は拾わないようにしたい

自分たちでエラーハンドリング時に明示的に newrelic に情報を飛ばす方式 Sending New Relic handled errors | New Relic Documentation 飛ばさないエラーをymlファイルで個別にフィルタリングする方式 これはつらいw Ruby agent configuration | New Relic…

date_validator gem を使ったバリデーションにおいてオプションで Date.current を指定する際に気をつけること

date_validator に限らず validations のオプションの指定の仕方に注意が必要なやつ。 何が問題か Rails の validation のオプションで validates :birthday, date: {before_or_equal_to: Date.current} のような指定をしていて、 (要するに今日より未来の…

Rails にJSONでリクエストを投げた際に発生する JSON::ParserError をハンドリングする

何が問題か API として公開している Rails Server に対して、Invalid な JSON データを送信した場合、 parse error が発生した場合は、適切にリダイレクトやエラーメッセージの制御を行いたい。 だけど、挙動としては、Controller に到達する前の Rack Layer…

Railsのマイグレーションファイルで add_index する際、 using オプションまで指定する必要があるのか

インデックスの方法を明示的に指定したい場合のみ指定する。 Rails で using オプションを提供しているのはDBによって、インデックスの貼り方を指定できるためで、 MySQL の InnoDB を使っているのに using: :btree する意味は全く無い(してもしなくても結…

TIL

rake の補完が遅くてイライラするのを解消した 古いけどRails公式でこんな記事書いてた Riding Rails: Fast Rake Task Completion for Zsh で、これを zsh のプラギンにしたものをいれた unixorn/rake-completion.zshplugin: rake task tab completion plugi…

Redcarpet の辛いところ

TOC(Table Of Contents) を生成する機能があるのだけど、 見出しに日本語が含まれていると、完全にスルーされてしまう点。 ## これは概要です これを redcarpet のレンダリング処理にかませると・・・ <h2 name="">これは概要です</h2> といった具合。 ## This is overview だ…

204 No Content について

前回の記事 prmd の辛いところ で「手続きクラスをコールするだけのAPIの返り値は No Content で構わない」と書いたものの、 もし今後なんらかの JSON を返却する必要がでてきたら?と考えると、 最初から HTTP/1.1 200 OK としておくべきな気がしてきた。 R…

prmd の辛いところ

HTTP/1.1 204 No Content HTTP/1.1 200 OK + Response は empty みたいな表現ができない。 いや、正確にはカスタム erb テンプレートを全部自分で用意すればできるのだけど、 templates 全体をコピーして持ってくる必要があったりして、保守観点でやや懸念が…

prmd と jdoc で JSON Schema の解釈が微妙に違う問題

要するに JSON Schema を解釈して何かするライブラリによって方言が存在する状態になっている。 jdoc は 204 を表現できるけど、prmd は 202 となっている他、 status code の表現に使う場所が def has_response_body? @raw_link.media_type != "null" end #…

何回も調べてしまう attribute? の定義箇所

ここを見ると query methods と書かれているので、 https://github.com/rails/rails/blob/master/activerecord/lib/active_record/base.rb # == Attribute query methods # # In addition to the basic accessors, query methods are also automatically ava…

Rails の save, destroy は自動的に transaction でラップされる

save and destroy are automatically wrapped in a transaction Both save and destroy come wrapped in a transaction that ensures that whatever you do in validations or callbacks will happen under its protected cover. So you can use validations…

attribute= を定義してる場所

たぶんここ rails/write.rb at v4.2.4 · rails/rails

Rails でJSのライセンス表記が消える

Rails assets - keep license comments デフォルトだと ugilify は先頭のコメントを残す仕組みだし、オプションもあるらしい lautis/uglifier :output => { :ascii_only => true, # Escape non-ASCII characters :comments => :copyright, # Preserve commen…

久しぶりに Wercker で新しいRailsアプリのビルドを実行してみたら、ビルドが途中でこける問題が発生

こんなエラーがでて死んでた /cache/bundle-install/ruby/2.2.0/gems/execjs-2.5.2/lib/execjs/runtimes.rb:48:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::Ru…

Heroku + newrelic Availability monitoring が SYNTHETICS になってた

Herokuの無料プランって定期的にアクセスしないとサーバが休眠しちゃう。 なので、 だいたいスクリプト作って Heroku Scheduler に登録したり、AWSからPingさせたり、 newrelic の Availability monitoring を使って定期的にアクセスさせたりしていた。 今回…

bullet の挙動

N+1 検出用の bullet 便利なので必ずRailsプロジェクトには入れているのだけど、 たまにどっちやねん!となるケースがある。 @offices.each do |office| office.employees.size end みたいな処理の時、SQLとしては以下のようになるので、 SELECT COUNT(*) FR…

7/1 気になった記事

Page Specific Javascript in Rails | Brandon Hilkert Brandon さんはメールで更新通知をくれるし、内容も毎回参考になるものばかり 俺の最近のRailsのJS開発環境を教えてやる - Qiita browserify-rails良いんだけど、npm を使いたくないアレルギーがあるの…

6/29 気になった記事

ひっぱりアクションで直感的にタイマーを設定できる、使って楽しいリマインダアプリ「Gestimer」 RailsでつくったAPIのエラー処理 | 69log RailsでAPIを作るときにいちいちエラーのレスポンス作るのがだるい話 - 鳩舎 【及川卓也・清水亮・羽田野太巳・藤村…

Rails メモ

rails g migration create_xxxs hoge:integer{8} みたいなやつに null falseとか渡せないか 結論: できるのは Rails 4.2 以降で、しかもreferenesかbelongs_toの場合のみ コード:https://github.com/rails/rails/blob/v4.2.0/railties/lib/rails/generator…

Rails メモ

インスタンスをsaveすると、 https://github.com/rails/rails/blob/master/activerecord/lib/active_record/validations.rb#L58 で context がActiveModelのvalid? に渡る https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validat…

6/3 気になった記事

iPhone AC 番外レポート : スマホゲームニュース:iTunes ランキングへの工作・操作広告について 2015年5月の、これだけは押さえておきたいWeb関連の動き | Stocker.jp / diary waifu2x honoka 良さそう ソフトウェア開発で得た教訓22箇条 | 開発手法・プロ…

haml2slimについて

結構辛かった。 なんだかんだで3,4時間かかって変換とエラーつぶしが終わった感じかな? っていうのを会社のエンジニアブログに書いた。 haml2slim でハマった点とその解決方法 | マネーフォワード エンジニアブログ

3/24 気になった記事

オレ流 Pull Request 作業フロー - 詩と創作・思索のひろば 7年働いた時点での私の仕事の極意 - Kengo's blog ウェブパフォーマンスの基礎とこれから Rails, React, Browserify — Medium RailsとReactどうやって組み合わあせてるか事例 asvd/dragscroll 私は…

3/18 気になった記事

メジャーなプログラミング言語とそれらの役割を、素人でも分かるように教えてください。 | Knoh (ノウ) この記事は、Wunderlistのプロダクトデザイナーであるザンダー・ブレイドにより書かれた記事を日本語訳したものです。直訳ではなく一部日本語に編集を加…

突然 rails s しようとして warning: already initialized constant APP_PATH と言われるようになった

セキュリティFIXのOSXアップデートをかけた後の話。 OpenSSLにまた重度の欠陥、修正アップデートは3月19日にリリース:CodeZine これの対策かな?OpenSSL辺りでなにか死んでるっぽかったので、 Rubyを再インストールして解決。 nyangry:app(27m|implement_ho…

ActiveRecord Association がメモリに乗っているか確認する

ActiveRecord::Associations::AssociationProxyのloaded?メソッドを叩けばわかる。 class User < AR has_many :favorites end 4.1.9@2.1.5 (main)> User.first.favorites.loaded? SQL..................................... => false 4.1.9@2.1.5 (main)> lo…

2/20 気になった記事

不可視のFizzBuzz (Ruby) これは・・w ActiveRecord::Calculations#sum Enumerable#sum それでもRailsを選択する3つの理由 フレームワークとアプリケーションの境目 REACT TIPS AND BEST PRACTICES Vim に惚れるシーン(エディタ内で ちょっとした計算をす…