Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Ruby 2.1にアップグレードする必要がありますか?

スクリーンショットで答えます:

{%img img-response /images/posts/ruby-2-1-improvement.png 645 259私はそれを大きなイエスと呼んでいます%}

約1週間前に本番環境でRuby1.9から2.1にアップグレードしましたが、これが私たちが見たものです。下部の灰色のセクションは、ガベージコレクションの時間がほとんどなくなることを示しています。全体として、アップグレードにより、サーバーの応答時間が15〜20%向上しました。追加のGCチューニングを行う必要はありません!

アップグレードを出荷した後、GoogleとBingのクロール率が大幅に向上しました。これは、検索エンジンのトラフィックから大きな恩恵を受けている私たちのようなサイトにとって特に素晴らしいことです。

かっこいい、それでどれくらい大変でしたか?

150に近いgem依存関係を持つ大規模なRailsアプリでは、アップグレードは1回の小さなコミットと数日間のテストを行いました。すべてのサーバーでrvmを実行し、chefでプロビジョニングするため、すべてのサーバーを2.1にアップグレードするのは、chefロールファイルのバージョン番号を変更するのと同じくらい簡単でした。

どのような問題が発生しましたか?

文字変換には引き続きiconvを使用するため、2.xから削除された組み込み機能を置き換えるiconvgemを含める必要がありました。 getruby-debugまたは2.xで動作するdebuggergemを取得できなかったため、pryandpry-byebugに切り替えました。 それでも、pry-byebugよりもデバッガーgemの方が好きですが、pryはirbよりもはるかに優れているため、一種の洗浄になります。 byebugの作者であるDeividRodriguezは、pry-byebugに関する私の問題は、おそらくbyebugが原因ではないと指摘しました。彼は完全に正しかった! (実際には、byebugとpryの間の相互作用によって引き起こされました)

1.9と2.1が混在する環境では、bundlerを1.5.1にアップグレードする必要もあります。新しいバージョンのバンドラーでは、Gemfileのプラットフォーム要件として2.1を指定できます。

gem 'iconv', '~> 1.0.2', :platform => [:mri_20, :mri_21]

GitHubが2.1で他の問題に遭遇したようですが、この要点でAman Guptaが言及しています:https://gist.github.com/tmm1/8393897、まだ問題に気づいていません。

また、出荷後にGCを調整して、さらに高速化することもできます。 Amanには、その方法に関する詳細が記載された優れた投稿があります:http://tmm1.net/ruby21-rgengc/。安価でシンプルなRubyアップグレードから最大限の利益を得たい場合は、彼のブログの2.1シリーズ全体を読む価値があります。


  1. macOS Catalina にアップグレードする必要がありますか?

    macOS Catalina は 2019 年 10 月 7 日に正式にデビューし、先月リリースされた最新リリースの Catalina 10.15.7 では、多数のパフォーマンス改善、バグ修正、強化されたセキュリティが提供されています。 以前のバージョンと比較して、macOS Catalina はパフォーマンスと信頼性に関してはるかに安定していることが証明されています。しかし、まあ、デバイスを新しいバージョンにアップグレードすると、常に多くの疑問が生じます.私たちは、既存のデバイスが最新バージョンと互換性があるかどうか、Mac のパフォーマンスが向上するか低下するかなど、常に心配しています。

  2. WiFi 6 とは?アップグレードする必要がありますか?

    CES 2020 で、多くのデバイスに WiFi 6 が搭載されることが発表されました。では、それは正確には何であり、現在の WiFi 接続とどのように異なるのでしょうか。これは、WiFi6 とは何かについての現在の投稿で説明しているものであり、アップグレードするのに有利です。最新バージョンの WiFi と互換性のあるラップトップ、スマートフォン、およびタブレットがあります。 WiFi6 とは? WiFi はワイヤレス技術の次世代標準であり、ハードウェアで間もなく利用可能になります。 802.11ax WiFi または AX WiFi とも呼ばれます。最新世代は、802.11ac であっ