Ruby
class Mail < ActiveRecord::Base enum flag: [:send, :receive] end 特に定義上おかしいところはないはずだが、 下記エラーが発生してしまう。 wrong number of arguments (3 for 0) 色々いじっていて気づく。 class Mail < ActiveRecord::Base enum flag: …
概要 Rails で WEB 画面からのキックでジョブをバックグラウンドで実行するときどうするか。 例えば、メール送信・画像変換・CSVアップロードによる大量SQL実行など。 そんなときはバックグラウンドで非同期にジョブを実行してくれる便利な gem がある。 Rai…
Capistrano3 + Unicorn + Nginx でのデプロイ環境構築を試してみる。 今回は Ubuntu 12 の環境で行う。 リモートのGITサーバの準備や外部にWEBサーバ等を準備するのが面倒なので、 全てローカルで完結するように試してみる。 準備 # rvm list known Ubuntu 1…
概要 外部サイトをテストしたい!なんてことはほとんどないが、 スクレイピングだったりで外部サイトに依存する場合に検知できる方法ないかと思い、 Rspec + Capybara + Poltergeist で外部サイトをテストしてみた。 準備 ruby-2.1.3 bundler をインストール…
概要 Rails でページング処理といえば、kaminari だと思う。 amatsuda/kaminarigithub.com kaminari で Ajax のページングもできるようだが、 AdventCalendar - kaminari徹底入門 - Qiita jQuery の DataTables プラグインと連携して、ページング(一覧画面)…
概要 cap コマンドからの bundle install が失敗する件。 前回記事で Capistrano 2 系で踏み台経由でデプロイって記事を書いたのだけど、 cap コマンド内で実行される bundle install が失敗してしまうので、 今回それを解決する方法を記事にする。 ↓前回記…
Capistrano 2 系の記事を今さら書くのも微妙だが、作業メモ。 3 系でも同じような感じで使えるはず。 概要 Capistrano 2 系で踏み台サーバを経由してデプロイする方法。 状況は下記。 ローカルマシン -> 踏み台サーバ -> テストサーバ Mac から踏み台サーバ…
4回目のデザインパターンは Factory Method(ファクトリーメソッド) パターンの記事を書いてみる。 Template Method と関連性のあるパターン。 実装については簡単だけど、メリットが理解しづらい。 いろいろなサイトを参考にして、3つのメリットを理解した…
実装例 class Kuso < ActiveRecord::Base has_many :unchis validate: buriburi_unchis def buriburi_unchis errors.add(:unchis, "oops!") if unchis.size > 1 end end ポイントは unchis.size。 以前記事にした Railsで階層化された複数モデルに対応するフ…
今回はフォームに「追加・削除」ボタンを設置し、それらをJavascript/CoffeeScriptと連携して動的にする実装をする。 前回の静的な実装までは↓から。 Railsで階層化された複数モデルに対応するフォームの作り方 - Shred IT!!!!jetglass.hatenablog.jp タスク…
Rails4.1.8 での自分用メモとして記事にしておく。 業務でモデルの階層が深いけど、1画面でフォームを作らなければならなかったので、簡略化した形で記事にまとめる。 記事は2つに分かれていて、 最初に書いたこの記事は Rails 側で行うべき基本的なことを…
3回目のデザインパターンは Builder(ビルダー) パターンの記事を書いてみる。 Template Method と Strategy のいいところを使ったパターンだと思う。 おなじみ、下記ソウルを忘れないこと。 参考:programming - Rubyによるデザインパターン5原則 - Qiita 変…
今回もデザインパターンの一つ、 Strategy(ストラテジー) パターンの記事を書いてみる。 Template Method と Strategy を利用できるタイミングが似ているので、どういう時にどっちを使うか議論されているみたい。 参考:language agnostic - When to use tem…
デザインパターンの勉強は何度もしてきたけど、忘れたり、色々なパターンがごっちゃになったりしてしまう。 勉強不足って一言で片付いてしまうが、結局、理解しきれていないのが問題だと思う。 まずはデザインパターンの根底にあるソウルを受け継いでおきた…