Giter VIP home page Giter VIP logo

musubu's People

Contributors

kazu-0226 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

musubu's Issues

予約メール配信機能のckeditorの画像アップロード機能

概要

予約メール配信機能のckeditorの画像アップロード機能を現在未使用にしているが、
利用できるようにする。

目的

画像を挿入したい場合は、アップロードが必須。
それをckeditorで完結させる。

提案内容

CDNのバージョンを変更して、画像アップロードを可能にする

タスク

ckediter+バックエンド(画像アップロード用gemなど)

現在はデプロイ時のエラーのため、下記をコメントアウトしている。
has_attached_file :data

これをS3へのアップロードに変更する

DM機能の送信後の表示エラー

概要

送信後に下記のエラー及び受信者のビューは「・コンテント内容」となる。
ターミナルのエラー
ActionView::Template::Error (undefined method `each' for #ChatMessage:0x0000000006590870):

再現手順

chat_roomからメッセージの送信

修正しないとどう困るか

受信者側のビューが崩れる

原因

chat_message_broadcast_job.rbで以下のコードにしているが、
ビュー側でeachを実行できていない。
ApplicationController.render_with_signed_in_user(chat_message.user, partial: 'chat_messages/chat_message', locals: { user_messages: chat_message})
ApplicationController.render_with_signed_in_shop(chat_message.shop,partial: 'chat_messages/chat_message', locals: { _message: chat_message })

修正案

メッセージごとではなく、メッセージひとつずつパーシャル化して、表示する(eachを用いない)

ゲストログイン時の挙動制御

概要

ゲストログイン時に退会や変更を出来ないようにする

目的

ゲストアカウントの退会により、ゲストログインが出来なくなることが多々あるため、
変更と退会を制御する。

提案内容

ゲストアカウントなら変更と退会を制御する。

タスク

各コントローラにゲストアカウントか確認して、ゲストの場合はリダイレクト処理する。

チャット未読・既読機能

概要

チャット未読・既読機能を実装する

目的

ユーザビリティ向上

提案内容

チャット未読・既読機能を実装する
・メッセージに既読表示
・未読カウントを表示

タスク

今回entryテーブルが存在しない。
そのため手段としては、

・メッセージの受信側を指定する。
メッセージに既読ステータスを持たせる
メッセージ送信時に受信側のIDとtype(UserやShop)を取得するカラムを用意。
showページに入室したら、自分のIDとtypeに一致するメッセージを探す。
一致したものが未読なら既読にする。

・ルーム入室時間を取得する。
メッセージに既読ステータスを持たせる。
ルームの入室時間を取得してその時間以降で自分が送っていないメッセージは未読、入室したら既読にする

メールを画像をS3へのアップロード後しばらく経つと画像が表示されなくなる

概要

メールを画像をS3へのアップロード後しばらく経つと画像が表示されなくなる

再現手順

リッチエディタより、メールを画像をS3へのアップロード
しばらく経つと実際のメールや編集画面で画像が表示されなくなる

修正しないとどう困るか

画像が表示されなくなる

原因

config.fog_public = false

修正案

carrierwave.rb
config.fog_public = true

チャットのメッセージが2つ送信の際に表示される

概要

チャットでメッセージを送信する際にメッセージが2件表示される

再現手順

ルーム1に入室してメッセージを送る。
ルーム2に入室してメッセージを送る。
ルーム1に入室してメッセージを送る。
ルーム1でメッセージが2件表示される。

修正しないとどう困るか

メッセージが2件表示される

原因

console.logで確認したところ、eventがページを遷移しても存在している

修正案

unsubscribedしてあげる必要がある?

チャットルームでのメッセージ送信が他のルームでも表示される

概要

チャットルームでメッセージ送信すると他のルームでも表示される

再現手順

他のルームを開きメッセージ受信

修正しないとどう困るか

違うルームにメッセージが一時的に表示される

原因

jsとchannelでルーム指定できていない

修正案

対象ルームの指定

チャットの左右表示分けのエラー

概要

チャットの左右表示分けをしているが、右に表示されることがある

再現手順

shopとuserという別モデルのため、IDがかぶっている状態でやりとり

修正しないとどう困るか

自分の送信はないにもかかわらず右に表示される

原因

以下で送信者を判別しているがshopとuserという別モデルのため、IDがかぶる可能性がある

 if (data['send_id'] == show_id) {
          $('#chat_messages').append(data["message_right"])
      } else {
          $('#chat_messages').append(data["message_left"])
      }
      return;

修正案

chat_messagesのデータで表示を分ける

DM機能の表示方法変更

概要

現在自分が右、相手が左としているだけであり、表示が見辛い

目的

UI改善

提案内容

LINEのように時間軸で表示

タスク

検索後にリロードするとエラーになる

概要

http://localhost:3000/〇〇/searchで検索結果を表示した後にリロードするとエラーになる

再現手順

http://localhost:3000/〇〇/searchでsearchアクション実行後にリロード

修正しないとどう困るか

検索後にリロードした場合はshowアクションが呼び出されるがエラーとなる

原因

検索後にリロードした場合はshowアクションが呼び出される。

修正案

GETリクエストではなく、POSTとするため、turbolinksを無効にする

News投稿機能の作成

概要

Newsの投稿機能を作成する

目的

登録していないユーザへ向けたnews記事の作成

提案内容

■Newsモデル
・ニュース画像
・ニュースタイトル
・ニュース本文
・公開開始日
・公開終了日
・登録日
・更新日

■仕様
・公開開始日〜公開終了日の間に公開。
・メール配信の際にニュースにも公開するボタンを作成して、Newsテーブルに保存させる。
(is_news_open)などのカラム追加

タスク

ビデオチャットにて音声を認識しない

概要

ビデオチャットにて音声を認識しない

再現手順

チャットより通話を開始しても音声を拾うことができない

修正しないとどう困るか

通話できない

原因

getUserMediaでリクエストは送れている

 navigator.mediaDevices.getUserMedia({video: true, audio: true})
    .then( stream => {
    // 成功時にvideo要素にカメラ映像をセットし、再生
    const videoElm = document.getElementById('my-video');
    videoElm.srcObject = stream;
    videoElm.play();
    // 着信時に相手にカメラ映像を返せるように、グローバル変数に保存しておく
    localStream = stream;
  }).catch( error => {
    // 失敗時にはエラーログを出力
    console.error('mediaDevice.getUserMedia() error:', error);
    return;
  });

修正案

未定

ニュース作成時、画像アップロードができない

概要

画像アップロードができない(一度編集する必要がある)

原因

下記で確認画面を挟んでおり、hiddenでparamsを渡しているが、
refileのattachment_fieldでのparamsがうまく渡せていないのではないか

  def form
    @news = News.new
  end

  def confirm
    @news = News.new(news_params)
    if @news.valid?
      render :action => 'confirm'
    else
      flash.now[:alert] = '配信内容に誤り、空欄があります'
      render :action => 'form'
    end
  end

  def completed
    @news = News.new(news_params)
    @news.save
  end

修正案

confirmの時点でこれは表示されるから、@newsにnews_imageは渡せているが、
下記だとnilになる。

<%= f.hidden_field :news_image, value: @news.news_image %>

S3にアップした際にcacheが保存されるからそこから画像を取得できないか。

カテゴリが重複登録される

概要

ぐるなびAPIを叩いてCategoryモデルに新規登録できるが、
有無に関わらず全て追加されてしまう。

再現手順

g_category_admins_shops_pathの実行

修正しないとどう困るか

重複したカテゴリが増えてしまう

原因

バリデーションがや条件がなく、APIを叩いて取得してきたデータを全て格納しているため

修正案

バリデーションの追加
category_l_codeが存在していれば新規登録しない

ニュース公開ステータスの更新

概要

ニュース公開ステータスの更新をバッチ処理で実行する。

目的

表示に関しては公開期間内を条件にしているが、公開期間内でも表示しないことができるように
open_statusを設けている。

これを毎日0時に公開期間が終了している場合は、非表示に処理する。

提案内容

ニュース公開ステータスの更新をバッチ処理で実行する。
毎日0時に公開期間が終了している場合は、非表示に処理する。

タスク

バッチにステータスをチェックするメソッドと更新するメソッドを追加。
チェックメソッドを日付が切り替わるタイミングで処理して、対象が存在すれば更新するメソッドでアップデートする

チャットのメッセージでテキスト内のURLテキストをハイパーリンクにする

概要

チャットのメッセージでテキスト内のURLテキストをハイパーリンクにする

目的

利便性向上

提案内容

下記のようにURLを送信した場合はハイパーリンクに置き換える
https://github.com/

タスク

chat_message.helperにメソッド追加。

URI.extractメソッド(条件)
https://docs.ruby-lang.org/ja/latest/method/URI/s/extract.html

gsubメソッド(置換)
https://docs.ruby-lang.org/ja/latest/method/String/i/gsub.html

TOPページの新着案件がログインしていないと見れない

概要

TOPページの新着案件がログインしていないと見れない

再現手順

TOPページの新着案件をログインせずにクリック

修正しないとどう困るか

エラーとなる

原因

コントローラ側で表示条件をユーザ以外、お店以外としているためアクションが呼びだされる

修正案

unlessをifに変更

チャット機能のリアルタイム化

概要

チャットメッセージ送受信をリアルタイム化する

目的

チャット機能でメッセージを送信後、送信者はリダイレクトされるが、受信側はリロードの必要がある

提案内容

Action Cableの利用

タスク

フォロー機能の非同期処理

概要

フォロー機能を非同期化する

目的

パフォーマンス向上

提案内容

各フォロー機能の非同期化

タスク

-各リクエストをJS形式に変更(remote: true)
-対応するアクションのjsファイル作成

通話をかけた側はcloseを押してもカメラが終了しない

概要

通話をかけた側はcloseを押してもカメラが終了しない。

再現手順

チャットルームから通話。
peer
.idを入力して通話開始
closeを押す
掛けられた側はcloseを押すと終了するが、掛けた側が終了しない

修正しないとどう困るか

カメラが終了しない

原因

document.getElementsByClassName("close")[0].onclick = function() {
  const videoElm = document.getElementById('my-video');
  videoElm.srcObject.getTracks().forEach(track => track.stop());
};

修正案

videoElm.srcObject = null;

Brakemanの導入

概要

Brakemanの導入

目的

ソースコードに、SQLインジェクションなどの脆弱性がないかを解析

提案内容

タスク

Gem導入

group :development do
  gem 'brakeman', :require => false
end

Brakemanの実行結果をエクスポート
brakeman -o brakeman.html

ShopモデルへのGoogle認証機能追加

概要

userモデルにGoogle認証機能追加したが、複数モデルに対応していないため、
手段を検討

目的

ShopモデルへのGoogle認証機能追加

提案内容

devise + omniauthableをやめる

タスク

検討中

ニュース一覧の本文の表示制御

概要

.html_safeで表示制御

<p class="card-text news-text"><%#=  news.content.html_safe %></p>

contentカラムの中に保存されているのがソースコードになっていて、.html_safeでタグを表示しないようにしており、
尚且つ三行以降は表示しないようにしたいが反映されない。

.news-text{
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

再現手順

<%= news.content.html_safe %>

修正しないとどう困るか

ボックスからはみ出てしまう。

原因

.html_safeを外せば想定通り3行になるため、.html_safe

修正案

ひとまずタイトルのみで対応

ニュース作成時の入力欄をhtmlとtextによって切り替える

概要

ニュース作成時の入力欄をhtmlとtextによって切り替える

目的

リッチエディタだとマークアップ記法で保存されるが、
テキストだとタグが不要になるため。

提案内容

jsでラジオボタンの切り替えでフォームを変える

タスク

管理者管理画面CSV出力機能の追加

概要

管理者管理画面でユーザ一覧や店舗一覧などのCSV出力機能の追加

目的

資料作成用

提案内容

各種一覧のcsv出力機能追加

タスク

各種コントローラにcsvを出力するメソッドを追加する

チャットへのアクセス制御

概要

ログインしていないユーザのチャットへのアクセス制御ができていない

再現手順

ログインしないでroomIDを直接入力

修正しないとどう困るか

他の人にルームを見られる

原因

block_wrong_chatメソッドでログインしていない時の条件を定義していない

修正案

条件追加

チャットでルームを開いた時にリロードしなければ送信できない

概要

チャットでルームを開いた時にリロードしなければ送信できない

再現手順

一覧や詳細画面からチャットを開いてメッセージ送信

修正しないとどう困るか

メッセージが反映されない

原因

以下でroom_idを取得して指定している。
room:location.pathname.match(/[0-9]{1,}/).pop()}
しかし/shops/5のページからチャットルーム(/chat_room/1)を開くとすでに
chat_room_channel_5でsubscribedされており、リロードが必要になる

{"channel"=>"ChatRoomChannel", "room"=>"5"}
ChatRoomChannel is transmitting the subscription confirmation
ChatRoomChannel is streaming from chat_room_channel_5

修正案

chat_rooms以下の数値を取得するように変更
room:location.pathname.match(/[0-9]{1,}/).pop()}

dm機能でshopからuserにメッセージを送信したとき、shopのメッセージが左側に表示される

概要

DM機能をActionCbleを用いて実装したが、shopからuserにメッセージを送信したとき、shopのメッセージが左側に表示される

再現手順

shopからuserにメッセージを送信

修正しないとどう困るか

リロードが必要となり、わかりにくい

原因

パーシャルをleftとしているため。

  def render_chat_message(chat_message)
    if chat_message.user_id.present?
      ApplicationController.renderer.render partial: 'chat_messages/chat_message_left', locals: { target_path: Rails.application.routes.url_helpers.user_path(chat_message.user), image_name: :user_image , image: chat_message.user, content:chat_message.content, created_at: chat_message.created_at }
    else
      ApplicationController.renderer.render partial: 'chat_messages/chat_message_left', locals: { target_path: Rails.application.routes.url_helpers.shop_path(chat_message.shop), image_name: :main_image , image: chat_message.shop, content:chat_message.content, created_at: chat_message.created_at }
    end
  end

修正案

左右分けずにパーシャル化

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.