RailsConf(DHH-翻訳者注)で約束したように、ついにRails 3.1:Release Candidateをリリースする準備ができました。 これは素晴らしくエキサイティングなリリースです。 2つの新しいキラー機能が登場し、さらに驚くほどの改良が加えられました。 まず第一に、キラー機能:
資産パイプライン
3.1の主要な機能は、 Sprockets 2.0を実行するアセットパイプラインです。 プラグインやエンジン(エンジン)を含め、CSSとJavaScriptをより有機的に整理できます。 詳細な説明は、RailsConfに関する私のプレゼンテーションで聞くことができます。 デフォルトでは、アセットパイプラインには、スタイルシート用のSCSSとJavaScript用のCoffeeScriptが付属しています。 多くのドキュメントが来ています。
Asset Pipelineは、アプリケーションのクライアント部分を操作するための新しい概念の一般的な指定です。 その一般的な意味は、足場、JS、CSSに対してコントローラー、ビュー、モデルがどのように生成されるかということです。 これにより、より便利なアーキテクチャを実現し、数十個のファイルをpublic / javascriptからモジュールにスクレイピングできます。 レール自体が、すべてのクライアントファイルを1つにまとめてキャッシュします。
HTTPストリーミング
この革新により、ブラウザーが応答の生成を完了する前であっても、ブラウザーはスタイルシートとJavaScriptのダウンロードを開始できます。 その結果、ページのレンダリング速度が著しく向上します。 これはWebサーバーからのサポートを必要とするオプションにすぎませんが、人気のあるnginxとユニコーンの組み合わせはこれを提供する準備ができています。 これに関するRailsCastsのビデオがあります 。また、 こちらのドキュメントもご覧ください。
アクションの主な原則は、キャッシュされたヘッダー(たとえば</ head>までのすべて)がリクエストの直後に返され、ブラウザーがそれに指定されたスクリプトとcssのダウンロードを開始し、サーバーがデータベースなどにリクエストを行うことです。
jQueryがデフォルトになりました
jQueryをRailsに同梱されているデフォルトのJavaScriptフレームワークにしましたが、Prototypeへのロールバックは同じくらい簡単です。 これらは、jquery-railsおよびprototype-rails gemのBundlerを使用してインストールされます。 Gemfileで必要なものを選択するだけで獲得できます。
その他のグッズ:
- リバーシブル移行 :自分自身を変換する方法を自分で知っているDRY移行。 よりきれいで、きれいで、簡単です。 はい、self.upとself.downは必要なくなり、すべてがさらに宣言的になりました。
- マウント可能なエンジン : エンジンは、独自のルートとヘルパーのスペースを持つことができます(新しいアセットだけでなく、ドキュメントが間もなく表示されます)。 ここでは、その背景を読むことができます(ただし、資産はすでに古くなっています)。
- アイデンティティマップ :クリーンアップする必要がある重要なポイントのため、デフォルトでは有効になっていません。 ただし、それらに同意することができれば、これは呼び出されるクエリの数を減らす素晴らしい方法になります。 速いほど良い! 以前は、2つの同一のリクエストを実行すると、2番目のリクエストがキャッシュから取得されましたが、オブジェクトは新たに作成されました 。 これで、エンティティマップがデータベース内の1つのエントリ=フロントエンドの1つのオブジェクトになります。 さらに、不必要な要求を回避するのに役立ち、デバッグを簡素化します(1つの場所でレコードに加えられた変更はまだ保存されていないため、回答全体に影響するようになりました)。
- 準備されたステートメント :ActiveRecordは、キャッシュされた準備された式を使用するようになりました。これにより、PostreSQLおよびMySQLの複雑なクエリのパフォーマンスが大幅に向上します。 毎回リクエストを生成してデータベースに送信する代わりに、Railsはリクエストを1回生成し、同様のトークンを作成する必要がある場合に特別なトークンを使用します(必要なデータを置き換えます)。 単純なクエリではパフォーマンスが20〜30%向上し、複雑なクエリでは1秒あたりのクエリ数が10倍(!)増加します。
- Rack ::キャッシュはデフォルトで有効になっています :ページキャッシングの代わりとして条件付き受信 (条件付き取得)でHTTPキャッシングを使用できるようにします(プラグインとしてすぐに手配し、配信から削除します)。 Rack :: Cacheは、HTTPヘッダー(Expires、Cache-Control、Last-Modified、ETag)を使用してキャッシュのスタイルを設定するエンジンです。 条件付き受信-レコードを受信し、最終アクセス時刻が変更時刻よりも遅いことを確認すると、304が返されます。ページの常に動的な部分が小さい場合(ほとんど静的なデータを表示するときの現在のユーザーのパネルなど) )
- Turnは、Ruby 1.9のTest :: Unitの新しい出力です。テストに合格したときの表示がより良く、より明確になりました。 Ruby 1.9の新しいアプリケーションで利用可能。
- ForceSSL:アプリケーションセキュリティのサポートがこれまで以上に簡単になりました。 アプリケーションとコントローラーで利用可能。 構成の1行-httpから指定されたルートはhttpsにリダイレクトされます。
- 役割ベースの一括割り当て :attr_protectedがパラメーターとして役割を引き受けるようになったため、admin / non-adminなどが分離されました。 作業がずっと簡単になりました。 3.1では、CanCanを忘れることができるようです。 とても興味深いことです。RailsCastsの以下のリンクをご覧になることをお勧めします。
- has_secure_password : BCryptに簡単にパスワード保護を埋め込みます。 現在、独自の認証スキームを提起しない人には許しはありません。 一般的に言えば、パスワードのみを提供します。 パスワードの回復、ブロック、登録の確認などが必要な場合は、引き続きDeviseを使用する必要があります(これはRackベースであり、イノベーションから利益を得ることはありません)。
- カスタムシリアライザー:JSONなどのオブジェクトをシリアル化します。 以前のシリアル化でYAMLをデータベースに配置した場合、ロードおよびダンプメソッドを自分で設定して、オブジェクトの保存方法を選択できるようになりました。
また、RailsCastsの小さなビデオレビューだけでなく、変更の膨大なリストを表示することもできます 。
新しいアプリケーションを作成する場合は、Ruby 1.9.2を使用することをお勧めします。 Railsは1.8.xから4.0までをサポートしますが、互換性のためだけです。 Ruby 1.9.xがトレンドです。 参加して、突然のスピードの爆発を楽しんでください。
Rails 3.1 RCは、
gem install rails --pre
て常に
gem install rails --pre
できます。 リリースを楽しみ、 バグをgithubに送信してください。 すべてが順調に進んだ場合、最終バージョンは数週間以内にリリースされる予定です。