29 Jan '16, 3pm

Rails:Service層を運用して良かったところ、悪かったところ - Qiita: 1年前くらいにRailsの設計にDDD(ドメイン駆動設計)のService層を導入し、Modelの肥大化対策をしました。… https://t.co/MNCOVjlkUp [ruby]

Rails:Service層を運用して良かったところ、悪かったところ - Qiita: 1年前くらいにRailsの設計にDDD(ドメイン駆動設計)のService層を導入し、Modelの肥大化対策をしました。… https://t.co/MNCOVjlkUp [ruby]

1年前くらいにRailsの設計にDDD(ドメイン駆動設計)のService層を導入し、Modelの肥大化対策をしました。 この記事では、まずどのようなルールでService層が組み込まれているかと、1年間運用してみて良かったところ、悪かったところの感想を書きます。 #Service層を導入するきっかけになった問題点 * Modelの肥大化 * Model間の複雑な依存関係 * 多数のミドルウェアの導入による複雑さの倍増 これらにより.. * メンテナンスやテストがしにくい * コードが整理されていないのでとにかく読みづらい ###Model複雑化の例 <ユーザがECサイトの商品をお気に入り(like)にするメソッドを書く場合> 処理に関連するテーブル * my_itemsテーブル(like情報を持つテーブル) * itemsテーブル 処理に関わるミドルウェア * MySQL * Redis 必要な処理 1. my_itemsテーブルへのinsert 2. itemsテーブルのlike_countの更新 3. ユーザがlikeしたアイテムのidを保持するRedisの更新 4. アイテムをlikeしているユーザのidを保持するRedisの更新 上記のような処理をModel内の1つのメソッドに書こうとすると、他のModelや複数のミドルウェアのupdateを全てをMyItem Modelに記述することになり、Modelが煩雑化してしまいます。一方で、上の処理をControllerに書こうとすると、アプリケーション内でlikeの処理を統一できなくなります。(method化できない) #そこで ControllerとModelの間にService層を導入 #Service層とは? Service層とは、DDDのドメイン層の構成要素のひとつです。 DDDは下記のように構成されていて、MVCとの対応関係はこんな感じです。 ![ddd_mvc2.png](https://qiita-image-store.s3.amazonaws.com/0/43089/...

Full article: http://qiita.com/joooee0000/items/369fd4676cd9dfb1f6eb

Tweets

Railsのurl_forを30%高速化するgemを作った [Ruby] on @Qiita ...

qiita.com 29 Jan '16, 8am

まあ、タイトルは若干釣りで、特定のユースケースにおいて3割程度の高速化が見込める、というだけです。 [joker1007/curl_escape: This gem provides fast URL escape by libcurl.](h...

ruby: Rails - 多国対応ウェブアプリを開発する前に知っておきたかったこと - Qi...

qiita.com 07 Feb '16, 4am

# はじめに 最近仕事で多国対応(主に英語圏)のアプリを初めて作った訳ですが、わからないなりにいろいろ事前準備をしたにもかかわらず、実装から運営まであらゆるフェーズでこけました。そんなわけで、あんな苦労は二度としたくないし、他の人にもして欲しく...

Ruby on Rails + Assets on Cloud をCloudFront経由で高速化 - Qiita https://t.co/e2verFBznv

Ruby on Rails + Assets on Cloud をCloudFront経由で高...

qiita.com 04 Feb '16, 1pm

##はじめに ファイルサイズの大きい画像などをクラウドに配置することでウェブサーバーへのリクエストを減らし、ネットワークリソースの節約と海外からのアクセスもあるため、CloudFrontでアクセスポイントからもっとエッジサーバーへ誘導させる設定...