Code Monkey home page Code Monkey logo

port's People

Contributors

tegnike avatar

Stargazers

 avatar  avatar

Watchers

 avatar

port's Issues

サインアップにメール認証をつけない

タイトルの通り。
サインアップしたら、すぐにログインされているようにする。

理由

ユーザの登録の負担を減らすため。ユーザ数が増えてきたら認証機能を復活させるかも。

progressモデルに紐づくcommentモデルの作成

概要

コメントモデルを作成する。
コメントはプログレスモデル および ユーザモデルに紐づく。
親のプログレスモデル および ユーザモデルとは1体多(0以上)のリレーションを形成する。

要件

create, edit, update, destroy actionを実装。
※ index:ポートフォリオ個別、プログレス個別ページ
※ show:不要
※ new:ポートフォリオ個別ページ
プログレス個別ページ(show)がまだ存在しないので作成する。
ポートフォリオ個別ページに最新のプログレスを表示、それに紐づくコメントを全て表示する。
new、edit はポートフォリオ個別ページに実装する(editはAjaxを使う)。
自分のプログレスは評価できない。
評価カラムでは★を用いて評価し、平均点を表示する。(参考
本番環境での動作(設定)も確認する。

TO DO

  • プログレス個別ページ(show)を追加(ログイン前閲覧不可)

  • ポートフォリオ個別ページにコメント一覧を追加(index、delete)

  • ポートフォリオ個別ページにコメントフォームを追加(new、create)

  • 投稿したコメントに編集ボタンを設け、ajaxでフォームへ切り替え(edit、update)

  • プログレス個別ページにコメント一覧を追加(index、delete)

  • 自分のポートフォリオに紐づくプログレスには評価できないようにする(それ以外は必須)

  • 平均点をプログレスに表示する。

  • evaluationは★で表示する。

  • herokuで動作確認

ポートフォリオのURL入力が必須に設定してある

問題

ポートフォリオのWebおよびGithub URLの入力が必須のため、企画・設計・開発段階(まだURLが設定されていない可能性がある)でも入力が求められてしまう。

対処

企画・設計・開発段階ではそれらのURL入力が任意になるように修正する。

ポートフォリオ投稿時にエラーが出る

事象

ある条件でポートフォリオ新規投稿画面で投稿してもエラーが発生してしまう。
本来は処理が成功すればポートフォリオ個別ページに遷移する。
ポートフォリオ一覧には表示され、そこからポートフォリオ個別ページに遷移してもエラーが発生してしまうことから、ポートフォリオ個別ページのアクセス時に原因があると考えられる。

原因

app/views/shared/_portfolio_form.html.erb でプログレスnewのみプログレスの投稿フォームが表示されるようになっていた。createでエラーが発生し、renderされた場合はこの投稿フォームが表示されないため、プログレスなしでもポートフォリオが投稿できるようになっていた。

実装方針

上記ファイルで、create時もプログレスの投稿フォームが表示されるようにする。
また、controllerレベルでprogressにデータがない場合、エラーを返すようにする。

ユーザ情報に「エンジニア」「非エンジニア」の選択肢を入れる

併せて、以下の機能を実装する。

  • サインアップ時に選択できるようにする。

  • Twitter、Googleのアカウントでログインした場合は「非エンジニア」として登録し、Githubでログインした場合は「エンジニア」として登録する。

  • ユーザ情報で更新できるようにする。

  • 「非エンジニア」の場合は、自身のユーザ画面に「非エンジニアとして登録されています。あなたがエンジニアの場合は、ユーザ情報を編集してください。」というメッセージを入れる。

  • ユーザ一覧画面、ユーザ詳細画面に「非エンジニア」の場合は、それがわかるように記載する。

Redisを使用したPV数計測、ランキング実装

概要

Redisを使ってPV数計測とランキング機能を実装します。
Redisを利用することでRDBよりも高速で処理が可能になる。
スキルアップの一環としてRedisの発展的な利用に挑戦します。

Rails RedisでPVランキングを作ってみた

要件

ポートフォリオ個別ページを作成し、このページヘのアクセスを1カウントとするように設定。
なお、同ブラウザ同ユーザからのアクセスは何回アクセスしても1カウントとする。
自身のポートフォリオはカウントしない。
ポートフォリオ個別ページにPV数計測を表示する。
個別ページに表示するPV数は自身のユーザしか見れないことにする。(仕様はQiitaを意識)
ranking/pv ページを新たに作成し、トータル順位週間順位上位10位までを表示する。
ranking/pv ページの閲覧に制限はかけない。
本番環境での動作(設定)も確認する。

TO DO

  • ポートフォリオにshow、new、edit、update actionを追加

  • ポートフォリオ個別ページを作成

  • Redisを使用して、個別ページへのアクセスで1カウント計測されるように設定

  • PV数を個別ページへ表示

  • ranking/pv ページを新たに作成し、トータル順位週間順位上位10位までを表示

  • herokuで動作確認

ポートフォリオで登録するURLが何でも投稿できてしまう

問題

ポートフォリオ投稿・編集画面で登録するURLが何でも投稿できてしまう。(Github以外にも)
このままだと、危険なサイトへ誘導され、個人情報を抜き取られる可能性があり得る。

対処

Github url の方は Github のURLしか通さないようにバリデーションをかける。
Webアプリurl の方は決まった形式がなく、フィルタするのが難しいので、そういったユーザーがいた場合にアカウント凍結の措置を取る運用でカバーする。

プログレスが1つもないとポートフォリオ個別ページでエラーになる

問題

プログレスが1つもないとポートフォリオ個別ページでエラーになる。これはポートフォリオ作成時にプログレスが自動で1つ作成されるため、1つは必ず存在する必要があるからである。

対処

プログレスが1つしかないときは削除できないようにし、エラーメッセージを表示する。

TO DO No.1

TO DO リスト今回対応分
今までのリストはこちら #7

日本語対応

  • コントローラーの日本語も可能な限りI18nで管理する。

画面レイアウト

  • ユーザ一覧(index)ページ作成。

軽微なエラー

  • 各コントローラーでrootへのrenderをreidrectに修正。

  • フォーム送信時に表示されるエラーを日本語にする。

スクリーンショット 2019-10-05 23 28 09

  • フォロー および いいね失敗時にエラーメッセージが表示されない。

リファクタリング

  • system spec で使用中のcreate_userメソッドを削除(使用しなくても動く)。

TO DO total

TO DO リスト

必要だと思ったものを追加していきます。
比較的大きな単位の機能追加・修正だと判断した場合は個別でissueを作成します。

ブランチの単位で別にissueを作成し、プルリク時に参照します。
このissueはcloseしません。

日本語対応

  • I18nを用いてdeviseなどデフォルトで英語になっている箇所を日本語に修正する。

  • 併せてそれぞれのページで使用されている英語も日本語へ修正する。

  • 各ページのタイトルをI18nで管理する。

  • コントローラーの日本語も可能な限りI18nで管理する。

  • adminの日本語ダウンロード

画面レイアウト

  • エラーメッセージの表記をrailsチュートリアルlikeに修正する。

  • adminリンクをナビバーに移動。

  • SNSログインはパスワード変更非表示

  • プロフィール画像のサイズを上手く取得

軽微なエラー

  • 各コントローラーでrootへのrenderをreidrectに修正。

  • factorlybot の create のタイミングと chrome コンテナの時間軸がずれている?ため、 spec/system/portfolios_interface_spec.rb のテストが時間帯(ポーランド時間22時〜1次頃)によってバグる。

  • フォーム送信時に表示されるエラーを日本語にする。

スクリーンショット 2019-10-05 23 28 09

  • フォロー および いいね失敗時にエラーメッセージが表示されない。

  • SNSログインのフラッシュメッセージが正しくない

  • 失敗時のエラーが表示されない(redirect、renderともにflash.nowにしているため)

  • レイアウトのフラッシュメッセージをパーシャル化

リファクタリング

  • system spec で使用中のcreate_userメソッドを削除(使用しなくても動く)。

  • ローティングをshallowで簡略化

追加テスト

  • ポートフォリオ個別ページでは常に最新のプログレスが表示されること。

追加機能

  • favicon作成。

  • ユーザ一覧(index)ページ作成。

  • プロフィール画像にgravatarを導入。プロフィール画像未設定でgravatarを表示する。

  • ユーザ一覧にフォロー/アンフォローボタンを追加。

  • プログレスにステータス、要レビュー、期間カラム追加

  • テストユーザログイン追加

  • README作成。

  • コメント評価は任意にする。

  • 一度評価した人は2回評価できない。

snsログインでもメールアドレスを取得する

問題

現状のシステムでは、snsログインでは編集でメールアドレスを変更することができないようになっている。編集できない理由は、現時点ではemailを利用した機能がないため、またsnsログインではパスワード忘れでリマインドメールを送る必要がないためである。
つまり現在の仕様では、今後実装予定のお知らせメール等を送ることができないようになっている。

解決案

snsログインでもメールアドレスを変更できるようにする。

ポートフォリオページのレイアウト

問題

  1. 「コメントする」の隣りにあるユーザアイコンがポートフォリオ所有者になっている(本来はログインユーザ)。
  2. プログレスとコメントの堺がわかりにくい。

対処

  1. アイコンをポートフォリオ所有者 → ログインユーザに変更する。
  2. コメントのタグ(h2?)を挿入する。

ActionText内のCSS修正。

問題

  1. ActionText内でリンクを設定しても色が同じのため見にくい。
  2. ul, ol のボタンが消えている(cssで消してしまっている。)

対処

  1. リンクの色を #0366d6 に、hover時は下線を表示するように修正する。
  2. trix-editorタグ内の ul, ol { list-style: none } をデフォルトに修正する。

TO DO No.2

TO DO リスト今回対応分
今までのリストはこちら #7

画面レイアウト

  • SNSログインはパスワード変更非表示

  • プロフィール画像のサイズを上手く取得

追加機能

  • プログレスにステータス、要レビュー、期間カラム追加

  • テストユーザログイン追加

  • コメント評価は任意にする。

  • 一度評価した人は2回評価できない。

portfolioモデルに紐づくprogressモデルの作成

概要

プログレスモデルを作成する。
実際に評価されるモデルで、親のポートフォリオモデルとは1体多(1以上)のリレーションを形成する。
ポートフォリオ作成時に1つ目のプログレスが自動的に生成される。

要件

show以外のすべてのactionを実装。
ポートフォリオ作成時に1つ目のプログレスも生成される。
ポートフォリオ個別ページに最新のプログレスを表示。
index、new、editページには閲覧を制限はかける。
本番環境での動作(設定)も確認する。

TO DO

  • index、new、create、edit、update、delete actionを追加

  • ポートフォリオ個別ページに最新のプログレスを表示

  • ポートフォリオ作成時にプログレスを自動的に作成。

  • herokuで動作確認

コメントが無いときはメッセージを表示

問題

未ログイン未コメントのときのUIが美しくない。
スクリーンショット 2020-05-06 14 59 15

解決法

コメントがないときは以下のメッセージを表示するようにする。
「コメントはありません。」

併せて、margin-bottom を少し伸ばす。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.