メモるブログ

主にRuby/Railsの記事の概要と感想を書いていく所存

2018-05-23

記事紹介

SHIFT Commerce's Journey: Deconstructing Monolithic Applications into Services

  • Heroku Kafkaを使ってモノリシックアプリをマイクロサービス化した話
  • 非同期でメッセージングして良い感じにするっぽい
  • コメント
    • あんまりマイクロサービスには肯定的ではない(管理がむずそう)んだがこういう段階的移行の話はとても興味がある
    • DataマイグレーションとActionEventが別なのがへぇーって感じだった

Caching in Ruby on Rails 5.2

  • Railsのキャッシュ方法(HTTPレベル、ページレベル、フラグメンテーションキャッシュなど)を色々と説明している記事。とてもよくまとまっている

8 Ruby Gems We're Loving in 2018

  • おすすめRubyGemの紹介
  • コメント
    • Bulletはtravel_toで代替できるのでは…?
    • Ransackとpryは超便利
    • ってかpry、gist integrationあるんだなー

その他

jimweirich/sorcerer

  • RipperスタイルASTからRubyのコードを吐き出すやつ。
  • コメント
    • power-assert関連の話でRubyもASTからコードを吐き出して良い感じに黒魔術的な事できないかなーと思って調べたら出てきた。

Tables Generator

  • 便利すぎた

2018-05-22

記事紹介

Use beautiful binary literals in Ruby

  • Rubyのバイナリリテラルの書き方の話
  • 0bxxxの書き方知らなかった…

29+ Ruby Gems For Building Command Line Programs That Boost Productivity

  • CLIツール書く時のgemをまとめたもの

Bad patterns in Ruby - using private attr_accessor

  • private attr_accessorはあんま良くないよ、という話
  • @xxx をそのまま使えば良い。@xxxはprivateからしかアクセスできないしスコープが明瞭になる。という趣旨

Rails Service Objects: A Comprehensive Guide

  • Railsのサービスクラスの使いどころと実装方法について
  • コメント
    • んーTwitterCreator的な内容であればlib/にTwitterクライアントをラッパーしたビジネスロジックによらないクラスとして実装するかなー
    • ドメインサービスであれば複数オブジェクトの更新とか複雑なフロー制御が必要なときに使いたい気がする
    • 複数オブジェクトの更新とかでも一方から他方においての依存関係が強い依存の場合はアソシエーション使って他方のクラスのメソッド呼び出しとかで何とかする場合もある。それが結構な連鎖になりそうだったらサービスにするし、まぁケースバイケース

2018-05-21

記事紹介

Hosting Static Website on Dokku with Free Cloudflare CDN and SSL

  • dokku使ってjekyllをホスティングする話。
  • Cloudflareを間に噛ませてSSL化しつつCDNでキャッシュして良い感じにホスティング
  • 一番安いVPSのプランでやっても2MB程度しか利用していないとか
  • コメント
    • dokku以前検証したなー。Herokuみたいに簡単にデプロイできるのは超便利

Implementing DSL in Ruby, part 1: CSV importer

  • CSVインポート処理をDSL使って実装する話
  • 実際の実装例が上げられていて、RubyDSLをどうやって実装するかを勉強するにはちょうど良い記事

How to Wrap Arbitrary Java Class in JRuby Gem?

gem紹介

piotrmurach/coinpare

  • 仮想通貨のトレーディングデータをCLIから取得できるgem
  • ttyつかっている。ttyいいなー

igorkasyanchuk/rails_db

  • phpmyadminRailsバージョンみたいな感じ
  • ちょっとした管理画面に使えそうだし設定もほぼ不要なので便利っぽい
  • excelのエクスポートを試すべく axlsx_railsをインストールしたがうまくいかず

2018-05-17

記事紹介

PAGINATING RUBY ON RAILS APPLICATIONS WITH PAGY

  • ページネーションライブラリのPagyの話
  • Kaminariやwill_paginateと比べてメモリ使用量が少ないらしい
  • https://github.com/ddnexus/pagy

Add beautiful code syntax highlighting to your Ruby on Rails app

Hot Module Reloading with Webpacker

