2018-05-27
記事紹介
Do we need dependency injection in Ruby?
- RubyのテストでDI使うかexpect, allow({expect, allow}_any_instance_of)使うかの話
- DI使ったほうが依存関係を明示できて良い(カナリア的な意味合いも含めて)
- Arrange Act Assertパターンで実装できる
- デバッグしやすい、などなど
4 (of many) awesome additions in Ruby 2.5.1 (and how to install it)
- Ruby 2.5.1の新機能について
- Structのキーワード引数は良さそう(だけどあんまりStruct使ったこと無いな…ほとんどクラスにしちゃう
The simple but powerful Ruby Struct
- Structの使い方、使い所。OpenStructの話とか
- スタブ用途だとrspecのdouble使っちゃうなー
APISnapshot built using Elm and Ruby on Rails is open source
- elm with railsな話
- json endode/decodeらへんがいろいろ大変だったらしい
- http://elm-lang.org/
Capybara inconsistent click behavior and flickering tests
- CapybaraでJS実行するとJSのイニシャライゼーションが終わる前に処理が走ってしまう可能性があるのでいろいろとワークアラウンドがある
- Poltergeistの場合はtrigger()
- Seleniumの場合はexecute_script("document.querySelector('#new-task').click()”)
How to replace jQuery with Vue.js in Ruby on Rails apps
- vue.js on railsの話
- 普通にsprockets使っているだけでwebpackは未使用
Zero downtime migration from Enum to Single Table Inheritance
1. 新カラム作成 2. 新カラムへのデータ移行とmodule include + before_saveでnew columnにつっこむ 3. 旧カラムのignored_columns化とロジック移動 4. 旧カラムdrop
- とても参考になる
- ignored_columnsいいなー
2018-05-25
記事紹介
Put down that ENV; what you should know about ENV configuration
- 環境変数は構造化されていないので複雑なデータを置けないしセキュリティ的にもあれなので止めたほうが良いのでは?という記事
- コメント
- 結局ファイルやデータストアからのロードが良い的なことが書いてあったような気がするけど、んーどうなんだろ。環境変数も結局ファイルから読み出すよね。あまり意図を理解できず…
Announcing Heroku CLI Autocomplete for Bash and Zsh
A gem for every occasion: 11 great Rails libraries we use on every project
- favorite gem系の記事
- コメント
- 最近は認可系のgemとしてbankenを使っている。今のところ大きな問題ないし、シンプルな作りなのでとてもおすすめ
Faster web application deployments using Mina instead of Capistrano
- デプロイツールMinaの紹介
- めっちゃ速いらしい
- 速い理由はSSHのコネクションを都度貼るのではなく、一回貼って、デプロイスクリプトのbashスクリプトを作ってそれを実行しているから
- 2回目以降のデプロイとかでめっちゃ速くなるっぽい(140sec => 5secとかそのレベル)
Progress bar in Rails
- プログレスバーをderayed_jobを使って実装するprogress_barというgemの話
- delayed_jobsにカラムを追加して、Job内でそのカラムを更新。ajaxでdelayed_jobsのステータスを取得できるAPIを叩き、それをもってステータスを更新する、というヤーツ
thoughtbot/suspenders
- Railsのテンプレートになるアプリをががっと作ってくれるやつ
- 今はApplication Templateで代替可能…?
2018-05-24
記事紹介
Controllers: the Rails way vs the Hanami way
- RailsとHanamiの違い。Controller編
- コメント
A Dive into Ruby CVE-2017-17405: Identifying a Vulnerability in Ruby’s FTP Implementation
- Rubyの脆弱性の話(今は解消済み)
- FTPでファイル名が”| {command}”だったりするとKernel.open(‘| {command}’)が実行されてクライアント側でコマンドが実行される危険性がある、ということらしい
- コメント
- open(‘| {command}’)の書き方を初めて知ったし、これIOクラスが返ってくるのか。readすれば標準出力取得できる。面白い
Dynamically setting Rails default_url_options in Heroku review apps
- Heroku Review Appのdefault_url_optionsの設定方法について
- HEROKU_APP_NAMEを使うと良いらしい
- Review Appだとホスト名動的だから環境変数でやりくりする感じで、そのやりくりする環境変数がHEROKU_APP_NAMEということらしい
Phoenix is better but Rails is more popular
Building APIs with Rails + Protocol Buffers
- RailsでProtocolBuffersを使う方法
- protoファイル書く => protocでrubyコードをgenerate => generateされたRubyクラスを使ってprotobufにencode => それをsend_dataする
Timeout::Error "Timeout is Ruby's Most Dangerous API" —Mike Perham
- タイムアウトを使うとユースケースによっては危険だよ、という記事
- 例だとタイムアウト時に1つ目のRedisのレスポンスが残ってしまって、2つ目のRedisコネクションのレスポンスとして返されてしまって色々ヤバイ、という話っぽい
- https://www.mikeperham.com/2015/05/08/timeout-rubys-most-dangerous-api/
- https://github.com/heroku/rack-timeout#timing-out-inherently-unsafe
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
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
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
How to Wrap Arbitrary Java Class in JRuby Gem?
gem紹介
piotrmurach/coinpare
- 仮想通貨のトレーディングデータをCLIから取得できるgem
- ttyつかっている。ttyいいなー
igorkasyanchuk/rails_db
- phpmyadminのRailsバージョンみたいな感じ
- ちょっとした管理画面に使えそうだし設定もほぼ不要なので便利っぽい
- 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
- WebpackerでHMR使う方法(ライブリロードと違って部分的なロードなので色々便利)
- source fileをブラウザからeditできるの知らんかった
How To Dramatically Improve Your Ruby Code With Fundamental OOP Principles
Heroku Webhooks: Easier Accessibility, More Options
- Heroku Webhooksをダッシュボードから設定できるようになったよ話(いままではHeroku CLIオンリーだったっぽい)
- Heroku Webhooks初めて知った。便利そう
- https://devcenter.heroku.com/articles/app-webhooks
Updated Async Provisioning of Add-ons
- HerokuのアドオンのプロビジョニングでAsyncにする設定をデフォにしたという話?
- https://devcenter.heroku.com/articles/getting-started-with-asynchronous-provisioning
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
- oclifの話
- こんなのあったんだ… https://devcenter.heroku.com/articles/cli-style-guide
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?
とか