faviconを取得したければ<link rel="icon" href="favicon.ico">を探すなどの正攻法がありますが、
色々と例外があるようなのでめんどくさい時はGoogleさんに任せてしまいましょう。

でとれます。

参考

https://stackoverflow.com/questions/5119041/how-can-i-get-a-web-sites-favicon


Ruby 2.3 まではBigdecimalへの変換を行う String#to_dが数字ではない文字列だった場合にString#to_iと同じ0.0を返す仕様だったのに2.4からは例外を吐くようになったようです。

Ruby 2.3

Ruby 2.4

対策

バグでした。gem update bigdecimal して、Gemfileを設定しましょう。
https://github.com/ruby/bigdecimal/issues/51


状態

こういうふうに書いたらtarget: '_blank'が効かなくて困った。

対策

simple_formataタグのtarget属性を取り除いてしまうので順番を入れ替えて、こう書くとOK。

参考

https://github.com/tenderlove/rails_autolink/issues/20#issuecomment-24818734


複数カラムの値が重複してるオブジェクトの情報を取るために

とするとこんな感じのidnilの配列が返ってくるので

な感じで適当に処理しましょう。

追記

こちらのほうがスッキリ書けますね。


File.write(filename, text)でファイルに書き込みできるの便利ですよね。

でも、File.appendは用意されてないのでFile.open(filename, 'a'){|f| f.write(text)}のように書かなきゃいけません。めんどくさい。

なのでめんどくさくないように定義しましょう。やっぱり既存クラスのメソッド拡張ができるRubyはいいですね。


Hashのキーをリネームしたかったけどデフォルトのメソッドはないようなので書いた

使い方

変更前のキーが存在しない時と、変更後のキーが存在する時は何もしない。
実際の入れ替え処理はself[new] = self.delete(old)だけで終わってます。

参考

http://kmckelvin.com/blog/2014/06/renaming-items-in-a-ruby-hash


rake task で長時間起動するため排他処理をしておかないと複数起動してしまう物があったので多重起動を禁止にしました。

でOK。呼び出し部分をメソッド化とかしたかったけど、上手くいかなかったのでとりあえずこれで。タスクのブロック引数としてtaskをちゃんと書いておかないとtask.nameが使えないので注意しましょう。

参考

ShellScript – Rakeタスク実行時、プロセス起動数を確認して排他制御する – Qiita


というように条件に合致しない時に returnを使って処理を抜けようとするとこんなエラーになります。

これは rake task がメソッドではなくブロックだから起きるので next を使ってやりましょう。それで抜けれます。

ちなみにnextは気持ち悪いんのでせめてbreakを使いたいと思ったんですが、それだと

になってしまいます。

参考

ruby – How do I return early from a rake task? – Stack Overflow


やり過ぎはダメだと言われても、やっぱり基底クラスの拡張は楽しい!

使い方

参考

Ruby: How to find and return a duplicate value in array? – Stack Overflow