How To Dramatically Improve Your Ruby Code With Fundamental OOP Principles

  • 凝集度的な話。同一クラスには同じドメインのメソッドを入れて、かつ他のクラスのことを知りすぎない(疎結合)というやーつ

Heroku Webhooks: Easier Accessibility, More Options

Updated Async Provisioning of Add-ons

Using HTTP Headers to Secure Your Site

  • CSPとかHSTSとかのセキュリティ系のHTTPヘッダの設定に関する記事
  • staticホスティング用のbuildpackがあるのかー
    • heroku/heroku-buildpack-static

Open Sourcing oclif, the CLI Framework that Powers Our CLIs

Open Sourcing oclif, the CLI Framework that Powers Our CLIs

  • タイトル書き間違いだと思ったら上のと全く同じだった
  • 同じくoclifの話で、Nodeを選択した理由は「みんなが使っていてエコシステム的に良い(意訳)」というのだった

Rails 5.2 fixes query caching in MySQL and PostgreSQL adapters

  • Rails 5.2だとキャッシュが効かなかった一部のクエリメソッドが効くようになったっぽい。exists?とか

2018-05-16

記事紹介

Ruby’s New Exception Keyword Arguments

  • 概要
    • Ruby 2.6でKernel.systemとかInteger(xx)とかでexceptionのオプションを入れられる。falseの場合はエラー時にraiseしない
    • rescueすれば今までも何とかなったけどパフォーマンスの問題があった

Google Chrome 68 introduces HTTPS as the new security must-have

  • 概要
    • Google Chrome 68でhttpのサイトはNot Secureと表示される
    • HTTP/2とかの話もあるのでSSL化良い

6 Things to Share Before Outsourcing Your Rails App

  • 概要
    • Railsアプリをアウトソースする前にシェアすべきことを開発・非開発サイドにわけて解説
  • コメント
    • これ、Railsにかぎらずって感じだな。SIではよくアウトソースするのでこういうの大事。

To Sleep, Perchance to Dream: Rails Ruby Bench and Sleepy GC

Deprecating Paperclip

Functional Programming in Ruby — Closures

  • 概要
    • RubyでFPやる話。
  • コメント
    • 関数型馴染みがない…
    • callが[]や.()で呼べるの好き

The biggest Rails code smell you should avoid to keep your app healthy

  • 概要
    • コールバックはちょっと可読性悪いし不具合出しやすいので外に出すのはどうですか?という話
  • コメント
    • わかる。けど小さいうちはコールバックでも良いのでは?という感じもする
    • メール送信系とかは怖いのでフォームやサービスにラップして扱いたい

Domain Events over Active Record Callbacks

  • 概要
    • コールバックは毎回飛ぶので飛ばしたくないケースに出くわしたとき色々大変。
    • あとデータの整合性の話でafter_saveなのかafter_commitなのか、など色々と注意すべき点がある。
    • なのでイベントのpub/subでコールバックを外に出していい感じに分離しつつ柔軟に設定できるのではないか?という話

How To Remove Argument Order Dependency In Ruby

  • 概要
    • 3rd partyライブラリのイニシャライズのインターフェースがいけてなくてハッシュのargumentじゃなかったのでラッパー=Factoryの層を噛ませて良い感じにした話

How to mitigate DDoS using Rack::Attack

  • 概要
    • Rack::Attackの使い方

gem

baweaver/pry-macro

  • pryでマクロ(=コマンド列)をカジュアルに試せるやつ
  • これ良いかも!と思って試してみたけどうまく動かない…?

browserslist/browserslist-useragent-ruby

  • ユーザーエージェントがブラウザーなのか?とかoutdatedじゃないか?とかを調べるgem

RailsEventStore

  • イベントpub/subでActiveRecordのcallbackをなくそう、というモチベーションのgem
  • ドキュメント見てると blockで処理を囲ってlistenerとlistenするイベントを指定してcallするとコールバックする仕組みっぽい。これならserviceじゃなくてcontrollerに入れても良いかも。
  • コールバック忘れ問題はあるんだけど、subscribeしなかったらワーニングとかが出来るのであればより良さそう(仕組みとしてはできそう…?)