Day7_オリジナルアプリ

  • Viewの場合は部分テンプレート(partial)を使って小分けにしますが、ControllerやModelの場合はActiveSupport::Concernを使って小分けにする
  • require でgemを一回読み込むとサーバーを切らない限りは有効。requireをコメントアウトしても動く。サーバーを起動し直すとエラーが出る。
  • カテゴリー名とidは一対一対応してほしい
  • 既存のカテゴリーを選択しても新しくレコードは作成しないが登録はできるようにしたい。”既にそのカテゴリーは存在します→登録できない” とはしない。

Day6_オリジナルアプリ

  • db設計の作り直し
  • 同じカラムに同時に入れるようなdb設計になっていた
  • 一番目、二番目、三番目におすすめする動画のURLをurlsテーブルの一つのurlカラムにいれてrank_idで1,2,3で管理しようとしたができなかった。
  • 1st_url、2st_url、3st_urlのようなrankとurlを一緒に管理できるカラムを作成する方針にした。
  • 1st_urlモデルを作ろうとしたが、命名規則が先頭は大文字の単数形なので、数字で始めると大文字にできないので作成できなかった。
  • first_url, second_url, third_urlにする
  • binding.pryで止めている間にコードを書き直す→reload!

Day5_オリジナルアプリ

  • @url['view'] = doc.css('.watch-view-count').text[/\d+[,]\d+/]
  • viewは、"667,101"の文字列が代入されているのに、配列@urlに代入すると667になる。
  • 文字列を整数に変える時にカンマで切れる
  • viewに667101が代入されるように正規表現を書く必要がある。
  • "666,710"(string).gsub(/[^\d]/, "").to_i→666710(integer)
  • [^      ]は[ ]の中に無い1文字
  • gsubメソッドの第1引数に正規表現のパターン、第2引数に文字列(replacement)を指定すると、パターンにマッチする部分をすべてreplacementに置き換えた新しい文字列となる

Day4_オリジナルアプリ

bundle exec rails db:migrateのあとに制約付け忘れたことを思い出す。

やったこと

  • mysql -u root → use db名 → show tables; → drop table テーブル名 でdb内のテーブルを削除
  • その後、マイグレーションファイルに制約を加えてrails db:migrateをしたが、テーブル作成できず
  • bin/rake db:migrate:status で適用範囲を調べると全部upになっているのに、schema.rbには作成されていないテーブルがあった

  • bin/rails db:migrate:reset したら全てと作成できた(最初からこれでok)

 

Everyday Rails - RSpecによるRailsテスト入門 1. イントロダクション

1.テストを書くことに抵抗を感じる理由

  • Rubyや規約の厳しいwebフレームワークを覚えることだけで精一杯になってしまい、そこへさらに新しい技術が増えるのは余計な仕事としか思えない
  • テストを書く時間が増えることによって、顧客や上司から要求されている機能に費やす時間が減ってしまうから
  • ブラウザのリンクをクリックするのがテストであるという習慣から抜け出せないから

2.なぜRspecなのか?

  • Rspecを使うと読みやすいスペックが簡単にかけるから(specとは、specificationの略で仕様書の意味)

3.対象となる読者

  • Railsの開発経験は多少あるものの、テストにはまだ馴染めいない開発者

4.著者の考えるテストの原則

  • テストは信頼できるものであること
  • テストは簡単に書けること
  • テストは簡単に理解できること
  • テストは自分に開発者としての自信を付けさせるものであるべき

5.テスト駆動開発者に近くことでことで失うもの

  • スピード
  • DRYなコードは目指さない(テストにおいては、DRYでないコードは必ずしも悪とは限らない)

6.Rspecの設定

 6.1.rspecに--format documentationを追加

 rails g rspec:installで生成するファイル(4つ)

  • Rspecの設定ファイル : .rspec
  • 作成したスペックファイルを格納するディレクトリ:spec
  • Rspecの動きをカスタマイズするヘルパーファイル:spec/spec_helper.rb, spec/rails_helper.rb

.rspecに--format documentationを追加することでRspecのテスト結果がデフォルトの形式からドキュメント形式に変更され、どのスペックがパスをし、どのスペックが失敗したのかがわかりやすくなる

 6.2 binstubをインストールしテストスイートの起動時間が早く

 

 

Day4_オリジナルアプリ

トップ画面実装

  • マテリアルデザインを採用
  • application.html.hamlにmaterializeのリンクを貼らないで見よう見まねで作成してみることにした。
  • フレームワークであるmaterializeは導入しない
  • inline-boxで横並び→liに当てる
  • カードを均等に横並びにする→ display: flex; justify-content: space-between; を親要素に当てる
  • サイズを小さくするとナビゲーションの右側のリンクが消え、左側にあるロゴマークが真ん中にくるようにする。

         →  @media only screen and (max-width: 640px) {  

                 left: 50%;
                 transform: translateX(-50%);

                 };

    → @media only screen and (max-width: 640px) {
      display: none;
      };

 

Day3__オリジナルアプリ

基本設計

 

まず、画面遷移図を作成し、必要な機能や優先順位などを考えた。

次に、DB設計。DB設計は大きく分けて論理設計と物理設計に分けられる。

以下の2つの記事を参考にした

4ステップで作成する、DB論理設計の手順とチェックポイントまとめ - Qiita

DB論理設計のノウハウ - Qiita

DB設計として、エンティティを決定し、テーブル名定義とER図を作成した。

考えたこと

カテゴリーをユーザーが作れる様にするか。

それともあらかじめ、開発者が決めておくか。

開発者が必要に応じて増やしていく方がよい。

スノボースノーボードが別のカテゴリーになるのを避けれる。

schooのカテゴリーを真似る。

 

 

ER図は、SQLworkbenchを使った。

mySQLRubyとの型対応は、以下を参照した。

» MySQL and Ruby on Rails datatypesOrthogonal Thought