Rails関連のことを調べてみた2020年08月26日

Rails関連のことを調べてみた2020年08月26日

【個人アプリ作業メモ】フォローボタンの場所を移す

フォローボタンは前に設置してたのだが、
前どこに設置してたか覚えていないのと、
その場所がかなりわかりにくくて、
普通にそこだとまず使わないだろという場所だったので、
もっとわかりやすく使いやすい場所に移すことにする。

移動先はここ。
![スクリーンショット 2020-08-25 午後7.28.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/a625007a-1c2d-b2da-5d80-ae73da787f36.png)
各投稿のcurrent_user.nameの横。

まず前にどこかに作ったフォローボタンを探しに行こう。

見つけた!!

“`ruby:app/views/users/show.html.haml
.users-show
= render ‘follow_form’
= render ‘stats’
“`
この部分テンプレートで呼び出してる。

どこから呼び出してるかというと、ここ。

“`ruby:app/views/users/_follow_

元記事を表示

[Ruby] rqrcodeで連結QRコードを生成する(実践編)

* [知識編はこちら](https://qiita.com/c-flat/items/3dd4ca512632ce97fdca)
* では、実際に連結QRコードを出力してみましょう。

– 知識編にも書きましたが、今回は処方箋のQRコードで使う `8bit_byte` モードの連結QRコードを生成します。
– 処方箋に書き込むデータの実態は ShiftJISエンコーディングのCSVデータファイルです。(改行=CR/LF・EOFあり)([こちら](https://www.jahis.jp/standard/detail/id=714)で定義されています)

# rqrcode を改変する

### rqrcode のライブラリ構成について

* rqrcodeは、v1.0.0からライブラリの構成が分割され、生成機能の呼び出しや画像ファイルへの出力クラスを備える[rqrcode](https://github.com/whomwah/rqrcode) と QRコードの生成のcore部分の[rqrcode_core](https://github.com/whomwah/rqrco

元記事を表示

Rails 本番環境 ActiveRecord::StatementInvalid (Mysql2::Error: Table ‘テーブル名’ doesn’t exist):

##この記事について
本番環境で出たエラーの対処方法を備忘録として投稿

[環境]
・Ruby 2.6.6, Rails 6.0.3.2
・Docker,Docker-compose(開発環境)

##問題のエラー

“`ruby:qiita.rb
ActiveRecord::StatementInvalid (Mysql2::Error: Table ‘テーブル名’ doesn’t exist):
“`

##エラーが出た原因
開発環境で新たにテーブルを作成したが、本番環境にはまだテーブルが存在しておらずdb:migrateがする必要があるから

##エラーを解決するために
“`ruby:qiita.rb
$ bundle exec rails db:migrate RAILS_ENV=production

== 20200825055854 CreateNews: migrating =======================================
— create_table(:テーブル名)
-> 0.0916s
== 20200825055854

元記事を表示

MySQLをbundleしようとすると失敗する

##gem ‘mysql2’をbundle出来ない問題

mysql嫌いになりそう。何回も同じエラーで苦しんだので備忘録としてまとめます。

“`
$ bundle
“`

“`
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock –add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/…………
Using rake 13.0.1
Using co

元記事を表示

【Rails】論理削除paranoiaでwith_deleted と joins(もしくはincludes) を併せて使いたい

# 結論
* Userモデル

“`
has_many :event_users, -> { with_deleted }, dependent: :destroy
“`

* 実装したいコントローラー

“`
User.joins(:event_users).where(event_users: { event_id: @event.id })

