Quantcast
Viewing all articles
Browse latest Browse all 1838

週刊Railsウォッチ(20191225後編)Ruby 2.7リリースまで後少し、キーワード引数変更の公式ドキュメント、Railsセキュリティ修正でredis-storeがエラーほか

Image may be NSFW.
Clik here to view.

こんにちは、hachi8833です。今年最後のRailsウォッチ後編です。日本時間12/25夕方の時点のRubyはまだトンテンカンテンやっているようですImage may be NSFW.
Clik here to view.
👀
。数日前まではrdocなどドキュメントの更新が増えてリリース間近かと思いきや、直近のコミットを見ているとさまざまな修正が続々入っていてどきどきしています。コミッターの皆さま本当にお疲れさまです。

Image may be NSFW.
Clik here to view.

github.com/ruby/ruby/commits/masterより

2.7 rc2のNEWS↓を改めて見てみると改良・変更が山のように多いですねImage may be NSFW.
Clik here to view.
😳
。アグレッシブ…


新機能のnumbered parameterからexperimentalが取れましたね。つい「なんぱら」と呼んでしまいます。


キーワード引数のwarningメッセージも細かく改善されています。

# class.c#L2054
-  rb_warn("The last argument is used as keyword parameters");
+  rb_warn("Using the last argument as keyword parameters is deprecated");

以下のように改行を挟んだメソッドチェーンの間にコメントを置けるようになったのも初めて知りました。

foo
  # .bar
  .baz # => foo.baz

なお直近の@81e3770↓では、(..1)minをエラーにするよう変更されていました。(1..)maxはその前からエラーになってたようなので合わせたのかもImage may be NSFW.
Clik here to view.
🤔

# 同コミットより
+   assert_raise(RangeError) { (..1).min }
+   assert_raise(RangeError) { (...1).min }

2.7の新機能について詳しくはjnchitoさんの一連の記事をご覧いただくのが早いですね。


  • 各記事冒頭にはImage may be NSFW.
    Clik here to view.
    ⚓
    でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成ですImage may be NSFW.
    Clik here to view.
    👄
  • 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください

お詫び: 今回のつっつき動画に音声が入っていなかったため、最小限のつっつきボイスとなっていますImage may be NSFW.
Clik here to view.
🙇

Image may be NSFW.
Clik here to view.
⚓
お知らせ: 週刊Railsウォッチ「第18回公開つっつき会」(無料)

Image may be NSFW.
Clik here to view.

第18回目公開つっつき会は、来年1月09日(木)19:30〜にBPS会議スペースにて開催されます。今回から会場のPubスペースが隣の部屋に移ります。

週刊Railsウォッチの記事やここだけの話にいち早く触れられるチャンス!発言・質問も自由です。皆さまのお気軽なご参加をお待ちしておりますImage may be NSFW.
Clik here to view.
🙇

Image may be NSFW.
Clik here to view.
⚓
臨時ニュース: Railsセキュリティアップデート6.0.2.1 / 5.2.4.1でredis-storeがエラーになる可能性

前回のウォッチ20191223にも追記しましたが、こちらにも再録します。

Image may be NSFW.
Clik here to view.

rack gemのセキュリティアップデート2.0.8がリリースされ、Railsも6.0.2.1でrack >= 2.0.8が指定された。アップデートしてみたところ、redis-storeがマウンタブルエンジン(sidekiqのwebインターフェイスらしい)のところで動かなくなったっぽい。
同issueより大意

redis-storeをお使いの方は、本件が解決するまでセキュリティアップデートを待つ必要がありそうです。
なお、同issueのコメントではredis-storeの修正2つで解決できると追記されていますが、本記事公開時点ではまだredis-storeにマージされていません。

Image may be NSFW.
Clik here to view.
⚓
Ruby

Image may be NSFW.
Clik here to view.
⚓
2.7のキーワード引数変更と待望の公式解説


つっつきボイス:「jnchitoさんがキーワード引数の変更記事をがっつり書いてくれていましたImage may be NSFW.
Clik here to view.
🙏
」「ありがたい!Image may be NSFW.
Clik here to view.
😂
」「エッジケースがいっぱいあるけどjnchitoさんが書いたコードで影響を受けるのはわずかで済みそうだとのことです」「たしかに、こんな書き方普通しないよなみたいなの多いしImage may be NSFW.
Clik here to view.
😆
」「皆さんがこんなに苦労しているのを見て、キーワード引数変更の難しさに納得しましたImage may be NSFW.
Clik here to view.
😭

