Ask questions, find answers and collaborate at work with Stack Overflow for Teams. Explore Teams Collectives™ on Stack Overflow Find centralized, trusted content and collaborate around the technologies you use most. Learn more about Collectives
In my Rails app I've run into an issue a couple times that I'd like to know how other people solve: I have certain records where a value is optional, so some records have a value and some are null for that column. If I order by that column on some databases the nulls sort first and on some databases the nulls sort last. For instance, I have Photos which may or may not belong to a Collection, ie th
There are many kinds of complexity that you have to deal with developing software and different kinds of applications will have very different sets of problems you need to solve. If you are building the next Twitter, scalability and fault-tolerance are the problems you are probably fighting. On the other hand, these problems are almost never an issue when working on enterprise applications. The co
May 9, 2012DDD for Rails Developers. Part 3: Aggregates. In Part 1, I talked about using the layered architecture for tackling domain complexity. I showed a few typical violations of the layered architecture and gave some advice on how to fix them. In Part 2, I started talking about the building blocks of Domain Driven Design. I wrote about an important distinction between Entities and Value Objec
私たちの救世主DHH™は最近の Full Stack Radioのインタビュー で、 Basecamp の最新版で彼がどのようにRailsのコントローラを書いたかを説明しています。下記は、彼のすばらしい話を書き取ったものです。 これまでに思うようになってきたのは、「RESTの原則に従うには、どのタイミングで新たなコントローラを作るべきかを一度決めたら、ほぼ異例なくその原則を遵守するべきだ」ということです。いつだってその方がうまくいくんです。自分の作ったコントローラの状態を悔やむのは決まって、作ったコントローラの数が少なすぎた時です。多くの処理を任せようとしすぎてしまうんです。 そこでBasecamp 3では、ある程度理にかなったサブリソースがあれば、毎回コントローラを分割していきます。フィルタなどの場合ですね。例えば画面があって、それがある状態になっているとします。もしこれにいくつかのフィ
ちょっと依存関係の厳しいRailsプロジェクトを扱っていて、タイトルのようなことを行いたい要求が出てきたので、さっそくGoogle先生におうかがいを立てました。 やってはいけない手順 たぶんbundle updateコマンドの引数でもって何かしらコントロールできるんだろうと踏んで調べたところ、公式のドキュメントよりも上位に、まさにやりたいことを書いたQiitaの記事が出てきたので、早速コレに従って作業することにしました。 内容を要約すると、bundle update --source ${GEM_NAME}としてやれば${GEM_NAME}のパッケージだけが更新されるというもので、コメント欄にも2018年11月の「うまくいった」コメントがあるので、コレで良かろうと思って作業に入ろうとしたところ、詳しい人からがかかりました。 正しいやり方 曰く、特定のgemだけ更新したいときは bundle
メールを送信して、そのメールが開封されたか見たい場合があると思います。 めっちゃ簡単です。 方法は単純で - メールの末尾に1ピクセルの画像を設置 - この画像が読み込まれたら、開封されたとみなす - 画像読み込み時に、サーバーにIDつきで送ることで、処理を追加できる というからくり メールの末尾に1ピクセルの画像を設置 app/views/support_mailer/hogehoge.haml = image_tag(tracking_hogehoge_url(id: @hogehoge.id),:size => "1x1", :alt => "logo") controllerに取得部分設置 app/controllers/hogehoges_controller.rb def tracking HogeHoge.find(params[:id]).update(opened: tr
追記 Viewファイル内でJSとCSSを読み込んでいたのをテンプレートファイル内で読み込むように変更。 リポジトリを用意しました。開発にそのまま使用できます。 記事を読んでいちいち設定めんどいなと思ったらこのリポジトリをクローンしてアプリ開発に使ってください。 https://github.com/shan-shan95/rails-vue-template 1/27 追記 「webpackに乗り換えることのメリット」の項目を追加しました。 ファイル構成、webpackの設定を少し変更しました。 この構成にさらにbulma, fontawesome5, normalize.cssを入れる手順です。 めんどくさい人は上のリポジトリに入っているのでそのまま使ってください。 https://shanshan.hatenadiary.jp/entry/2019/01/26/152807 なぜ人類は
事業成長を加速させたエンジニアリングのウラ側 https://medpeer.connpass.com/event/211745/
Railsアプリ開発におけるマスターデータの扱い方は大きく次の3つです。 標準機能のseedを利用する migrationを利用する その他 選択肢で言うとその他になりますが、私は複数の現場で導入してきたのSeed FuというGemをおすすめしています。この記事ではSeed Fuを利用する際のベタープラクティスを紹介します。 github.com おすすめの記法 シンタックスシュガーとして用意されている下記の記法を用いましょう。マスターデータは基本的に静的な値を取り扱うもので、テーブルにレコードとして挿入されることがわかりやすいこの記法がおすすめです。Seed Fuを全く知らない人もすぐ理解してくれます。*1 都道府県のマスターデータを定義する例 Prefecture.seed(:id, { id: 1, name: "北海道" }, { id: 2, name: "青森県" }, { i
こんにちは。メドピアにjoinして3ヶ月目の保立です。 毎週のように新しい開発が進むため、毎日楽しくソースコードを書かせてもらっています。 テストコードを制するものは、Railsを制す!!! ということで、今回はメドピアのRSpecについてです。 メドピアでは、RSpecを用いてテストコードを書いており、 - 1) models配下に記載するビジネスロジックに対するUnitTest - 2) 機能ごとのEndToEndTest (E2E Test) の2種類のテストコードを書いています。 RSpecについて、書こうと思ったきっかけ RSpecは(というかRuby自体が)様々な書き方で動かすことができるため、統一したルールがないと、書いた人によってバラバラなテストコードになります。 私も初めてRSpecを書いた際に、参考書やソースコードによって書き方がバラバラで、どのRSpecを参考にすれば
「RailsのService層ってどう使っていくのがいいんだろうね?」って聞かれたときにすぐ答えられなかったのでまとめておきたいと思います。 ※ Fat Modelの解決策としてTrailblazerが最近よく話題に上がりますが、私がまだ使ったことがないので触れない方向で行きます。 情報を漁る まずは「Rails service」とググって検索して引っかかった記事を読みました。 techracho.bpsinc.jp アクションが複雑になる場合 (決算期の終わりに帳簿をクローズする、など) → 複雑な処理をmodelから分離させたい アクションが複数のモデルにわたって動作する場合 (eコマースの購入でOrder, CreditCard, Customer を使用する、など) → どのmodelに書けばいいのかよく分からないのでとりあえずserviceに書いとけ感ある アクションから外部サー
イントロ collectiveidea/delayed_job なんとなく使ってきて、なんとなくわかってるつもりの delayed_job について、改めてまとめてみたもの。 休日暇だったのでソースコード読んでみたり、step 実行したりして、何処に何が書いてあるかをざっくりとまとめたものです。 環境 rails (4.2.1) delayed_job (4.0.6) delayed_job_active_record (4.0.3) daemons (1.2.3) 導入 Gemfile gem "delayed_job_active_record" ActiveJob ActiveJob のバックエンドとして、delayed_job を指定する config.active_job.queue_adapter = :delayed_job command rails generate de
rescue_from で拾えない例外がある Rails が用意してくれている rescue_from は controller の外側で発生した例外を拾ってくれない。 例えばパラメータに不正なエンコーディングが含まれるときに、Rails は ActionController::BadRequest を例外として投げる。しかし、この処理は Rails の routing 層で行われているため rescue_from で捕捉することはできない。 そのため Rails の外で発生した例外を捕捉していない場合、ユーザには意図していないエラーページが見えている可能性がある。 Rails の外で起きる例外は exceptions_app で処理するのがお手軽 例えば config/initializers/exceptions_app.rb に以下のコードを書いておく(ErrorsControlle
webpackではなく、Rails の gem であるWebpackerの話。 Webpackerを止める方法について書く予定だったが、前提であるWebpackerの説明だけで長くなってしまったので別の記事として切り出した。 脱 Webpacker についてはこちら。 numb86-tech.hatenablog.com rails newから始めて、WebpackerやVueを使う方法について説明していく。 以下のバージョンで作業している。 Ruby 2.5.3 Ruby on Rails 5.2.2 @rails/webpacker 3.5.5 プロジェクトの作成 まず、$ rails new sample_app --webpack --skip-turbolinksでプロジェクトを作成する。 --webpackオプションによって、Webpackerがインストールされた状態でプロジェ
Rails Developer Meetup 2019での発表資料です!可読性の高いテストコードを書くためのコツについて話しました
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く