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?
とか
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
To Sleep, Perchance to Dream: Rails Ruby Bench and Sleepy GC
- 概要
- GCをRubyのidle時間に起動させようというアイデアの話?
- https://bugs.ruby-lang.org/issues/14723
Deprecating Paperclip
- 概要
- PaperClipがdeprecateしてActiveStorageに切り替えてください、とのこと。
- コメント
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しなかったらワーニングとかが出来るのであればより良さそう(仕組みとしてはできそう…?)