「と思ってたら、ついこの間(12/12)Rubyの公式サイトにキーワード引数変更の詳しい解説記事が出ていました↓」「みんなが欲しかったヤツImage may be NSFW.
Clik here to view.
🎉
」「著者はmameさん、レビュアーはJeremy EvansさんとBenoit DalozeさんImage may be NSFW.
Clik here to view.
😳
」「jnchitoさん記事では言及されていないので入れ違いだったのかもImage may be NSFW.
Clik here to view.
🤔

Image may be NSFW.
Clik here to view.

ruby-lang.orgより


後で上の記事を気合い入れて読んでみましたが、みっちりまとまった力作記事でしたImage may be NSFW.
Clik here to view.
❤
。キーワード引数変更についての重要な一次資料ですね。

公式解説の見出しより:

  • 概要
  • 典型的なケース
  • どこが非推奨になるか
  • 自分のコードはRuby 2.7で壊れるか?(A:『壊れない可能性はある』)
  • 引数の委譲の扱い
    • Ruby 2.6以前
    • Ruby 3
    • Ruby 2.7
    • Ruby 2.6/2.7/3で共通に使える委譲方法(A: Module#ruby2_keywordsを使う)
  • その他の微細な変更
    • キーワード引数で非シンボルキーが使えるようになる
    • 空ハッシュにdouble splatを付けると(**{})引数が従来の[{}]ではなく空([])になる
    • 非キーワード引数を受け取らないことを示す新しい構文(**nil)が導入される
  • 自動変換を非推奨にする理由

追記: 本日つい先ほど、本命のガチ解説記事が出ました↓。日本語で真っ先に読めるのはありがたいですねImage may be NSFW.
Clik here to view.
😂

Image may be NSFW.
Clik here to view.
⚓
Rubyコンカレンシーの進捗レポート(Ruby Weeklyより)

Ruby 3のコンカレンシーモデルについてMatzとkoichiとそれぞれ話す機会があったのでこの記事にまとめる。
同記事より抜粋

記事の見出しより:

  • コンカレンシーとパラレリズムとは
  • 非決定性が持ち込まれるとどうなるか
  • asyncfalconでRuby Webアプリを改善できるが、Ruby実装全体に効く軽量なフックで拡張したい
  • async-ioが提供するIOラッパーは多くの場合暫定的な置き換えとなる
  • コンカレンシーの選択肢:
    • Auto Fiber(#13618など)
    • ラッパー
    • 新しいメソッド
    • 新しいクラス
  • Isolateについて
  • キーワードを追加するかどうか
  • ブロッキングの発生
  • 改変の検出と通知
  • 本件はRuby Association GrantGitHub Sponsorsによって支えられている

つっつきボイス:「Auto Fiberってあったそういえば」「単なるFiberとどう違うんでしたっけ?」「RubyのFiberはcoroutineなので、fiberでマルチスレッドみたいなことをしたければ自分で待ち合わせ処理を書く必要がある、Auto Fiberはマルチスレッドみたいにコンテキスト切り替えを自動でやってくれる感じImage may be NSFW.
Clik here to view.
☺


参考: class Fiber (Ruby 2.6.0 リファレンスマニュアル)

Thread クラスが表すスレッドと違い、明示的に指定しない限りファイバーのコンテキストは切り替わりません。またファイバーは親子関係を持ちます。Fiber#resume を呼んだファイバーが親になり呼ばれたファイバーが子になります。親子関係を壊すような遷移(例えば自分の親の親のファイバーへ切り替えるような処理)はできません。例外 FiberError が発生します。
docs.ruby-lang.orgより

参考: RubyのGuildとAuto Fiberはどういう名前になれば良いと思いますか? - Quora

(中略)AutoFiberについて。
AutoFiberはnormalpersonことEric Wongが最初にこの機能を提案した時の名前です。機能としてはI/O処理のタイミングでコンテキスト切り替えを行うが、スレッドとは異なり、タイムスライスではコンテキスト切り替えしないというものです。
FiberはCS界ではcoroutineの実現として使われており、暗黙のコンテキスト切り替えを行うAutoFiberはcoroutineではない、すなわちFiberではないという理由で、この名前には難色が示されています。
必要な名前は、一種のスレッドであることを明示しながら、より制限され、より安全である(確率が高く)、より軽量であることを示す名前が期待されます。これがなかなか難しい。
私自身は、最近は「Fiberがcoroutineであることを明示することは実は自明ではなく、さらにcoroutineという単語の定義すら簒奪されつつある昨今、これをAutoFiberと呼んでもよいのではないだろうか」という気になっています。(以下略)
Quoraより

Image may be NSFW.
Clik here to view.
⚓
その他Ruby


つっつきボイス:「あぁ、ダブルクォート3つは"""に解釈されるのかImage may be NSFW.
Clik here to view.
😳
」「たしかに出力は変わらないけどImage may be NSFW.
Clik here to view.
😆


以下はつっつき後のツイートですImage may be NSFW.
Clik here to view.
🎉


Image may be NSFW.
Clik here to view.
⚓
DB

Image may be NSFW.
Clik here to view.
⚓
dolt: Git感覚のリレーショナルデータベース(DB Weeklyより)

# 同リポジトリより
$ dolt init
Successfully initialized dolt data repository.
$ dolt sql -q "create table state_populations ( state varchar(14), population int, primary key (state) )"
$ dolt sql -q "show tables"
+-------------------+
| tables            |
+-------------------+
| state_populations |
+-------------------+
$ dolt sql -q 'insert into state_populations (state, population) values
("Delaware", 59096),
("Maryland", 319728),
("Tennessee", 35691),
("Virginia", 691937),
("Connecticut", 237946),
("Massachusetts", 378787),
("South Carolina", 249073),
("New Hampshire", 141885),
("Vermont", 85425),
("Georgia", 82548),
("Pennsylvania", 434373),
("Kentucky", 73677),
("New York", 340120),
("New Jersey", 184139),
("North Carolina", 393751),
("Maine", 96540),
("Rhode Island", 68825)'
Rows inserted: 17

Doitかと思ったらDoltでした。


つっつきボイス:「今度こそキワモノでしょうか?」「へぇ〜、GitのようなインターフェースでSQL的な更新かけてバージョン管理するというのはちょっと面白いですねImage may be NSFW.
Clik here to view.
😋
: 住所データベースみたいに更新が頻繁でなくて固くメンテしたいようなユースケースとかなら使いみちあるかもImage may be NSFW.
Clik here to view.
🤔
」「それ用のリポジトリまで作っちゃったそうですが、試しに登録してみたらユーザー名に数字を使えないらしくhachi8833は撥ねられましたImage may be NSFW.
Clik here to view.
😢
」「Image may be NSFW.
Clik here to view.
😆

Image may be NSFW.
Clik here to view.

dolthub.comより

Image may be NSFW.
Clik here to view.
⚓
クラウド/コンテナ/インフラ/Linux/Serverless

Image may be NSFW.
Clik here to view.
⚓
AWS RDSプロキシとは


つっつきボイス:「RDSプロキシはこの間のre:Invent 2019で発表されてたヤツですね: 結構よさそうだけどお値段はどうかな?Image may be NSFW.
Clik here to view.
🤔
」「↓vCPUになってる理由とか謎Image may be NSFW.
Clik here to view.
😆
: 近々追ってみよう」

$0.015 per RDS Proxy vCPU hour
RDS Proxy Pricing - Amazon Web Servicesより

「RDSプロキシは平成Ruby会議の以下のスライド↓で紹介されていたことで知りました」


はみだし: 上のスライドの動きがあまりに見事だったので発表者のAquaLampさんにお尋ねしたところ、パワポの変形(morph)機能でやれるとのことでした。

Image may be NSFW.
Clik here to view.
⚓
JavaScript

Image may be NSFW.
Clik here to view.
⚓
Node.jsのはかなさ


つっつきボイス:「Node.jsのLTSの寿命って意外に短いんですね…」「まあ他の言語でもそんなに変わりませんけどImage may be NSFW.
Clik here to view.
☺
」「アップグレードで動かなくなるライブラリはつらいImage may be NSFW.
Clik here to view.
😭

Image may be NSFW.
Clik here to view.
⚓
CSS/HTML/フロントエンド/テスト

Image may be NSFW.
Clik here to view.
⚓
styled-componentとは

# 同記事より
src
├── App
│   ├── Header
│   │   ├── Logo.js    
│   │   ├── Title.js   
│   │   ├── Subtitle.js
│   │   └── index.js
│   └── Footer
│       ├── List.js
│       ├── ListItem.js
│       ├── Wrapper.js
│       └── index.js
├── shared
│   ├── Button.js
│   ├── Card.js
│   ├── InfiniteList.js
│   ├── EmojiPicker
│   └── Icons
└── index.js

つっつきボイス:「styled-componentsが好きでない人が社内にいるらしいと聞いて」「まあ一部ですけどImage may be NSFW.
Clik here to view.
😆
」「CSSだけだとグローバルになってしまいがちですし、コンポーネント的に閉じ込めたい気持ちはワカルImage may be NSFW.
Clik here to view.
☺
」「割と最近登場したみたいだけど今後どうなるかな?Image may be NSFW.
Clik here to view.
🤔

Image may be NSFW.
Clik here to view.
⚓
その他フロントエンド

Image may be NSFW.
Clik here to view.
⚓
その他

Image may be NSFW.
Clik here to view.
⚓
年末らしい記事


つっつきボイス:「クリスマスですが年末っぽい記事をいくつか」「Makerのトレンドは自作派にとってうれしい記事!Image may be NSFW.
Clik here to view.
😍

「自分はスイッチサイエンス↓で買うことが多いかな〜Image may be NSFW.
Clik here to view.
😋
」「ここの品は調査が行き届いてて怪しげなものを売ってないのがいいですねImage may be NSFW.
Clik here to view.
👍
: といいつつ秋月電子通商とか千石電商も昔から定番ですが」「自作やってたの昔過ぎて最近の通販事情知らなかったImage may be NSFW.
Clik here to view.
😅

参考: トップページ - スイッチサイエンス

Image may be NSFW.
Clik here to view.

switch-science.comより

「そういえばニキシー管↓で表示したことあったな〜Image may be NSFW.
Clik here to view.
😆
」「このノイズ多そうな真空管みたいな表示装置、ニキシー管っていうんですね…初めて知りましたImage may be NSFW.
Clik here to view.
😅

参考: ニキシー管 - Wikipedia

「昔のビデオデッキなんかに使われてた蛍光表示管↓というのもありましたねImage may be NSFW.
Clik here to view.
🤓
」「大昔の電卓ってこれでしたImage may be NSFW.
Clik here to view.
😳
」「たしか蛍光表示管も真空技術を使ってたかなImage may be NSFW.
Clik here to view.
☺

参考: 蛍光表示管 - Wikipedia

「ところで今度はこれ作りません?↓」「作りましょうっImage may be NSFW.
Clik here to view.
😆

Image may be NSFW.
Clik here to view.
⚓
番外

Image may be NSFW.
Clik here to view.
⚓
宇宙ネタ2題


つっつきボイス:「久しぶりの宇宙ネタImage may be NSFW.
Clik here to view.
😆
」「ナゾロジーさんは目の付け所のいい良科学記事が多くて大好きですImage may be NSFW.
Clik here to view.
❤


後編は以上です。Railsウォッチをお読みいただいている皆さま、いつもありがとうございます!Image may be NSFW.
Clik here to view.
🙇
来年もよろしくお願いします&メリークリスマス。

バックナンバー(2019年度第4四半期)

週刊Railsウォッチ(20191223前編)Railsセキュリティ修正6.0.2.1と5.2.4.1リリース、Ruby 2.7.0-rc2リリース、ActiveRecordのコールバック回避ほか

今週の主なニュースソース

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp Slackなど)です。

Ruby 公式ニュース

Image may be NSFW.
Clik here to view.

Ruby Weekly

Image may be NSFW.
Clik here to view.

DB Weekly

Image may be NSFW.
Clik here to view.
db_weekly_banner


Viewing all articles
Browse latest Browse all 1838

Trending Articles