- 開発
週刊Railsウォッチ(20171215)Ruby 2.5.0-rc1リリース、Ruby 2.4.3セキュリティ修正、Ruby 3.0で変わるキーワード引数、HTML 5.2 RECリリースほか
こんにちは、hachi8833です。クリスマスが迫るとRuby周りが忙しくなりますね。
今週のウォッチ、いってみましょう。
臨時ニュース1: Ruby 2.5.0-rc1リリース
- プレスリリース: Ruby 2.5.0-rc1 リリース
ついさっき出ました。実は先ほど以下のセキュリティ修正でrbenvを更新したときにrc1の文字が見えていたのでついでにインストールしちゃいました。
臨時ニュース2: Rubyセキュリティ修正リリース
今朝発表がありました。
修正内容
以下の2点です。必要な方はお早めにアップデートしましょう。
- CVE-2017-17405: Net::FTP におけるコマンドインジェクションの脆弱性について
- CVE-2017-0903: Unsafe Object Deserialization Vulnerability in RubyGems
プレスリリース(ダウンロードリンクあり)
私もローカル環境とオレオレRailsアプリをRuby 2.4.3にアップデートしました。
Rails: 今週の改修
commit差分から見繕いました。
System TestにFirefox headless driverを追加
- PR: 82b974
# actionpack/lib/action_dispatch/system_testing/driver.rb#67
browser_options.args << "--headless"
browser_options.args << "--disable-gpu"
+ @options.merge(options: browser_options)
+ elsif @browser == :headless_firefox
+ browser_options = Selenium::WebDriver::Firefox::Options.new
+ browser_options.args << "-headless"
+
@options.merge(options: browser_options)
else
@options
end
end
def browser
- @browser == :headless_chrome ? :chrome : @browser
+ if @browser == :headless_chrome
+ :chrome
+ elsif @browser == :headless_firefox
+ :firefox
+ else
+ @browser
+ end
end
つっつきボイス: 「Firefox Quantamが速くなったらしいのと関係あるのかな」
参考: Firefox Quantumが激重になる問題が発生中
非推奨メソッドがpublicに変わらないよう修正
# activesupport/lib/active_support/deprecation/method_wrappers.rb#60
deprecator.deprecation_warning(method_name, options[method_name])
super(*args, &block)
end
+
+ case
+ when target_module.protected_method_defined?(method_name)
+ protected method_name
+ when target_module.private_method_defined?(method_name)
+ private method_name
+ end
end
end
つっつきボイス: 「お、お、こんなバグあったとは」「非推奨メソッドが削除されるまでの間ということですね」
非推奨のBigDecimal#new
を削除
# activerecord/lib/active_record/connection_adapters/postgresql/oid/decimal.rb#6
module OID # :nodoc:
class Decimal < Type::Decimal # :nodoc:
def infinity(options = {})
- BigDecimal.new("Infinity") * (options[:negative] ? -1 : 1)
+ BigDecimal("Infinity") * (options[:negative] ? -1 : 1)
end
end
end
つっつきボイス: 「BigDecimal#new
じゃなくてBigDecimal
になるのか」「RailsのActiveSupportなのかなと思ったらRubyの方だった」「new
が非推奨になったのはなぜなんだろう?」「オブジェクトの同一性を担保するためなのかなと思ったけどnew
あってもなくてもobject_id違うな↓」
追記: 「IntegerやFloatでnew
できないのに合わせたんじゃないんすかね?」
RailsのSTIを修正
- PR: d4007d Fix inheritance object creation from relation
- issue #18062 Partial STI support in building associations
# activerecord/lib/active_record/relation.rb#55
- def new(*args, &block)
- scoping { @klass.new(*args, &block) }
+ def new(attributes = nil, &block)
+ scoping { klass.new(scope_for_create(attributes), &block) }
end
つっつきボイス: 「STI: Single Table Inheritance」「この記事↓見るとSTI結構嫌われてる雰囲気ですね」「STIは有用なこともあると思うけど使ったことほとんどなかったナー: カラム増えるし」
使われていないwebpack
定数を削除
// activestorage/webpack.config.js#1
-const webpack = require("webpack")
const path = require("path")
module.exports = {
つっつきボイス: 「誰も使ってないので削除したそうです」
Rails
RailsのArelを使ってコンポジション可能なQuery Builderを書く(RubyFlowより)
# 同記事より
scene = Scene.new(scene_params)
SceneQueryBuilder.new(scene).by_season
SceneQueryBuilder.new(scene).by_episode
SceneQueryBuilder.new(scene).by_dialogue
つっつきボイス: 「Query Builderはよく使うし、いいパターンだと思う: ただ自分はArelじゃなくて生SQLで書くけど」「同じことをActiveRecordだけで書くのはつらくなりやすい」「Builderパターンを説明するときにはSQLを例に使うのが一番わかりやすいと思ってる: みんなもっと使おう」
Railsのロガー記事2本: ActiveSupport::TaggedLogging
とベストプラクティス
# 元記事1より
#lib/vendor_payment_logger.rb
class VendorPaymentLogger < ActiveSupport::TaggedLogging
def initialize(logger)
super(logger)
logger.formatter = formatter
end
def formatter
Proc.new{|severity, time, progname, msg|
formatted_severity = sprintf("%-5s",severity.to_s)
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S")
"[#{formatted_severity} #{formatted_time} #{$$}]\n #{msg}\n"
}
end
end
つっつきボイス: 「最近ロガーで悩んでると聞いたので探してみました」「そうそう、某案件のロガー設計方針」「いつだったか、ロガーはオブジェクト指向的設計からはみ出しやすいって言ってましたね」「まさしく」
リレーションだけが更新されるとupdate_attribute
でSQLが発行されない
- issue: #25503 update_attribute ignores autosave relations
- commit: 0fcd4c Run SQL only if attribute changed for update_attribute method
- Rails 5.1 API:
ActiveRecord::Persistence#update_attribute
Gobyの作者@st0012さんからの情報です。Rails 5のissue #25503が以下のやり取りの後未だにcloseしていないそうです。この挙動は2015年に0fcd4cで追加されたそうです。
問題点を見つけた。
changed?
メソッドがリレーションの更新をチェックせず、属性の更新だけをチェックしてた。
リレーションが更新されたかどうかをチェックする何かうまい方法を見つける必要がある。個別のテストは動くのにグループになるとコケるテストがあったので、条件を少し追加する必要があった。
25503#issuecomment-250984166より大意
つっつきボイス: 「仕様なのかバグなのか?」「ActiveRecord::Persistence#update_attribute
ではリレーションの更新には触れてないですね」「ところで『update_attribute
はバリデーションがきかないゴミだぞ』って誰か言ってた」「update_attribute(key, value)
というAPIも残念」「バリデーションが効かないからゴミというわけではない(過去にやらかした経験上)」
参考: ActiveRecord の attribute 更新方法まとめ
Rubyアプリが劣化する様子をレストランになぞらえて説明する
How Dishwashers Ruin Ruby Apps: https://t.co/nRN4BPPfNP
— Ruby Inside (@RubyInside) December 8, 2017
Passengerでお馴染みのオランダPhusion社のブログ記事です。レストランに皿洗い機を導入後に処理量を増やすとどうなるかという形でサーバーのワーカーの扱いについて解説しています。
テストにおけるstubのコスト
stubは速いしスイスイ通るし便利だけど使い所に注意という記事です。
# 同記事より
describe Order do
let(:customer) { Customer.new }
let(:order) { Order.new(subtotal: 100, customer: customer) }
describe '#total' do
context 'a customer has fee' do
before do
customer.fee = 21
end
it 'returns the total price which includes fee' do
expect(order.total).to eq(121)
end
end
context 'a customer has no fee' do
before do
customer.fee = 0
end
it 'returns the total price without any fee' do
expect(order.total).to eq(order.subtotal)
end
end
end
end
つっつきボイス: 「単体テストだとstubを使う意味ないこと多いっすね」
Passwordless: Railsアプリでパスワードなし認証するgem
- リポジトリ: mikker/passwordless
Passwordless: Add Password-Free Authentication to a Rails App - https://t.co/0DIVQbHTcN (Uses 'magic links' in emails for logging in, instead.)
— Ruby Inside (@RubyInside) December 8, 2017
class User < ApplicationRecord
validates :email, presence: true, uniqueness: { case_sensitive: false }
passwordless_with :email # <-- ここ
end
つっつきボイス: 「とりあえずPasswordlessという名前はわかりやすくていいかも: Deviseに比べれば」
ankaneさんの膨大なメモ
- リポジトリ: ankane/shorts
groupdateなどさまざまなgemを出しているAndrew Kaneことankaneさんがいろんなドキュメントをリポジトリに置いているのを見つけました。内容はRails/PostgreSQL/セキュリティ/データサイエンスなどさまざまです。
つっつきボイス: 「BPSもDocbaseにMarkdownドキュメントを社内でじゃんじゃん共有しているけど、それと同じようなノリなのかも」「publicな場所に置いているのエライ」
コーディングスタイルで揉める理由
- 元記事: Why We Argue: Style
『オブジェクト指向設計実践ガイド』などでお馴染みのSandi Metz氏の記事です。
- なぜスタイルガイドを使うのか
- どのスタイルガイドがいいのか
- なぜチームで反対されるのか
- 自分流でやりたいんだけどダメ?
- チームで合意を取り付けるには
- 新しいスタイルガイドが性に合わないときは?
つっつきボイス: 「これはどうしてもどこかで揉めるやつ」「永遠の課題」「基本はプロジェクトの既存スタイルに沿うことにして、迷ったらスタイルガイドに沿う、と言うだけなら簡単ですけどね」
ワーカープロセスを安全に切り替える
factory_girl改めfactory_botなどでお馴染みのThoughtbot社のブログ記事です。
# 同記事より
#!/usr/bin/env ruby
STDOUT.sync = true
def info
"PID=#{Process.pid} WORKER_VERSION=1"
end
puts "TICK: Starting process... #{info}"
trap "TERM" do
puts "TICK: Received SIGTERM #{info}"
sleep 5 # 重い作業を終了中ということにする
puts "TICK: Graceful shutdown #{info}"
exit
end
loop do
puts "TICK #{info}"
sleep 2 # 重い作業を実行中ということにする
end
doorkeeper: RailsでOAuth2認証するgem
- リポジトリ: doorkeeper-gem/doorkeeper
OAuth2に特化した認証gemです。Railsの他Grapeフレームワークにも対応しているそうです。
# doorkeeper-gem/doorkeeperより
class Api::V1::ProductsController < Api::V1::ApiController
before_action :doorkeeper_authorize! # 全アクションでトークンを必須にする
# 以下アクション
end
つっつきボイス: 「doorkeeper、結構定番らしいけど初めて知ったので」「これもいい名前かな」「そうっすか?Doorkeeper.jpと紛らわしそう」
Rails Developer Meetup 2017より
大盛況だったRails Developer Meetup 2017のスライドからです。参加したかったー(´・ω・`)
ふつうのRailsアプリケーション開発
とても参考になります。
yuba: Railsの抽象化支援gem
- リポジトリ: willnet/yuba
generatorで生成できます。
# willnet/yubaより
rails generate yuba:service create_artist
rails generate yuba:form artist
rails generate yuba:view_model artist_index
rancher: コンテナを継続的に管理
- リポジトリ: rancher/rancher
- サイト: http://rancher.com/
deppbotとtachikoma.io: セキュリティや依存関係の自動更新
- サイト: https://www.deppbot.com/
- サイト: http://tachikoma.io/
Deppbot などで自動定期bundle updateとか走らせているとCIが壊れていないか定期的に監視できて便利 #railsdm
— toshimaru (@toshimaru_e) December 9, 2017
tachikoma試してみようかな #railsdm
— katzchum (@katzchum) December 9, 2017
Ruby trunkより
Ruby 3でキーワード引数がかなり変わる見通し
詳細は今後多少変わるのかもしれませんが、既にMatzがRubyWorld Conference 2017などでRuby 3で本物のキーワード引数を導入すると言明しているそうです。
# 以下の呼び出しは「キーワード引数」を渡す
foo(..., key: val)
foo(..., **hsh)
foo(..., key: val, **hsh)
# 以下の呼び出しは「通常の引数」を渡す
foo(..., {key: val}) # {} で囲まれている
foo(..., hsh)
foo(..., {key: val, **hsh}) # {} で囲まれている
# 以下のメソッド定義は「キーワード引数」を受け取る
def foo(..., key: val)
end
def foo(..., **hsh)
end
# 以下のメソッド定義は「通常の引数」を受け取る
def foo(..., hsh)
end
Ruby 2のキーワード引数はHashオブジェクト(キーはすべてシンボル)の通常の引数であり、最後の引数として渡されている。この設計を選んだのは互換性のためだったが、かなり複雑になっていて、動作が直感的にならない多くのエッジケースの原因になっていた。
Ruby 3ではキーワード引数は通常の引数と完全に分離される(ブロックパラメータが通常の引数と完全に分離されているのと同様に)。
この変更によって互換性が失われる。キーワード引数を渡したり受け取ったりする場合は、常に({}
などで囲まない)むき出しのシンボル値かdouble-splat**
が必要になる。
次のような移行パスを考えている:
* Ruby 2.6か2.7あたりで警告を出すようにする: 通常の引数がキーワード引数と解釈可能な場合(またはその逆)
* Ruby 3.0で新しい文法に完全に移行する
#14183より大意
つっつきボイス: 「最初#14176 Unclear error message when calling method with keyword argumentsにしようかと思ったんですが、その後でこのissueが流れてきたので」「Railsも順次対応不可避...ゴク」「実は@st0012さんがちょっと前からGobyのキーワード引数周りの仕様で矛盾に突き当たって悩んでいるんですが、これを見たら無理もないかも」「本当のキーワード引数」
そこからsplat演算子(*
)やdouble-splat演算子(**
)の話題になりました。
「splat演算子って、引数とパラメータのどっちにも置けるからまたややこしい」「正直ぱっと見て分からないw」
Ruby
Ruby 2.5でStructにkeyword_init: true
でキーワード引数が使える
こちらもキーワード引数にちょっと絡みます。
Structに欲しかった奴Ruby 2.5に入れた https://t.co/zongwLSiyy
— k0kubun (@k0kubun) December 12, 2017
Foo = Struct.new(:a, :b, keyword_init: true)
Foo.new(a: 1, b: 2) #=> #<struct Foo a=1, b=2>
つっつきボイス: 「これはとてもよい」「最初ハッシュが渡せるのかと思ったらキーワード引数だった」「とはいうもののStruct
にするより普通にクラス書いちゃうことの方が多い: Struct
って規模感で悩むのと、ダメな使い方になる可能性もあるんで」「Struct#new
インスタンスを継承すべからずとかですね」
シングルトンクラスの本当の使われ所
私たちが普通クラスメソッドと呼ぶものは、技術的には、それぞれのシングルトンクラスで定義されたクラスオブジェクトの(シングルトン)インスタンスメソッドです。
同記事より
つっつきボイス: 「この図↑を見た限りでは、シングルトンクラスも加味すると継承パスはこんなふうに二本立てともみなせるということかな」
RubyConf 2017で発表したお: Rubyで2Dゲーム作った
- 元記事: RubyConf 2017
記事のスライドの見せ方が見事です。
つっつきボイス: 「↑Apple IIがつい懐かしくって」
最近のYARV-MJIT
rubyのVMは放っておくとささださんが速くするのでtrunkに追従してるだけでyarv-mjitのパフォーマンスが上がったことになる (70fpsいった)
— k0kubun (@k0kubun) December 13, 2017
つっつきボイス: 「70fpsはoptcarrotのパフォーマンスでしょうね」
Rubyと型
me too.
— Yukihiro Matsumoto (@yukihiro_matz) December 11, 2017
つっつきボイス: 「Matzと_ko1さんの二人がこんなに手こずるなんて、型理論ってどんだけ難しいんだと思ってこの翻訳記事↓見つけました」
参考: 「型」の定義に挑む
「話がバートランド・ラッセルの数理論理学から始まってて、抽象度むっちゃ高い」「きわめつけは以下↓: 厳密に定義しすぎると発展を妨げるって」「(数学科出身につき)それ気持ちわかるわー」「エンジニアの発想じゃなくて数学者の発想だなーと思いました」
“型の定義とは何か?” この質問に明確かつ正確な回答を与えられれば、そこから生じる多くの誤解や無意味な議論を避けることができる。しかし、この質問に対して、そのような明確かつ正確な回答を持ってしまった場合、科学の前進を鈍化させ、”知識の成長を妨げ”、”調査の道筋を既知の狭いチャネル内に引き入れてしまう”ことにもつながりかねない。
postd.ccより
参考: Wikipedia: 型理論
JavaScript
LeaderLine: 指示線を描画するJSライブラリ
- リポジトリ: anseki/leader-line
使いどころありそう / “LeaderLine” https://t.co/FOmcbkmYVP
— mattn (@mattn_jp) December 12, 2017
つっつきボイス: 「これ大好きー: だいぶ昔にこういうのを力技で実装したときはうまくいかなかったのを思い出した(´・ω・`)」
parcel人気急上昇?
- サイト: https://parceljs.org/
- リポジトリ: parcel-bundler/parcel
10日しないうちに★10,000に迫る勢いです。
github.com/parcel-bundler/parcelより
設定ファイルなしでも動くというのが殺し文句のようです。
つっつきボイス: 「JS環境選びってギャンブル」「今からでも遅くはない?」
参考: webpack時代の終わりとparcel時代のはじまり
図と例で学ぶawait
とasync
(Frontend Weeklyより)
つっつきボイス: 「async
とかpromise
はほんと面倒」
map
とforEach
の違い
パフォーマンスも含めて比較した記事です。
// 同記事より
arr.forEach((num, index) => {
return arr[index] = num * 2;
});
// arr = [2, 4, 6, 8, 10]
let doubled = arr.map(num => {
return num * 2;
});
// doubled = [2, 4, 6, 8, 10]
つっつきボイス: 「map()
とforEach()
はRubyの#map
や#each
とだいたい同じようなものだと思ってる」「他の言語でforeach
を見た気がするけどどの言語だったかな...」
参考: Wikipedia-ja Foreach文
CSS/HTML/フロントエンド
HTML 5.2 RECがリリース
- プレスリリース: HTML 5.2 IS NOW A W3C RECOMMENDATION
- W3C HTML 5.2
今年10月に出たHTML 5.1 2nd Editionの立場は...
目立つ部分だけ目次レベルでざっとdiff取ってみました(左がHTML 5.2、右がHTML 5.1 2nd Edition)
最近の非同期CSS読み込み(Frontend Weeklyより)
今ならrel="preload"
でJSなしでできるということです。
<link rel="preload" href="mystyles.css" as="style" onload="this.rel='stylesheet'">
はじめてのCSS Gridレイアウト(Frontend Weeklyより)
CodePenを多用して説明しています。
See the Pen CSS Grid: Calendar by Geoff Graham (@geoffgraham) on CodePen.
つっつきボイス: 「そういえばbabaさんが『gridって直下の要素しかgridできないのが不便なんですよね』って言ってました」「display: flex;
が見えてあれ?と思ったけどli
の中だけだった」
GoogleがSEOスターターガイドを改訂
肝心のガイドはまだ日本語になっていません。
Unicode Consortiumが追加待ちのグリフにフィードバックを募集
- 元記事: Feedback on Draft additional repertoire for ISO/IEC 10646:2017 (5th edition) DAM1 and PDAM2.2
- フィードバック手順: Discussion and Formal Feedback
つっつきボイス: 「文字が全部鼻に見えるw」「これレビューできる人世界に何人というレベルでは」
今気づきましたが、17372r-n4923-dam1-chart.pdfに旧かな文字まで並んでいて絶句してしまいました。もはや誰得。
その他
Microserviceアーキテクチャのパターン
昨日BPS社内のエンタープライズ・アーキテクチャ勉強会でMicroserviceのアーキテクチャに言及されたので探してみました。
Googleが動画を自動で漫画に変換するアプリを実験公開
つっつきボイス: 「うう、すげー」「コマ割りまでやってる」「今後結婚式に出席したらきっと山ほど見られますよ」
参考: Google、動画を自動で漫画化する実験アプリ公開。AIポートレートカメラマンやスクラッチ動画生成も
Recho: SlideShareなどにTwitterレスを表示できるChrome拡張
- 元記事: WebスライドにリアルタイムでリアクションできるChrome拡張「Recho」をリリースした
- 元記事: WebスライドにリアルタイムでリアクションできるChrome拡張「Recho」をリリースした【開発編】
つっつきボイス: 「ほとんどニコ動」
go-torch: Goプログラムをブラウザでビジュアルプロファイリングするツール
- リポジトリ: uber/go-torch
つっつきボイス: 「この間もこんなグラフ見ましたね」「名前ど忘れ...frame graphだった」
参考: Go言語のプロファイリングツール、pprofのWeb UIがめちゃくちゃ便利なので紹介する
コードをフェンスの向こうに放り投げる
正規表現のよさげな本
従来、正規表現を理解するには大学に入ってオートマトンか言語理論かの単位を取得する必要があり結構大変だったのですが、今となってはそんなことしなくても白と黒のとびらを読めば良い(練習問題もついてて完璧)ので、正規表現が難しいという言い訳はさすがに通らない。 https://t.co/VLT5VI3dbY
— 7594591200220899443 (@shyouhei) December 11, 2017
番外
Ruby Tuesday
これ、Asakusa.rb じゃん / “ルビー・チューズデイ - Wikipedia” https://t.co/2a6U8YInm3
— yancya (@yancya) December 12, 2017
つっつきボイス: 「asakusa.rbが火曜日開催だから?」「そういうことか」
中国語にひらがなの「の」が絶賛混入中
- Togetter: 中国語圏におけるひらがなの「の」の用例
香港にもあるので中国語圏内共通の傾向なのでは、と>RT pic.twitter.com/fECEsRpKPE
— すみっこグラシュー (@aipo_fujii) December 10, 2017
人間デコーダー
メールで送られてきたキリル文字の住所が文字化けしてることに気づかなかったフランス人が、文字化けをまるまる書き写して投函したのに、郵便局員がちゃんと解読して届けたらしい。郵便局員の技能……。 http://bit.ly/bHc6oX
— Lena Morita (@mirka) April 18, 2010
写真は残念ながら削除されたようです。
つっつきボイス: 「この郵便屋さんものすごく優秀なんじゃ」「普通迷宮入りですよね」
むやみになつかしい感
SIMD命令実行時のメモリ書き込みで発生する電磁波で「メリーさんの羊」を演奏しちゃったプログラム。MacBook Airで実行すると1580 kHzに合わせたAMラジオで聴けるらしい。セキュリティ研究の産物なのだとか。あたまおかChttps://t.co/NlSXsVSXQ8
— h.omae (@pigeon6) March 2, 2016
つっつきボイス: 「大昔にTK-80↓の横でラジカセでFM聴いてたら実行/停止に応じていろんな音階が出たのをつい思い出しちゃって」
40年を(勝手に)記念してTK-80のレプリカを作ってみました。まだギリギリ新品で部品が揃います。パターンまで同じにしてあるので完全互換です。(上:本物、下:レプリカ)
40年おめでとうございます。 pic.twitter.com/sHJAkxpjsj
— akutsu@FC3S.jp (@akutsu_fc3s) August 2, 2016
磁石とクリップ
磁石製のコマ + クリップ
これすごい、夢中になってやったレトロゲームのようなワクワク感pic.twitter.com/2FlrxYgu6z
— Podoro (@podoron) December 12, 2017
今週は以上です。
バックナンバー(2017年度後半)
週刊Railsウォッチ(20171208)最近のRailsフロントエンド事情、国際化gem、mallocでRubyのメモリが倍増、るびま記事募集ほか
- 20171201 JSON PatchでRails高速化、Knapsack Proでテスト高速化、Decorator/Presenter gem比較ほか
- 20171124 GitHubにセキュリティアラート追加、RailsでVue.jsを使う、Railsテスト本2種、node-pruneで瞬間クリーンアップほか
- 20171117 Rails開発3年分のコツ集大成、PostgreSQL 10.1でセキュリティ問題修正ほか
- 20171110 dry-rbでFormObjectを作る、RailsのSQLインジェクション手法サイト、年に1度だけ起きるバグほか
- 20171020 Rubyが来年で25周年、form objectでサニタイズ、コアなString解説本ほか
- 20171013 Ruby 2.5.0-preview1リリース、RubyGems 2.6.14でセキュリティバグ修正、Bootstrap 4.0がついにBetaほか
- 20171006 PostgreSQL 10ついにリリース、Capybaraコードを実画面から生成するnezumiほか
- 20170929 特集: RubyKaigi 2017セッションを振り返る(2)Ruby 2.3.5リリースほか
- 20170922 特集: RubyKaigi 2017セッションを振り返る(1)、Rails 4.2.10.rc1リリースほか
- 20170915 Ruby 2.4.2リリースで脆弱性修正、strong_migrations gemでマイグレーションチェック、書籍『Mastering PostgreSQL』ほか
- 20170908 Rails 5.1.4と5.0.6リリース、コード書換え支援gem「synvert」、遅いテストを分析するTestProfほか
- 20170818 RailsとYarnでTypeScript、Rails新コミッタにkamipoさんも、CSVにSQLクエリをかけられるツールほか
- 20170804 Rails 5.1.3と5.0.5が正式リリース、GitHubでローカライズ基盤サービス、正規表現で迷路を解くほか
- 20170623 gemを見極める7つのコツ、mixinがよくない理由、重いページをrender_asyncで軽減ほか
- 20170616 railsdiff.orgはアップグレードに便利、RubyのDSLとかっこの省略、TerraformをRubyで制御ほか
- 20170609 ついにtherubyracerからmini_racerへ、注意しないとハマるgem、5.1でのVue.jsとTurbolinksの共存ほか
- 20170602 チームが喜ぶ19のgem、Bundler 1.15が高速化&機能追加、Deviseに挑戦する新認証gem「Rodauth」ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。