Ruby関連のことを調べてみた2021年03月26日

Ruby関連のことを調べてみた2021年03月26日

Rubyでボーナスドリンク問題のコードを書く

##はじめに
この記事は以下のサイトにあった問題を解いてみたものです。Rubyのアウトプットを目的として作成しました。
[アウトプットのネタに困ったらこれ!?Ruby初心者向けのプログラミング問題を集めてみた(全10問)]
(https://blog.jnito.com/entry/2019/05/03/121235)

##問題

上記記事より引用。
>「ある駄菓子屋で飲み物を買うと、空き瓶3本で新しい飲み物を1本プレゼントしてくれる。最初に100本購入した場合、トータルで何本飲めるか」という小学校3年生の算数の問題をベースにしたプログラミング問題です。
>
| 購入した本数 | 飲める本数 |
|:———-:|:—————-:|
| 0 | 0 |
| 1 | 1 |
| 3 | 4 |
| 11 | 16 |
| 100 |(プロ

元記事を表示

Rails6 Webpacker::Manifest::MissingEntryError in ~~のエラーの解決

“`
rails webpacker:install
“`

元記事を表示

Bootstrap導入の流れ1

Bootstrapは有名なWebフレームワークで、CSSを細かく指定せずにサイトをある程度形にできる。レスポンシブにも対応してくれる便利なツール。Bootstrapを導入するとWebアプリケーションを効率よく開発できる。

① gem ‘webpacker’, ‘~> 4.0’ (※既に記述あり)

② jQueryとBootstrapを導入
  % yarn add jquery bootstrap popper.js

③ package.json に
  ”bootstrap”: “^4.5.3”,
“jquery”: “^3.5.1”,
“popper.js”: “^1.16.1”, を記述。

④ config/webpack/environment.js に
  const webpack = require(‘webpack’)
environment.plugins.append(
‘Provide’,
new webpack.ProvidePlugin({
$: ‘jquery’,
jQuery: ‘jque

元記事を表示

gem installでpermissionエラーになった時の解決方法

##gemをインストールしようとするとエラーが出る…

rspecのgemをインストールした際に以下のようなエラーに遭遇しました。

“`
$ gem install rspec
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
“`

エラーログをみると`You don’t have write permissions`と書いてあります。

意味が理解できずに色々な記事を参照すると、どうやら「**システムのrubyを利用しているため、権限不足でgemのインストールができない状態**」らしいです。
ルート権限でシステムのRubyにインストールをしてもいいのですが、開発環境ではrbenvでrubyを管理することをおすすめしているそうなので、今回はその手順を踏んで行こうと思います。

以下では、今回遭遇したエラーをrbenvでRubyを管理することで解決す

元記事を表示

Rooで取り込んだExcelの日時のデータがうまく反映されない

こんにちは
###エラーが出た背景
rooを使ってexcelの日時のデータを取り込むよう開発を進めました。
ある程度できあがって確認しようとすると、下記のようなエラーが出ました。
おそらく, `in_time_zone`メソッドがinteger型に対応できていないと
下記に
– エラーメッセージが出た部分
– 対応するメソッド(controller)
– エラーが発生したファイル
を載せています。

![Screen Shot 2021-03-22 at 1.02.11 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593744/d9013f00-df80-7e60-56e2-6bc6c8125160.png)

“`app/controller/ir/meeting_logs_controller.rb
def time_from_excel_date_time(excel_date, excel_time)
date = excel_date.in_time_zone

元記事を表示

mimemagicエラー

gemを入れてbundle install を行ったところ、以下のエラーが出ました。

Your bundle is locked to mimemagic (0.3.5), but that version could not be found
in any of the sources listed in your Gemfile. If you haven’t changed sources,
that means the author of mimemagic (0.3.5) has removed it. You’ll need to update
your bundle to a version other than mimemagic (0.3.5) that hasn’t been removed
in order to install.

んん、よく分からん。。とりあえずGemfile.lockで関係してそうな内容を消して再度bundle install をしたら直りました。

元記事を表示

Twitter API 登録の仕方(2021年3月17日)

【欲しいもの】
bot を作るために必要なもの。
1. Access Token
2. Access Token Secret
3. Consumer Key
4. Consumer Secret
これらを以下で取得していく。

# 準備編

### 1
ここにアクセスする

https://developer.twitter.com/en

### 2
Apply(右上)

### 3
Apply for a developer account

### 4
目的を選ぶ(今回はbotを作りたいのでhobbyist > making a bot)

### 5
get start

### 6
名前とかemailとか入力する

### 7
何に使うのか入力する
利用規約に同意する
色々進めて、、、

### 8
submit application
メールが送られたっぽい

### 9
メールにある[Confirm your email]をクリック
メールアドレス、パスワードを打って認証完了する。

### 10
「今あなたのレビューをしているよ!!」的なメールが届く。
他の人の

元記事を表示

allメソッドって良くないの?って話

こんにちは。たにーです。

今回は、チーム開発で少し議論した

「アクション内でのでのallは良くない?」についてです。

“`items_controller.rb
@items_all = Item.all
“`

#結論

結論から言うと、悪いことはないが
場面によっては使い方を考えなくてはいけないということです。

カリキュラムで作成したアプリでは、
レコード数がmax10個ぐらいで試していたこともあり、取り出すデータ量が少ないため問題なかった。

もし、その数が100個、1000個、1万個あった場合だと、
情報量が多すぎて、処理速度が遅くなり、ページのロードが遅いなどが起きるかもしれません。

なので、その処理速度をより早くする書き方をご紹介します。

#状況について

– railsでwebアプリケーションを開発中。
– 販売している商品数をviewに表示させたい。
例:( 商品一覧(全:〇〇件) )
– viewとcontrollerには下記のように書いていた。

“`rb:index.html.erb

N + 1問題を解決する

はじめに仕込んでいたgem bulletが警告ログを発したので解決してみます。
![スクリーンショット 2021-03-25 19.32.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698694/f56e2289-e0a3-c077-c666-f8257ef6e957.png)

##N + 1問題とは?
データベースへのアクセス回数が必要以上に多くなってしまう現象の事。モデル間のアソシエーションで発生します。

##gem bulletとは?

N + 1問題が発生してる箇所を警告で教えてくれるgemです。

##現状

“`
CareRecipitent Load (0.4ms) SELECT “care_recipitents”.* FROM “care_recipitents”
↳ app/views/caregiver/tops/index.html.erb:1
Caregiver Load (0.5ms) SELECT “caregivers”.* FROM “care

元記事を表示

jsファイル デバックする方法(binding.pry)

## はじめに
railsではよく`binding.pry`を使用して値が入っているか確認する際によく使いますが、
jsはどうやって調べられるのか?
可能であれば動きをみた方が理解度も上がりますよね!
とても簡単です^^それでは行きましょう!

# 手順
1.検証ツールを開き。
`Sources`を選択します。![スクリーンショット 2021-03-25 18.54.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/859347/0f00b7dc-0964-dfb0-122f-d4362510f92f.png)

2.jsファイルを選択して開きます。
![スクリーンショット 2021-03-25 18.57.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/859347/05dd766f-5f98-9b12-8846-557ad607dd9e.png)

3.処理を止めたい行を選択します。
![スクリーンショット

元記事を表示

Rubyでビンゴカードを作るコードを書く

##はじめに
この記事は以下のサイトにあった問題を解いてみたものです。大変に工夫の余地があるコードになってしまいましたが、一応完成したので初心者だった頃の自分をいつか省みるために作成しました。
[アウトプットのネタに困ったらこれ!?Ruby初心者向けのプログラミング問題を集めてみた(全10問)]
(https://blog.jnito.com/entry/2019/05/03/121235)

##問題
上記サイトより引用
>1から75までの数字をランダムに配置して、ビンゴカードを作成するプログラミング問題です。
ただし、実際のビンゴカードのルールに沿って、各列は以下のような仕様で数字を出力する必要があります。

>B:1~15のどれか
I:16~30のどれか
N:31~45のどれか
G:46~60のどれか
O:61~75のどれか

[CodeIQに「ビンゴカード作成問題」を出題しました。みなさんの挑戦をお待ちしてます!](https://blog.jnito.com/entry/2015/02/09/101018)
に詳細が記されています。

##完成したコード

“`ruby
c

元記事を表示

【初学者向け】uninitialized constantエラー

# uninitialized constantエラーが起きる原因
uninitialized constant errorを直訳すると「初期化されていない定数のエラー」という意味:expressionless:
Railsでは「定数やclassが定義されていない」ことを意味:thinking:
uninitialized constantは名前が間違っているという意味のNameErrorということ:rolling_eyes:
つまり、ファイル名の記述間違いなどで、呼びたいクラス名を記述出来ていない場合などでエラーが発生します。

#実際に出たエラー
NameError in Users::RegistrationsController#create
uninitialized constant User::GenderId

#ここから考えたこと
う〜ん:thinking:User::GenderIdでエラーが発生してるみたいだから、GenderIdに関わる内容を確認してみたほうがよさそうだな。Railsでは「定数やclassが定義されていない」ことを意味する。。。ということはcla

元記事を表示

RailsのGPL混入問題についてまとめ

## 概要
RailsのGPL混入問題についてまとめました。間違いがあればご指摘ください。(2021/3/25現在)
https://github.com/rails/rails/issues/41750

ここには3つの問題がある。

– **Railsが依存しているmimemagicのライセンスがMITからGPL2.0になった**
– もともとGPLライセンスのものが混入していたのにMITになってしまっていた
– **これにより、Railsのbuildができなくなった**
– Railsが依存しているmimemagic0.3.5が削除されたことが原因
– **Railsの依存モジュールにGPLライセンスのものが混入することとなった**
– mimemagicを0.3.6以降にすればbuildはできるが、GPL問題は解決しない

## mimemagicのライセンスがMITからGPL2.0になった
mimemagicはMITからGPLに変わった。
[mimemagicのissues #97](https://github.com/minad/mimemagic

元記事を表示

Dockerでgemを追加しbundle installでエラーになる

#エラーの状況

gemを追加後、反映させるため以下のコマンドを実行したがエラーになる

“`:ターミナル
$ docker-compose exec web bundle install
ERROR: No container found for web_1
“`

#原因
前回の時はdocker-compose run webの使い方だったが、docker-compose execをあまりわからず使っていたのが原因

run:コンテナ起動してコマンド実行
exec:起動中のコンテナでコマンド実行 <= 重要! なのでexecで実行する場合は予めdocker-compose upなりでコンテナ起動させてないと使えないとのこと エラーは勉強になるな、解決しないと焦るけど笑 いうてまだまだ表面の理解だけなので手を動かして覚える #参考にさせていただいたURL https://qiita.com/Nishi53454367/items/9ca85eede43e492c7cd4

元記事を表示

投稿機能の実装 方法①

**前提モデル**
`Tweet` 投稿したツイートを保存するテーブルの管理
`User` ユーザー機能(ログインなど)で使用するユーザー情報を保存するテーブルの管理
`Comment` ツイートに行うコメントを保存するテーブルの管理

**1.newアクションのルーティング設定**
config/routes.rb

“`
Rails.application.routes.draw do
中略
resources :tweets, only: [:index, :new]
end
“`
**2.newアクションをコントローラーに定義**
app/controllers/tweets_controller.rb

“`
class TweetsController < ApplicationController 中略 def new @tweet = Tweet.new end end ``` **3.投稿画面のビューを作成** 1.app/views/tweetsにnew.html.erbというビューファイルを作成 2.ビューファイルを編集してフ

元記事を表示

seedで10人ユーザーを作って1人5つの記事を持たせるユーザーを作成する

### 開発環境
環境
ruby:2.6.4
rails:6.0.3
userにはusersモデル、username,email,password,password_confirmation(確認用)を持たせ、
投稿にはarticlesモデル、title,textカラムを持たせています。
画像のアップロードはactivestorageを使用してavatarとしています。
gem ‘Faker’を使用しています。
### 題名の通り早速作っていきます
アカウント=10人
1人のアカウント=5つのarticle(記事)
Faker::Name.nameはランダムに名前を作成してくれるfakerの機能、
Faker::Internet.emailはランダムにemailを作成してくれる機能、
Faker::Hacker.say_something_smartはランダムで文字を作成してくれる機能だと思います。
これに関してはあまり理解しておらずとりあえず文字を作成してくれたので使用しています
指定の文字を入れたい場合は
titel: “任意の文字”
text: “任意の文字”
とす

元記事を表示

README 画像挿入の仕方

## README 画像挿入
Qiita記事では多くのREADMEについての画像の挿入の手順を解説している記事があります。
今回私は、上記記事でのやり方とは違った、googleの拡張機能を使用した画像作成・READMEに画像挿入までの手順を解説します!!

というのも、閲覧記事で参考になったものは多くありましたが、googleの拡張機能を使用した画像挿入についての記事は、調べたところでは見当たらなかったので、
自身で挿入から、解決まで行いました。

ご参考までにしていただけたら幸いです。

## なぜ他記事を参考にしなかったか
今回、自身で作成したポートフォリオでは、トップページだけでもかなり下にスクロールして全体像が見えるという、課題がありました。
通常のスクリーンショットでは、一画面に収まりせんでした。
gif画像でもgyazoを使用して全体を撮影することも実行しましたが、
撮影秒数が決められたなか全てを撮影するのは困難且、見にくい画像となってしまいました。

そこでgoogle拡張機能の「Awesome Screenshot」を使用し、全体を撮影できるようにしました。

## A

元記事を表示

Ruby on Railsの日付操作まとめ

現在日付/時刻

“`ruby
pry(main)> Time.current
=> Thu, 25 Mar 2021 11:36:35 JST +09:00
pry(main)> 0.days.ago
=> Thu, 25 Mar 2021 12:16:53 JST +09:00
“`

nowよりcurrentを使うほうが良いらしい。
https://qiita.com/kodai_0122/items/111457104f83f1fb2259

特定の日付

“`ruby
pry(main)> Time.new(2021, 3, 25, 11, 22, 33, 00)
=> 2021-03-25 11:22:33 +0000
“`

●日前/●日後

“`ruby
[9] pry(main)> Time.current.yesterday
=> Wed, 24 Mar 2021 11:47:08 JST +09:00
[10] pry(main)> Time.current.tomorrow
=> Fri, 26 Mar 2021 11:47:16 JST +09:00

元記事を表示

RSpec 多対多関係 モデルテスト(例.Tagモデル)

#はじめに
rspecのTagのmodelテストをする際、中間テーブル(post_tag)を介したやり方に苦戦したため、
factory_botを用いて、多対多関係 (has_many through) のテスト作成方法をご説明致します。

##テーブル
`post`と`tag`の間に`post_tag`テーブルがある状態です。

スクリーンショット 2021-02-27 11.08.49.png

#到達点
以下の2点を達成する
・中間テーブルを介したmodelテストのFactoryBotを理解する
・中間テーブルを介したmodelテストの記述方法を理解する

##流れ
① 各モデルのvalidatesを確認
② FactoryBotの記述
③ modelテストの記述

#① 各モデルのvalidatesを確

元記事を表示

バリデーションの書き方(Rails)

#バリデーションとは
バリデーションは、正しいデータだけをデータベースに保存するために制約をかける事です。
`model`に書くことでデータベースに保存する前に受け取った情報を正しいのか判定させます。

##空でないこと
“`ruby:
validates :name, presence: true
“`
##空であること
“`ruby:
validates :name, absence: true
“`
##一意性であること(重複していないこと)
“`ruby:
validates :name, uniqueness: true
“`
##文字数制限
“`ruby:
validates :name, length: { minimum: 2 } # 2文字以上
validates :name, length: { maximum: 50 } # 50文字以下
validates :name, length: { in: 2..50 } # 2文字以上50文字以下
validates :name, length: { is: 6 } # 6文字のみ

元記事を表示

OTHERカテゴリの最新記事