MariaDBについて使用

表記の件について使用する機会があった為、備忘録

MariaDBとは...

MySQLの派生として開発されているオープンソースソフトウェアのこと。

MySQLとの互換性がある。

 

AWSのデプロイ環境のAmazon Linux 2では本番環境としてMariaDBを使用していく。

以下、ターミナルのEC2内で実行

 

●インストール

ターミナルにて

% yum  install mysql56-server mysql56-devel mysql56 mariadb-server mysql-devel

SQLのバージョンにもよるが、今回はこちらを使用

 

●起動

sudo systemctl start mariadb

 

●確認

sudo systemctl status mariadb

 

●実行

mysql -u root -p

 

・DB確認

 MariaDB [(none)]> show databases;

 

・データベースの選択

 MariaDB [(none)]> use データベース名;

 

・データベースの中身を確認

 MariaDB [データベース名]> show テーブル名;

 

・カラム情報を取得

 MariaDB [データベース名]> show columns from テーブル名;

 

今回はデータの削除とカラムの追加を実施

・データ一括削除

 MariaDB [データベース名]> delete from テーブル名;

 

・カラムの追加

 MariaDB [データベース名]> alter table テーブル名 add カラム名 データ型;

 

実施後はカラム名取得で確認を忘れずに実施する。

 

deviseの新規登録画面とログイン画面にてエラーを表示させる

railsのdevise機能にて表記の件のエラ〜メッセージについて

 

●新規登録機能

 表示させたい箇所に以下を追加

app/views/devise/registrations/new.html.erb

 <%= render "devise/shared/error_messages", resource: resource %>

 

元々のフォーマットは

app/views/devise/shared/_error_message.html.erb

<% if resource.errors.any? %>
<div id="error_explanation">
<h2>
<%= I18n.t("errors.messages.not_saved",
count: resource.errors.count,
resource: resource.class.model_name.human.downcase)
%>
</h2>
<ul>
<% resource.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>

こちらのファイル内に記載。

 

●ログイン機能

こちらは新規登録画面と異なり、表示させたい箇所に以下を記載。

 

app/views/devise/sessions/new.html.erb

<%= flash[:notice] %>
<%= flash[:alert] %>

 

それぞれ異なるので注意が必要である。

Font Awesomeのアイコンをinputタグのvalueで使用する

HTMLのimputタグにてvalueにアイコンを使用するとしたら

下記の様な表記にする。

 

f:id:agjmajt13:20210316184410p:plain

<input type="submit" value="&#xf1d8;" id="send" class="far">

 

classにはfarなど先頭の文字列を入れ、valueには”&#x”とUnicodeを記入する。

 

これにより、inputでのアイコン使用が可能。

 

LINE風チャットアプリの投稿スクロールについて

Railsにて下記の画像のようなチャット風アプリについて、

実装内容は後日記入するが、

 

新規投稿をしたらどんどんスクロールしていく、かつ新規投稿メッセージが投稿されたらそこにスクロールされていくような実装について

 

f:id:agjmajt13:20210316101008p:plain

CSSにて画面の縦幅を設定し、overflow: scroll;にて対象の画面がスクロールされる。

#chats{
overflow: scroll;
height: 80vh;
width: 50vw;
}

 

さらに、新規投稿メッセージを投稿するとその投稿にスクロールされるには

jQueryの設定が必要

 

例えば、下記の様に追加をしたとしたら

$("#log").append("コンテンツ");

 

出力したエリアまで向かうには下記のように実装

$("#log").scrollTop( $("#log")[0].scrollHeight );

 

こちらで新規投稿メッセージまでスクロールされる。

 

AWSのデプロイ時に画像が表示されなかった件

AWSにデプロイ時に画像が表示されなかった。

今回の原因として知らなかったことの備忘録について記入。

 

下記のような表記をし、app/assets/images/xxxxxxxxxx.jpeg内あるデータにて

<%= image_tag("xxxxxxxxxx.jpeg") %>

 

と表示をし、デプロイをしたが、エラーが出て表示がされなかった。

それを下記のようにしたら表示をされた。

 

拡張子を変更、app/assets/images/xxxxxxxxxx.pngのファイルとし

<%= image_tag("xxxxxxxxxx.png") %>

こちらの表示で反映されるようになった。

 

AWSのデプロイ時に背景画像が表示されない

こちらの参考の方と同じく、AWSのデプロイ時に背景画像が表示されないという事態が発生した。

AWSデプロイしてアプリの背景画像を表示させる - Qiita

 

おそらく背景に思い画像を設定しておりそちらが読み込めなかったと予想される。

一度画像を外し、通常の背景色に変更。

 

こちらの記事の通りに

$ find app/assets/ -type f -exec touch {} \;
$ rake assets:clobber assets:precompile
$ RAILS_ENV=production rake assets:precompile

を実施。

その後unicornとNginxを再起動し、反映。

試しに背景を画像に戻してみたが、反映されなかった為、

背景は色のみでデプロイ。

 

GoogleMapの導入とAPIによるジオコーディング

rails6にて表記の件を導入した際に備忘録。

なお、APIの取得等は他サイトでも紹介されている為、そちらを参考に。

https://www.zenrin-datacom.net/business/media/g001/

こちらではコードやうまくいかなかったことを記載する。

 

・取得Google  Map API

Maps JavaSript API

Geocoding API

 

Google Maps APIキーの取得後、かつGeocoding APIを取得後

 

<div id="map" class="map-window"></div>
#大きさを指定しないと表示されない
 
<script type="text/javascript">
var map;
var marker;
var geocoder;
function initMap() {
geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': '<%= @post.prefecture+@post.city+@post.address+@post.building_name %>'
#こちらはDBから取得した住所情報とする
 
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
map = new google.maps.Map(document.getElementById('map'), {
center: results[0].geometry.location,
zoom: 17
});
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map
#ピンの場所についての情報
});

} else {
alert(status);
#エラーコード
}
});
}
</script>
<%=ENV['MAP_API_KEY']%>&callback=initMap" async></script>
環境変数APIを表示

 

class、styleによる大きさの指定をしなければ表示されない。

また、APIコードは悪用防止の為、環境変数にて設定する。