こんにちは、hachi8833です。先週の更新情報が一段落付いたので平常運転?に戻ります。それでは今週も行ってみましょう。
Railsコアから切り離されたAction Pack gem 2種が更新
ソース: Rails公式ニュース
一同で確認したところ、この2つのgemがRailsのコアから切り出されたのはRails 4のときでした。そのとき以来のまとまった更新ということになります。
現在のRailsでは上の2つの代わりにRussian Doll Caching(旧fragment caching)がデフォルトです。
現役を退いた感の2つのgemですが、まだ更新されてるよーということですね。
rails new
するとデフォルトでgitリポジトリが生成される
これまでは.gitignoreだけだったのが、.gitも生成されるようになりました。割りと前から.gitを生成してくれていたような気がしていましたが、私の気のせいでした。
GitリポジトリのないRailsはもう考えられない...
情報いただきました: ありがとうございます!
gitが無いシステムでも、`run "git init"`がnil返すだけでrails new自体は問題無く実行されるようになっています /
週刊Railsウォッチ(20170127)わかりやすいAWSサービス名、Rails… https://t.co/4aseq8nG8C— 神社 (@y_yagi) January 27, 2017
Integer#to_s
のオブジェクト割り当てを大きく削減
修正のポイントは、#to_s
の可変長引数をやめて固定長引数にしたことのようです。
従来は普通のInteger#to_s
を呼ぶだけで配列(splat引数)とハッシュ(options)の両方でメモリ割り当てが発生していたということです。
def to_s(*args)
#↓
def to_s(format = nil, options = nil)
Integer#to_s
の利用頻度は高いので効果ありそうです。
Railsエンジンでのみ一部のRailsコマンドが動かない問題を修正
小文字でさらっと書かれた「engine」が何を指すのか当初よくわからなかったのですが、Railsエンジンのことでした。
詳しくはリンク先に譲りますが、RailsエンジンはRailsの中核であり、プラグイン的に扱うことができます。たとえばアプリの基本機能をマウンタブルエンジン化しておけば、エンジンをプラグインとして複数のアプリで簡単に導入できるようになります。
おまけ
本題とは関係ありませんが、RailsのIssuesに住まうRails-bot、レビュアーを自動で指名してるんですね。
ちょっと便利そうじゃね?と一同盛り上がりました。GitLab issuesにもリクエストがありました。
フリーズさせたクラスでModule#parent_nameが動かない問題を修正
本体がfrozenな状態で呼び出すと@parent_nameを変更しに行ってしまうのでエラーになるようです。
parent_name = name =~ /::[^:]+\Z/ ? $`.freeze : nil
私はここに三項演算子が使われていることに気づくのにちょっとかかりました。
ところで、修正部分で使われている$`
の変数の意味を一同で調べたところ、マッチした部分より前の文字列を表すんですね。
毎度のことですが、この種の記号は検索しにくくて困ります。Rubyスタイルガイドに沿って$`
を#pre_match
にして欲しいところです。
Rails DB: Railsで書かれたデータベースコンソール
- ソース: Rails DB gem was updated(RubyFlowより)
データベースの中身を覗くのもクエリ実行も自由自在のデータベースコンソールです。phpMyAdminのRails版のような塩梅です。これはもうデモサイトで遊ぶのが早いでしょう。
「これめちゃ便利そう!」と一同色めき立ちました。
- マウンタブルエンジンなのがいい♡
- 本番に入れっぱなしにしたらまずいよねやっぱり
Rubyのself
を考える
短いので気楽に読めます。self
についての基本的な解説ですが、説明の方法が独特でよいと思います。
TruffleRubyがさらに速くなった
この圧倒的速度が本当なら凄いですね。
TruffleRubyって初めて知りましたが、OracleのGraalというVMで動くRuby実装のようです。JRubyからforkし、Rubiniusや標準のMRIのコードまで取り込んでいるとのこと。
今度遊んでみようっと。
RSpecをもっとDRYにする
- ソース: Small steps to DRYer RSpec(RubyFlowより)
短いながらも良記事だと思います。
morimorihogeさんが以下のRSpecコードはカリー化になっていることを見つけました。
subject { ->(field) { fetch(field) } }
its([:age]) { is_expected.to eq 30 }
its([:weight]) { is_expected.to eq 50 }
its([:name]) { is_expected.to eq 'June' }
同じブログにある他のRSpec記事もよさげです。
Google Assistant gem
- ソース: google_assistant(RubyFlowより)
Google Assistantサイトより
Google版Siriとも呼ばれるGoogle Assistantにアクセスできるgemです。
Active Recordでデータベースに自動再接続する
Active Recordの自動再接続はデフォルトでは一度しか行われないので、もう少しがんばってもらうための方法です。
DBMSが重くなってrails serverの起動にDBMSの起動が追いつかなくなるとrails server
自体できなくなってしまうことがあるので、そんなときにこういう処置が必要になりますね。
Passenger 5.1がリリース
多くの改良が行われたとのことです。RailsのアプリケーションサーバーはPassenger -> Unicorn -> Pumaと流行り廃りが激しいよねという声がありました。
Railsにおける「webサーバー」と「アプリケーションサーバー」の違いなどについては以下の記事が参考になります。
参考
gemのアップデートを習慣づけよう
gemのアップデートの前にbundle outdated
コマンドを実行するととても役に立つというお話です。
「bundle outdated
はCIで回したいね」との声がありました。
The Ruby Spec Suite
#13156 In-tree copy of ruby/specを見ていて、The Ruby Spec Suiteなるgemがあることに今頃気づきました。
同リポジトリのwikiによると、Ruby実装そのものに対するテスティングスイートであり、JRubyやRubyniusなどのテストを共通化しようという動きから生まれたようです。
このテストにパスすればRubyの実装を名乗れるということですね。
Rubyの小技集(動画)
今回より新顔ニュースソースにOpenRubyを加えました。TechRachoの記事もときどきフェッチされています。
たまには動画でもと思って選んでみました。10分なのですぐ見終わります。
コンテンツを作る側の準備がほとんど不要ということもあり、英語圏ではこの種の「製作時間=放映時間」なScreencastが掃いて捨てるほどあります。
この動画も、各項目にサブタイトルとリンクがあればもっと見やすいのにと思えました。もうひとがんばりです。
ISO 8601ベースのActiveSupport::Duration
- ソース: ActiveSupport::Duration(OpenRubyより)
ちょうど先週のRailsウォッチでも取り上げたActiveSupport::Durationクラスです。
これはActiveSupport探訪シリーズでも近々お邪魔してみようと思います。
Socios!
ポルトガル語なので何と書いてあるのかなと思ってネット翻訳にかけたら「Rails技術者募集」でした。それだけです。
それにしても英語とヨーロッパ系言語(スペイン語・ポルトガル語など)の機械翻訳の進歩はシャレになっていませんね。
GoogleによるHTTPとモバイル広告へのペナルティ
HackerNewsから2件です。
HTTPS化されてないページにパスワード用フィールドがあるとChromeが危険とみなすようになります。
↓この手の広告もこれで壊滅ですね。
?AWSの謎サービス名をまともな英語で言い換えてやるぜ?
サービスの種類が増えて全貌がわかりにくくなる一方のAWSに業を煮やしてか、AWSのサービス名を徹底的に言い換えてみるという企画です。
- EC2
- Amazon Virtual Serversと呼びたい
- S3
- Amazon Unlimited FTP Serverと呼びたい
- Elasticache
- Amazon Memcachedと呼びたい
ネタかと思いきや、今のAWSサービスを軒並みわかりやすく端的に言い換えていて、本家AWSよりむしろ親切ですね。morimorihogeさんが感激してました。
これをきちんとリンク&継続的にメンテしたら人気出るのでは、というよりAWSがやるべきかも。
今回の?を進呈いたします。おめでとうございます。
おまけ1
上の記事で「Amazon DNS + Domains」と説明されていたAWSのRoute53は何だろうと思ったら、morimorihogeさんによると53番がDNSのポートであることになぞらえた命名だとのことでした。なるほどです。
その元ネタは「ルート66」ですね。私はつい↓を思い出してしまいます。
おまけ2
おとといまでは上の記事にAWS Mechanical Turkのエントリがあったと思ったのですが、いつの間にか削除されていました。以下からわかるように、ネタとしてはデリケートすぎたようです。「Turk」はトルコ人を指します。
おまけ3
数学の証明の自動化アプリ
マジですか。
golang/dep: Go言語公式のパッケージ依存管理登場
- ソース: golang/dep
BPSアプリチームのtjmさんからのお葉書じゃなかった情報です。既に各所で話題になっていますが、mattnさんのブログ記事からも喜びが伝わってきます。
今週は以上です。
関連記事
- 週刊Railsウォッチ(20170120)Ruby 2.5.0 devリリース、古いMySQLのサポート終了、uniqメソッドが削除ほか
- 週刊Railsウォッチ(20170116)Ruby 2.4の詳細、範囲指定したsumメソッドは速い、rescueの挙動を動的に変更ほか
- 週刊Railsウォッチ(20170110)ReactをRailsに置き換える、Ruby 2.4の新機能ほか
- 週刊Railsウォッチ(20161224)Float#roundの動作変更を取り消し、Rails 5.0.1/Ruby 2.4.0-rc1リリースほか
- 週刊Railsウォッチ(20161218)Ruby 2.4ではFloat#roundの動作が変わる、デフォルトのプライマリキーをBIGINTに変更ほか
- 週刊Railsウォッチ(20161209)Active Supportの非推奨メソッド廃止、RailsのjQueryへの依存を廃止ほか
- 週刊Railsウォッチ(20161125)Railsのデータベース・ベストプラクティス、SQLインジェクション解説ほか
- 週刊Railsウォッチ(20161117)DockerホスティングのHyper.sh、accepts_nested_attributes_for殺すほか
- 週刊Railsウォッチ(20161109)bundler audit gemは超おすすめ、CIAのFactbook gemほか
- 週刊Railsウォッチ(20161102)HTML 5.1正式勧告、CSS中央揃えに便利なサイトほか
- 週刊Railsウォッチ(20161027)LinuxカーネルのDirty COW脆弱性、DeviseはWikiを読めほか
- 週刊Railsウォッチ(20161019)ObjectSpaceモジュール活用法、Capybara統合、コミッターを撮影するソフト
- 週刊Railsウォッチ(20161012)RubyのHashの詳細、RethinkDBの会社が終業ほか
- 週刊Railsウォッチ(20161005)Mac OS SierraとRubyの問題、Learning Gitほか
- 週刊Railsウォッチ(20160928)constantizeの注意点、GoのGUI “gallium”登場ほか
- 週刊Railsウォッチ(20160921)クールなHTMLエディタ「Mozilla Thimble」他
- 週刊Railsウォッチ(20160913)MySQLの脆弱性ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。