シナトラ-映画カタログ(その1 )


歓迎


良い日、親愛なるコーダー、愛好家、生涯学習!
今日は最近開発したシンプルなプロジェクトについて投稿することにしました.このプロジェクトは、ちょうど' Sinatra ' Ruby Webアプリケーションフレームワークに私のための楽しみと学習ステップのための両方のためでした.

ビットと部分


このプロジェクトが何で構成されるかを教えてください.

上記の写真から見るお尻は、プロジェクト全体を操作するための3つのクラスがあります.以下のようになります:

  • アプリ.RB -私たちがリクエストを受け入れ、HTMLコンテンツをユーザにリダイレクトする主なファイル

  • 映画.RB -ムービークラスを操作するムービークラスです.

  • ムービーストア.RB -ストレージファイルからのストレージのストレージと操作を操作するクラスです.
  • それに加えて、我々は3つのHTMLファイルを我々はクライアントへの応答としては、映画についての特定のデータを要求するとして提供されます.こちらは

  • インデックス.我々はすべての映画
  • を一覧表示するメインビューファイル

  • ショー.我々が1つの映画
  • について情報を示すファイル

  • 新しい.新しい映画を提出するフォームを持っているファイル
    あなたが見るかもしれない最後の面白いファイルは、'映画です.ファイルは、Yaml形式でムービーリストを格納します.YAMLは、データのシリアル化形式を簡単に書くことと読みやすいだけです.

    始めましょう


    まず最初に、これが最初に「シナトラ」フレームワークを使用している単純なウェブアプリケーションを開発するデモンストレーションであると認めさせてください、そして、プロジェクトの後者の装飾と改善はあなた次第です.
    Ruby Gemsリポジトリから' sinatra ' gemをインストールする必要があります.はい、そうです.Sinatraフレームワークは単なる宝石です.
    既にRubyがコンピュータにインストールされている場合は、' sinatra ' gemのインストールを実行します.
    gem install sinatra
    
    これは宝石とすべての依存関係を取得します.

    映画


    我々が最初に必要とするものは、もちろん太陽として明白です.我々は、我々の映画を管理するクラスをつくらなければなりません.このために、プロパティを保存する簡単なムービークラスを書きます.プロパティは以下のようになります.
  • ID
  • ディレクター
  • 私たちは実際にこのクラスの多くを必要としません.必要なフィールドとメソッドを読み込み、それらに値を割り当てるだけです.すべてのことは、以下の画面のような1行で行うことができます.

    ストレージファイル


    YAML形式がどのようなものであり、どのようにその形式でムービーを保存するかを把握するために、ファイルコンテンツそのものを見てみましょう.これは、キーの値形式で他の後に1つのムービーのリストを保存します.つまり、ハッシュ形式と呼ぶことができます.ムービーオブジェクトのidフィールドをキーとして使用します.それで、映画のIDはユニークでなければなりません、そして、すべての次の映画はIdの増加した値を持たなければなりません.
    ここにYML形式のファイルがどのように見えます.

    ムービーストレージクラス


    Rubyで純粋に動作するプロジェクトの最後の部分を実装するには、' MovieStore 'クラスを書き始めましょう.このクラスは、ストレージファイルから必要なムービーを保存して取得するすべての操作を処理します.以下に我々のメソッドとその意味を示します.

  • find -与えられたID
  • で必要な映画を見つける方法

  • すべて-すべての映画
  • のリストを得る方法

  • save -パラメータ
  • で与えられたムービーオブジェクトを保存するメソッド
    ここでは、コンストラクタを使ってクラスを初期化し、ファイル名をYAML形式でムービーリストを格納します.

    既に気づいているように、それはすべての私たちのために利用可能にする' YAML ::Store 'クラスを使用します.それは与えられたオブジェクトを直列化して、Yaml形式に変換して、『映画』に保存します.YMLファイル.そして、それはファイルから映画オブジェクトを読んで、我々のためにアプリケーションにそれを検索します.
    ムービーサーチ

    ' find '関数内の単純なコードのこれらの3行を見てください.我々が以前述べたように、映画の記憶はハッシュ形式で実行されます.それで、我々はちょうど検索するキーを与えます、そして、それは我々にそのキーで映画オブジェクトを得ます.映画の' id 'はここでキーとして使用されます.
    注意すべきもう一つのことは、「YAML ::Store」クラスの'トランザクション'メソッドを使用することです.それを使用して起動したときにファイルへのアクセスをブロックし、それを使用して作業を終えたときにのみ解放します.それはデータベース管理システムのロック機構のようなプロセスに似ています.
    映画一覧

    すべての映画の検索は' all 'メソッドで行われる.また、'トランザクション'メソッドでロックメカニズムを使用します.' root 'メソッドでは、すべてのキーを取得します.そして、ブロックの内側で、それは対応するIDで映画を返します.
    保存ムービー

    そして最後に、ムービーを保存してムービーにする方法を見ることができます.YMLファイルはYAML形式でシリアル化されます.
    また、'トランザクション'メカニズムを使用します.ブロック内では、ストレージファイル内の最大のIDを取得しようとすると、次の映画にそれを割り当てるためにインクリメントして格納されます.それが利用できないならば、リストの最初の映画であるように、それはちょうど0を割り当てます.
    最後に行うのは、パラメータとして与えられたムービーを、新しく割り当てられたIDを持つストレージファイルに挿入します.

    早く帰る


    ここでは、我々のプロジェクトブログの最初の部分の終わりまで来ます.我々は、すべてのストレージと検索手順を行う主なものを行った.
    次の部分では、どのようにレスポンスを取得し、対応するビューファイルにリダイレクトするかを見ます.
    必要に応じて、Githubのプロジェクトリポジトリを見ることができます
    あまり遠くまで行かないでください、親愛なる友人と読者.この記事の第2部ですぐに戻ります.
    記事の2番目の部分はこちらです.
    健康と幸運をご利用ください!