[#,
#

元記事を表示

Railsでdeviseを導入してユーザー管理機能を実装する

#deviseを導入しユーザー管理機能を簡単に実装する
Railsで、gemのdeviseを使ってユーザー管理機能を実装する方法をまとめました。

##deviseの導入
まずはgemfileにdeviseを追加します。

“`ruby:gemfile
gem ‘devise’
“`

bundle installを実行し、**サーバーを再起動します。**

そして、deviseの設定ファイルを作ります。

“`
$ rails g devise:install
“`

userモデルを作ります。

“`
rails g devise user
“`

この時、userモデルができると同時にマイグレーションファイルが生成されるので、追加するカラムがある場合は記述してからマイグレートしましょう。

“`ruby:○○_devise_create_users.rb
–省略–
class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t|

元記事を表示

ActiveRecord::StatementInvalid: PG::DuplicateTable: ERROR: relation “tweeets” already exists

マイクグレーションを実行しても以下のエラーが出る

“`
ActiveRecord::StatementInvalid: PG::DuplicateTable: ERROR: relation “tweeets” already exists
“`
Rails のアプリをコントローラーから作ると、高い確率でこのエラーにあたってしまう。
テーブル作成しているやん。と言ってくれていたのですね。
以下の記事を参考にさせていただきました。

https://qiita.com/motty93/items/455515ede653371a5887

“`
$ rake db:migrate:reset
“`
リセットして

“`
$ rake db:migrate
“`
もう一度マイグレーションを行ったところ直りました。ありがとうございます。
必ずここでエラーが出て、ファイル作成 → もう一度最初からという非効率なことを行っていたので
絶対に忘れたくなくて記事を書きました。もし、私と同じエラーに苦しんでいる人がいたら試してみてください。

元記事を表示

【Rails】windows10でcredentials.ymlの編集をする

##はじめに
Railsでは各APIキーなどをcredentials.ymlなるファイルで管理?するらしい。
このファイルは暗号化されているようで普通に開いて編集することはできず、コマンドから開くみたいでWindows向けの文献が少なかったので、需要はあまりなさそうですが上手くいった方法を書いておこうと思います。

##環境

“`console:console
Windows10
ruby 2.6.6
Rails 6.0.3.1
VSCode 1.48.1
“`

##まずは普通にやってみる

「rails credentials:edit」でファイルを開く。

“`console:console
C:\Users\sample> rails credentials:edit
“`
すると、

“`console:console
No $EDITOR to open file in. Assign one like this:

EDITOR=”mate –wait” bin/rails credentials:edit

For editors that f

元記事を表示

[Ruby] rqrcodeで連結QRコードを生成する(知識編)

# 連結QRコードとは?

* QRコードには長いデータを最大16個のQRコードに分割して、読み取りの際に結合する「連結機能」が存在します。(詳しくは、[QRコードドットコム](https://www.qrcode.com/about/) 参照)
* 日本においては、病院/クリニックから貰う処方箋で見かける機会が多いと思います。
* サードパーティ系の帳票出力ライブラリなどでは出力機能がサポートされていたりするのですが、なかなかOSSのライブラリでは見つからないので、従来から使っていた [rqrcode](https://github.com/whomwah/rqrcode) を改造して出力できるようにしてみました。
* 今回は、上記の「処方箋」に記録する連結QRコードを出力することをターゲットとしているので、 `8bit_byte` モードのQRコードだけを対象にしています。

# どうすれば連結QRコードになる?

* 通常のQRコードの場合、書き込むデータのヘッダ部分は、以下のような構成になります。

* 尚、QRコードには、1〜40というバージョン(=QRコードの大き

元記事を表示

【個人アプリ作業メモ】simple_calendarでカレンダーを作る

カレンダーの設置はできた。

![スクリーンショット 2020-08-23 午後6.35.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/01bebe48-d5a9-2843-0a59-aa8aabc5fd0b.png)

ここにpostsテーブルの情報を追加していきたい。

https://github.com/excid3/simple_calendar
公式ページを参考に進めていくか。

“`ruby:app/views/calendars/index.html.haml
.calendar
= month_calendar events: @posts do |date, meeting|
= date
– posts.each do |post|
= post.calorie
“`

“`ruby:app/controllers/posts_controllers
class CalendarsController < Application

元記事を表示

each_with_indexメソッドを用いたトレーニング

each_with_indexメソッドを用いて配列から探したい要素を探し出し、
その要素が何番目の要素であるか調べるメソッドを作ってみます。

以下の配列から数を探して何番目に含まれているか結果を示すsearchメソッドを作成してみます。

“`rb
input = [3, 5, 9, 12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
“`

searchメソッドには
とある数値がこのinput配列内に含まれているかのチェック
含まれている場合 → 何番目の要素か出力する。
含まれていない場合 → 含まれていません。と出力する。
このような記述が必要になることが考えられます。

まず調べたい数値が含まれている場合に何番目の要素か知るために
each_with_indexメソッドを使う必要があります。

each_with_index
eachメソッドは配列の要素を取り出せるだけでその要素が何番目であるかは取り出すことはできません。
ところが、each_with_indexメソッドでは「配列の要素」と「何番目の要素なのか」の2つを

元記事を表示

RESTとは。

##はじめに
rails tutorialでREST, RESTfulという文字を毎回目にするけど、なんのことだかわからなかったので、まとめました。

##本題
RESTとは、
###webサイトを作る上での基本的な考え方。
、、、、、です!

##もっと詳しく
考え方を3つ例に出して書きました。

1.**クライアント側とサーバー側**でデータをやり取りするという概念。

2.youtube.comとタイプすれば、当然YouTubeのサイトへ行きます。youtube.comは、**固有のurl**であり、新しいサービスをネット上に公開するときにyoutube.comはもう使えません。

3.送信ボタン、新規作成ボタン、削除ボタンを押したら、データを**POST, GET**できたり、**DELETE**できたりします。(もちろんそうプログラムされていればですが、だいたいそうですよね)


このようなwebサイトのルール、考え方をRESTまたは、RESTアーキテクチャースタイルと言います。(間違ってたらコメントで教えてください!):po

元記事を表示

同じカテゴリーで、複数の名前を一括で呼び出す方法

【概要】
—————————————-
1.結論

2.二重ハッシュとは何か

3.どのように使用するのか

4.ここから学んだこと(エラーの時に使用)

1.結論
—————————————-
二重ハッシュと配列を使い、eachメソッドを使用する!

2.二重ハッシュとは何か
—————————————-
ハッシュの中にハッシュが入っている状態のことで
つまり、下記のことをいいます!

“`Ruby
student = {human: {gender: {name: ‘John’}}}
“`

3.どのように使用するのか
—————————————-
ハッシュと配列の組み合わせは簡単だと思います!

“`Ruby
students = [
{human: {gender: {name: ‘J

元記事を表示

未経験者がフロントエンドの仕事を2年やって、各言語や仕事に抱いた感想

プログラミング言語やフレームワークに関する疑問をググるとだいたいQiitaの記事がヒットして、開くたびにアカウント登録しろしろとうるさいのでキレながらアカウント作りました。サブカルメンヘラクソ女の@hg0です。折角なのでアカウント登録のついでに書こうと思います。

大学は芸術系で、デザインやメディアアートをかじっていた程度なのですが、縁があってWebエンジニア業界に就職することが出来ました。

2年ほど、フロントエンドのお仕事・勉強をさせて頂いて思ったこと、躓いたこと、各言語やフレームワークを使って思ったことを振り返りながら書いてみようと思います。

## 言語・フレームワークについて

### HTML/CSS/JavaScript

「Webサイト制作」「フロントエンド」の勉強をするにあたって、誰もが一番最初に学ぶのは間違いなくこれだと思います。どれも国際的な団体が、仕様や書き方を中立的に定めている、Web業界の標準語で、ブラウザが直接理解できる、共通の言葉です。この記事に登場する様々な技術、フレームワークの全ての根幹になっていて、何を使っても最終的にはこの3つに変換されることにな

元記事を表示

Rails Docker 「Mysql2::Error: Table ‘テーブル名’ already exists」と「Couldn’t find database client」 エラー解決

#この記事でできること
・Dockerfileの記述をちょっと変えることで、データベースを操作できるようにする。

##環境
・Ruby 2.6.6, Rails 6.0.3.2
・Docker,Docker-compose(開発環境)

##抱えた問題
テーブルを削除できたと思って、再度同じテーブルを作成しようとしたら「すでにそのテーブルはありまっせ」エラーが出てきた。

“`ruby:qiita.rb
% docker-compose run –rm web rails db:migrate

Mysql2::Error: Table ‘news’ already exists
“`

##やったこと①
https://bokunonikki.net/post/2018/0214_rails_mysql_error/

参考URLの通り`rails db`を実行してデータベースを操作しようとしたけど、またまたエラーが出た。。。

“`ruby:qiita.rb
% docker-compose run –rm web rails db

Cou

元記事を表示

[Rails] LINE MessagingAPIを使ってecho(オウム返し)Bot を作成する。

#  概要

Web APIを学習するために、LINEのBot開発を行いました。
今回は簡単な送られたテキストをそのまま返すechoBotを作成します。
Railsで開発し、Herokuへのデプロイまで行います。

#  環境

・Ruby 2.6.5
・Rails 6.0.3.2
・PostgreSQL
・Heroku

#  目次
・LINE Developersでchannelを作成
・Bot本体のプログラムを作成(Ruby/Rails)
・Herokuへのデプロイ

##  LINE Developersでchannelを作成
まずはLINEデベロッパー登録を行います。 その後にプロバイダーとチャネルを作成し、必要なAPIキーを取得しましょう。
https://developers.line.biz/ja/docs/messaging-api/getting-started/

公式(上記)を参考にBot用channelを作成します。
簡単に作業を箇条書きにしますと、

・LINE Developersコンソールにログイン
・名前とメールアドレスを入力して開発者アカウントを作

元記事を表示

yarnの”Linking dependencies…”に時間がかかるので、半分まで短縮してみた

# はじめに

Docker上で`yarn add`とか`yarn update`を走らせると
主に、`Linking dependencies…`のところにものすごく時間がかかっていて
調べてみたところ、私の環境固有ではないようで
幾つか対策を試み実際にタイムアタックを行ってみた

# 環境・方法

– Mac OS Mojave 10.14.6
– Docker on mac 2.3.0.4
– Rails 6.03
– Ruby 2.7.1

“`
$ docker-compose run app yarn –version
1.22.4
“`

上記環境にて以下のコマンドに要する時間を計測しました

“`
docker-compose exec app yarn upgrade
“`

# 結果

– Avast = ファイルシールドという機能をon or off
– cache = vlolume: yarnのキャッシュディレクトリをvolumeでマウント
– :cached = docker macでvokumeが遅い場合に有効とされるオプション

元記事を表示

Rails あいまい検索機能実装

##WHY
私は、LIKE句とWhereメソッドを使った検索機能実装方法を調べていました。。。
のだが、サイトで実際に動かせるレベルの解説はナッシング。多分、自分の応用力が足りないのだと思いますが、今回実装までなんとか漕ぎ着けたので、ここにステップを書き記します!

##STEP
①searchアクションを作り、対応するhtmlにform_tagを追加。
 ここで、極めて大事なことがtext_fieldに値を設定すること(値はparamsに格納される)

②indexアクションにLIKE句とwhereメソッドを用いたコードを書く。(キーワードはtext_fieldで定めた値)
 それをインスタンスメソッドに格納。
③あとは、each文を使うなり部分テンプレートを使うなりして検索結果を一覧表示させる!

元記事を表示

rails db:migrateが失敗!

##rails db:migrateを実行した際のエラー

`rails db:migrate`を実行すると
以下のエラーが出ました!

“`
StandardError: An error has occurred, all later migrations canceled:
“`
直訳すると以後の全てのマイグレーションでエラーが発生しキャンセルされましたという内容です。

更に、こんなエラーも出ています。

“`
Mysql2::Error: Specified key was too long; max key length is 767 bytes
“`
こちらのエラーは指定したキーが長すぎるためエラーが発生しているようです。
maxのkeyの長さは767bytesのようです。

##今回のエラーの仮説
keyの長さがmax767バイトなのに対し、keyが長すぎたためエラーが発生しているようです。

railsでデフォルトで生成される255文字のVARCHER型の場合、

◎**utf8mb4は1文字4バイト**、
255×4バイト= 1020バイト
 
767

元記事を表示

RSpecでCSVの値をチェックする

今参画しているプロジェクトでCSVのRSpecは

“`Ruby
expect(csv).to have_content(‘value’)
“`
のような形で書いていたのですが行毎の値を確認する必要が出てきたのでいろいろ調べていたんですが地味に検索で出てこなかったのでメモ。

以下のようなcsvを想定

|column_0 |column_1 |
|—|—|
|value_1 |value_2 |
|value_3 |value_4 |

“`Ruby
it ‘example’ do
csv_content = Sample.csv_content
csv = CSV.parse(csv_content)
# [行番号][列番号]
expect(csv[0][0]).to eq ‘value_1’
expect(csv[0][1]).to eq ‘value_2’
expect(csv[1][0]).to eq ‘value_3’
expect(csv[1][1]).to eq ‘value_4’

# 行毎に比較もできる

元記事を表示

OTHERカテゴリの最新記事