blog

紫陽花

Rails

unicorn-worker-killerを導入

Railsのプロダクトでサーバーのメモリが足りなくなる問題が頻発しました。 構成はnginx + unicorn unicornのワーカープロセスは、起動後ユーザーからのリクエストを処理し、再起動されることがありません。 長期間の運用を続けるとメモリが徐々に食いつぶさ…

AmazonCloudFrontでRailsのAssets周りにある静的ファイルをCDN配信する

AmazonCloudFrontでRailsのAssets周りにある静的ファイルをCDN配信する RailsでアプリのassetsをCloudFront経由で配信した時の話 問題と解決 Railsのアクションキャッシュ導入時、Webサーバ内からassetsの配信を行っていた。 その場合、Deploy時にassets pre…

Rails ActionCacheを導入する

Webアプリケーションのパフォーマンス改善として、RailsのActionCacheを導入しました。 Railsのキャッシュに関する概要はRailsGuidesが一番わかりやすかったです。 Rails のキャッシュ: 概要 「キャッシュ(caching)」とは、リクエスト・レスポンスのサイク…

Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った

Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った Railsで画像アップロードを行うGemにCarrierWaveがあります。 そのCarrierWaveのextension的位置付けの圧縮機能を簡単に実装するGemを作りました。 carrierwave-optimize_image Ruby Gems …

Rails ActiveRecordで値が変更する前後の値を取得する

ActiveRecordで値が変更する前後の値を取得することがあったのでメモ Rails 2.1あたりからActiveRecordの変更前後の値を取得する機能が備わっている。 method 意味 changed? 変更されているかどうか changed 変更されているattribute名の配列 changeds 変更…

Railsの画像遅延ロードにはlayzr.jsがいいぞ

Webサービスのパフォーマンスを向上させるために表示する画像の遅延ロードを実現したい! そんなときにオススメなlayzr.jsを紹介します。筆者は実際にプロダクトに実装しました。 画像の遅延ロードをすることで得することは? 読み込み速度が速くなったり通…

Rails select2でajax処理を行い1万件以上でもスムーズに動くようにする。

jQueryのライブラリでいい感じに選択機能を実装するselect2があります。 今回はselect2でajax処理を行う方法を紹介します。 本家サイト Select2 - The jQuery replacement for select boxes本家サイトのExamplesにもあるようにselect2にajax処理でデータを取…

Rails kaminariにモンキーパッチをあててmetaタグをいい感じにする。

Railsでページネーションを実装するライブラリ、kaminariに対してモンキーパッチを当てました。 人生初のモンキーパッチでもあったのでやったことをまとめておこうと思います。 なにをやるのか? 環境は、Ruby 2.3.0 Rails 5.0.0 kaminari 0.17.0今回モンキ…

Rails5 に Draper 導入した際にエラーが出た

Rails5を使ってて出たエラーをメモRails5が正式にリリースされてもうすぐ2ヶ月ほど経とうとしています。Ruby on Rails最近新しく作り始めたアプリケーションにRails5を採用して開発を始めました。 そこで開発を効率よく進めていくために色々とGemを導入して…

Rails 複数のカラムに 一意制約 (ユニーク)を設ける

Rails ActiveRecordで複数のカラムに対して一意制約を設ける。複合一意制約複数のカラムの組み合わせがユニークであってほしい場面に遭遇しました。例えば、Siteテーブル Keywordテーブルが存在する時、Keywordテーブルにある site_id と name そして date …

Rails 自分なりのapp以下のディレクトリ構成

RubyのアプリケーションフレームワークRailsは便利なもので、コマンド1つでアプリケーション開発を行うために必要な環境を一瞬で構築してくれます。さらにRailsは開発を快適にかつ、素早く行っていけるように設計されており、近年のWebスタートアップ系の企…

Rails URLにランダムな文字列を使いたい時に良い感じにやってくれるやつ

RailsでURLにランダムな文字列を使いたい時、他の人はどんな感じで実装しているんだろうかとおもってググってみると良い感じのgemを作っちゃってる人がいたので使わせてもらいました。詳細はこれ。 qiita.com記事が書かれたのが1年前と古いのでちゃんと動く…

Capistrano3 でsudo passwordを要求された時に入力できるようにするGemに助けられた。

題名のとおりです。Capistrano3でdeployを行った際にsudoコマンドでmkdirを行いたい際にpasswordを要求されて処理が止まってしまう事案が発生してしまいました。 2時間ほど悩んだところちょうど良い感じのGemを見つけで、これでいけるのかなぁ。。。と半ば不…

クオリティの高いコードを書こう、rubocop

最近、一回りも年が違う先輩のそばでプログラムを書いていてたくさんのことを学ばせてもらってます。 普段はRubyを書いているのですがそのRubyコードを先輩にレビューしてもらうとひどい書き方をしまくっていて笑われてしまいました。笑 ただ動くだけのコー…

Railsで複雑なSQL文を投げたい時に使うArelTable

ActiveRecordについて Railsには標準でActiveRecordと呼ばれる機能が付いています、ORマッパーとも呼ばれ、modelとデータベーステーブルがリンクしていて、オブジェクト指向でデータを扱うことができる機能です。 詳しい話は以下を参照してください。 railsg…

RubyKaigiがあるようで、、、

紹介です。 12月11日(金) 〜 12月13日(日)まで RubyKaigi 2015 が開催されます! 紹介といいつつ開催が明日からだし、チケットも全部売り切れてるっていうね。しかもRubyKaigiのチケット高い。。。。・Super Early Bird 20,000円 ・Early Bird 25,000円 ・Re…

Ruby On Railsについて

Ruby On Railsについて書く。 普段触っているフレームワークはコレ。 もう触り始めてちょうど11ヶ月ぐらい経つ。だいたい1年くらい Ruby On Railsはその名の通りプログラミング言語Rubyで動いています。 フレームワークってなんぞや、って人はカンタンにア…