2017-01-01から1年間の記事一覧

【rubyで作るruby】を読んで

本 rubyで作るruby まとめ 1. 我々が書くrubyのコードは木構造にパースされる 2. 木構造のデータが解釈され実行される 3. この本は木構造のデータの実行部分についてプログラムを実際に作りながら進めていくスタイル 4. 浅くしか入り込めてないが個人的にパ…

Rubyで末尾再帰最適化

背景 普段のrailsコーディングでは末尾再帰最適化なんて まあ間違いなく使う機会がない。 けど訳あって末尾再帰最適化しなきゃ stack level too deep (SystemStackError) になるプログラム動かしたかった. 結論 このページが完璧にまとまってた.obelisk.hate…

Nginxとrailsで死んだ話

状況 nginxでrailsにproxyしている。 死んだ理由 nginxでrequest hostをrailsに伝えてなかった.どうゆうことかというとprotect_from_forgeryで以下のmethodが 呼び出されている. nginxを以下のように設定しないと request.origin と request.base_url が異な…

railsでresponsive化と思ってやめた話

既存のprojectをresponsive化したかった 理由は普通にhtml2つあるのが管理コスト高すぎる問題だったため. formとか内容合わせるのめんどかったりした. なんでできなかったか 前提としてあったのはデザインを変えないまま レスポンシブ化しようとしていた。レ…

railsで意外なところでsql injectionした話

発生箇所 Product.all.order(params[:sort]).limit(5)active record relationの order methodで発生。 ユーザーからの入力を直接orderに渡していたため。 params[:sort] = ‘updated_at; delete from *.*;’ みたいにユーザーが入力渡すと、データ飛ぶ。 もち…

cssの設計でbemから一歩進んだ話

前置き bemでクラス設計してたけど、色々負を感じ 自分で勝手にアレンジしてた。 その話を他のエンジニアにしたら、それこれだよって言われてそうゆうのがあるって知った話 http://apbcss.com bemから進んだ話ってタイトルですけど、個人的にbemより優れてる…

rails newのフローを自動化

成果物 https://gist.github.com/nishisuke/a0dc642c36c3110cc0265b0f0212e6e5 背景 YAGNI(You ain't gonna need it)という言葉がある。 一般的に動いてるシステムにおいて、 後からコードを消す事はとても難しい。 システム全てが影響範囲である可能性があ…

rubyでstrategyパターン実例

strategy パターンとは デザインパターンの一つ。 class(もの)に対して戦略を外部から渡してやる(dependency injection的な)考え方 例 class Engine def boost p "普通に走行" end end class SuperEngine def boost p 'めっちゃ速く走行' end end class Car …

RubyGemsに自作gemを公開する

流れ install bundler bundlerで雛形作成 gem実装 RubyGems にアップ install bundler gem install bundler 雛形作成 bundler gem gem_name 実装 lib/hoge.rb module Hoge class << self def say_hoge p "hoge__" end end end あとはhoge.gemspaecのtodoを書…

Rspecを高速化した話

Rspecの実行時間を90min -> 20 minにした方法 1~2ヶ月前の事で当時は記事化するつもりなかったので、 ところどころ抽象度が高い記事になります。 きっかけ 待てない てかrspec 90minって冷静に異常だよね?から思い立った。 流れ 1. 遅いの特定 2. 原因追求 …

MacにRubyをインストール

Homebrew, rbenvでRubyをインストールする最低限の手順です。 流れは以下です。 Homebrew で rbenv をインストール rbenv で ruby をインストール rbenvは主にrubyのversion管理をしてくれるものです. Homebrewはインストール済みとします. Homebrew Install…