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

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

Rabbitを使ってみたメモ

#? ? この記事は未完成です ? ?

Rabbitを使った発表をしたので、次回のときのためのメモ。
Rabbitはなかなか上達しないので、不完全な記事でもとりあえず投稿。

Github リポジトリ

https://github.com/rabbit-shocker/rabbit

公式サイト

https://rabbit-shocker.org/

## スライドの生成

“`sh
rabbit-slide new \
–id theme-benchmark-ja \
–base-name theme-benchmark \
–markup-language rd \
–name “Kouhei Sutou” \
–email kou@cozmixng.org \
–rubygems-user kou \
–tags rabbit
“`

ただし、GUIもついているので、単に `rabbit-slide` と打つだけでも大丈夫。

![image.png](https://qiita-image-store.s3.a

元記事を表示

作業中ブランチで間違ってpullしてしまった場合の対応

## はじめに

ローカルで機能開発中に、最新のリモートブランチの動作確認をしようと、`git pull` をしました。
しかし、develop ブランチに切り替えるのを忘れており、作業中のブランチにpullしてしまったため、pullを取り消す方法についての備忘録です。
## 前提

– branchAで作業中
– まだコミットしていないファイルがある状態でpullしてしまった

## 対応方法

`git pull` は`git fetch` でリモートの最新状態のブランチを持ってきて、ローカルの現在いるブランチにマージするコマンドなので、pull してきたリモートブランチのマージを取り消しすればよいだけです。

つまりマージする前の位置にHEADを移動させればいいことになります。
### 1. HEADの移動履歴を確認

まずは、現在のHEADの位置を確認しましょう。

“`zsh
% git reflog

# 現在のHEADの位置
e6ec135b (HEAD -> feature/branchA) HEAD@{0}: pull origin HEAD: Merge made

元記事を表示

【Rails】ActionController::UrlGenerationError: No route matchesが発生する原因の1つ

## 背景

Rspec初心者の自分がテストを書いていて「ActionController::UrlGenerationError: No route matches」というエラーに遭遇しました。これでちょっとハマってしまったので同じように悩む人がいたらと思いメモとしてまとめておきます。

## 原因
超初歩的なところで`params`にURLのパスパラメーターを設定していないのが原因でした。

例えば`offices/:office_id/user/:user_id`のURLに設定したコントローラーアクション(show)をテストするためには以下のようにパスパラメーターを`params`に設定しないといけません。

“`
get :show, params: { office_id: 1, user_id: 1}
“`

元記事を表示

【Rails】ポリモーフィック関連先の項目で検索する方法

# はじめに

ポリモーフィック関連先の項目の検索方法を時間をかけて調べたのですが、なかなか出てこなかったためまとめておこうかなと思います。

ポリモーフィック関連の作成方法などはやりません。
関連リンクを下記に載せておくので、必要であれば参考にしてください。。

* Railsガイド – ポリモーフィック関連付け
* https://railsguides.jp/association_basics.html#%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91

# 関連性

以下のような“`Animal“`モデル、“`Panda“`モデル、“`Cat“`モデルの構成を作成します。

“`ruby:animal.rb
class Animal < ApplicationRecord belongs_to :animalable, polymorphic: true end ``` `

元記事を表示

[Rails]JavaScript(jQuery)でサーっとページトップに戻るボタン(FontAwesome)

ページトップ機能はいろんな実装方法があると思いますが、今回はJavaScript(jQuery)とFontAwesomeを使ったページトップへ戻るボタンの実装をしていきます。

スクロールが多いページだとページトップボタンは必須かなと考えます。

ただスマホの場合は指でスクロールが簡単にできるので、スマホのみのサービスの場合は必須とまではいかないかなと。(スマホではあまりページトップボタンクリックされてないみたいなデータがあったような、、、)

完成イメージはこちらです。(右下のボタン)

![スクリーンショット 2021-07-14 21.49.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1554142/bff44f26-6884-fb8d-e855-cc518ddb1669.png)

実際の動作を確認したい方は、ぼくの[ポートフォリオ](https://oogiri-legendroad.com/answers)を確認してみてください。
ある程度スクロールしたら右下に出てくるので、クリック

元記事を表示

これから学習する言語についてまとめた

はじめに

これからプログラミングを学習するにあたって、学ぶ言語について以下にまとめました。
(間違いがありましたら、ご指摘を頂けますと幸いです)

HTML

言語の正式名称 
 ハイパーテキスト・マークアップ・ランゲージ(Hyper Text Markup Language)の略
 
ハイパーテキスト
 文書・画像・図表・音声・動画などのリンクを貼ったり、埋め込むことができる仕組み
 
マークアップ
 サイト内の文書に意味づけをしていく作業。
 HTMLでは文書をタグで囲むことで意味をつけていくことで、
 コンピューターが正しく認識できるようにする。
 
ランゲージ
 言語

開発された経緯 
 WEBページを作成するために開発された言語である

主にどのように利用されているのか
 ほとんどのWEBページにおける基本的な骨組みはHTMLで構成されている

メモ
 SEO「検索エンジン最適化(Search Engine Optimization)」を意識しタグを使うことで、
 検索エンジンが、より正確に文書の中身を理解できるようになる。
 
 
CSS 

言語

元記事を表示

【Rails】新規投稿時に複数のタグ付け機能を実装したい

# 概要
新規投稿(photo)に複数タグ(tags)を付けられるように実装していきます。
※タグは別途、ユーザーによる新規登録機能が実装済みとして考えます。

# 解決方法
①中間テーブル(photo_tags)を生成して、各テーブルとのアソシエーションを記述する。
②複数のタグ選択時にプルダウンのデザインを良くするためにselect2を導入する。
③新規投稿時にタグが紐づくように、photosコントローラー内のパラメーターの記述を編集する。
④タグの複数選択ができるように、ビューファイルを編集する。

※前提として、すでにusersテーブルとphotosテーブル、tagsテーブルの生成が完了しているとします。
それぞれのテーブルのカラムとアソシエションは下記の通りです。

“`ruby:README
### users table
| Column | Type | Options |
| ———— | ————–| ———– |
| first_name | string

元記事を表示

with_optionsで共通のバリデーションをまとめよう!

# with_options
「with_options 〇〇 」と書くことで、
複数の情報に対して共通したオプションを付けることが可能となる

## 記述例
「nickname, last_name, first_name それぞれのカラムが空だと保存できない」というバリデーションを設定する場合

class User < ApplicationRecord validates :nickname, presence: true validates :last_name, presence: true validates :first_name, presence: true end 上記のようにカラムひとつひとつに`presence: true`(カラムが空だと保存できない)というバリデーションを記述することになる **with_options使用した場合** class User < ApplicationRecord with_options presence: true do validate

元記事を表示

Rubyから始めるGo ~ 文法 ~

# はじめに

Rubyを知っている状態で、Goを勉強してみました。

GoはGoogleが開発したプログラミング言語で実行速度が速いのが持ち味らしいです。

# バージョン

| Ruby | Go |
| :—- | :—– |
| 2.7.1 | 1.16.5 |

# 基本形

“`go:main.go
package main

import “fmt” // コンソールに出力する用のパッケージ

func main() {
// コンソールに出力
fmt.Println(“Hello World”)
}
“`

# Rubyで解釈

## 変数定義(例:文字列型)

“`ruby:ruby
message = “Hello World”
“`

“`go:go
// 通常系
var message string = “Hello World”
// 省略形 その1
var message = “Hello World 2”
// 省略形 その2
message := “Hello World 3”
“`

### 論理値型

元記事を表示

1ページに表示できる投稿件数を制限する[kaminari]

#はじめに
投稿一覧を作成している時投稿が何十件も増えたらスクロールが果てしなくなることに気がつきました。

そこでペーネーション機能を知り、実装ができたので忘れないために記事にしました。

![スクリーンショット 2021-07-14 22.26.04(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/4f5dfc02-86cc-e41e-7f51-2f0689f059dc.png)

よく見かけるこちらを実装していきます。

#ペーネーション機能を使う理由

投稿一覧がトップページに表示されるサイトの場合、全ての投稿がトップページに表示されると読み込むまでに時間がかかりますし、かなり読みにくくなってしまいます。
また底が果てしなくなり、フッターまでたどり着くのに時間がかかります。

そんなときにページネーションの機能を実装しておけば表示される項目が一定数を越えると自動的に次のページへ内容を移行してくれるのでものすごい便利になります。

[pikawaka引用](https://pi

元記事を表示

Couldn’t find Blog with ‘id’=show

#エラーについて
paramの値が空か間違っているという意味です。
今回の場合は、投稿→showに遷移する際にこのエラーを検出しました。
#エラーの原因
pathにid指定されていなかったことが今回の原因でした。

“`ruby:controller.rb
def create
@book = Book.new(book_params)
if @book.save
flash[:notice] = “Book was successfully created.”
redirect_to “/books/show”
else
@books = Book.all
render :index
end
end
“`
if文の中のredirect_toにidが指定されていないことが原因あると分かりました。
#解決方法

https://railsdoc.com/page/redirect_to

redirect_toに関するドキュメントを参考にしながら以下のように書き替えました。 

“`ruby:contr

元記事を表示

[Rails]RspecにてKeyError: Factory not registered

##はじめに
Rspecにてテストコードを記述していたところ“`KeyError: Factory not registered“`というエラーが出ました。
悩んだ割にはさくっと解決できました。一応記事に残しておきます。

##解決法
まず、私の場合、FactoryBotで定義していたのがこちらになります↓

“`ruby
FactoryBot.define do
factory :progress do
progress_page {300}
comment {“◯◯と◯◯がよくわからなかったから次回詳しく教えて欲しい” }
association :students_textbook
end
end
“`

こちら実際のターミナル上のエラー↓
![スクリーンショット 2021-07-13 19.15.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/eb1c8646-98f1-36f6-b8e3-96d

元記事を表示

RustとRubyの違い

# RustとRubyの違い

# Mut

– Ruby: 変数は値変えられます

“`ruby
hoge = 1
hoge = 2
p hoge

# 結果: => 2
“`


– Rust: 変数は値変更不可(`immutable`)

“`rust
fn main() {
let hoge = 1;
hoge = 2;

println!(“Hoge {:}”, hoge);
}

“`

– Rust: 変数の値変更したい場合、`mut`を付けないといけません

“`rust
fn main() {
let mut hoge = 1;
hoge = 2;

println!(“Hoge {:}”, hoge);

}
“`

# 型

– Ruby:

元記事を表示

ActiveModel::UnknownAttributeError: unknown attribute ‘password’ for StaffMember.

bin/rails db:migrateコマンドを入力するとターミナルで以下のようなエラー文が。

“`
Creating staff_members….
rails aborted!
ActiveModel::UnknownAttributeError: unknown attribute ‘password’ for StaffMember.
“`

StaffMemberのpasswordが存在しないよと仰ってます。
最初にmigrationファイルを疑ってかかるも、passwordに関する記述は間違っていませんでした。続いてモデルを見に行くことに。

“`staff_member.rb
class StaffMember < ApplicationRecord include EmailHolder include PersonalNameHolder has_many :events, class_name:"StaffEvent", dependent: :destroy validates :start_date ,presence

元記事を表示

【Ruby】行単位、列単位で合計値を求めるプログラムを作ってみた!

[アウトプットのネタに困ったらこれ!?](https://blog.jnito.com/entry/2019/05/03/121235)
 上記の記事で出題してある、「行単位、列単位で合計値を求めるプログラム」の問題を解いてみました。「minitest」もしくは「Rspec」を用いた実装を求められているのかもしれませんが、一旦そこは後回しにすることにしました。

| | col1 | col2 | col3 | col4 | sum
| :— | :— | :– | :—- | :—- | :—-
| row1 | 9 | 85 | 92 | 20 | 206
| row2 | 68 | 25 | 80 | 55 | 228
| row3 | 43 | 96 | 71 | 73 | 283
| row4 | 43 | 19 | 20 | 87 | 169
| row5 | 95 | 66 | 73 | 62 | 296
| sum | 258 | 291 | 336 | 297 | 1182

[「Ruby力向上のための基礎トレーニング」をテストコード付きで

元記事を表示

Tapyrus環境構築(dev)

# Tapyrus 環境構築(dev)

## Tapyrus とは

Bitcoinをベースによりビジネスユース向けにカスタマイズしたブロックチェーン。

詳しくはTapyrusチャンネル[^1], Github[^2]をご覧ください。

## 環境構築

今回は dev モード[^3]での環境構築を行います。

### 前準備

Tapyrus では genesis ブロックを生成する前に鍵を用意する必要があります。(とりあえず試したいだけの方は前準備をスキップして[こちら](https://github.com/chaintope/tapyrus-core/blob/master/doc/docker_image.md#dev-mode)を実行したら環境構築できるかと思います。

鍵の生成には [tapyrusrb](https://github.com/chaintope/tapyrusrb) を使用します。

#### 鍵の生成

キーペアを生成します。今回は拡張鍵[^4]を用意することにします。

tapyrusrb を使用しますので、 `gem ‘tapyrus’` が使

元記事を表示

Railsざっくりアプリケーション作成の流れ(MVC)

# アプリ作成の流れ(MVC)
### 雛形作成
“`
$ rails new  アプリ名

$ rails _6.0.0_ new アプリ名
#railsのバージョン指定 指定しなければ、インストールされているrailsのバージョンが指定される

$ rails new  アプリ名 -d DB
#DBを指定したコマンド  デフォルトはsqlite
“`

### DB作成
`rails new`で新しくアプリケーション部分が作成されたので、次は、DBを作成する。

“`:DB作成コマンド
$ rails db:create
#デフォルトでは、development(開発)にDBが作成される
$ rails db:create RAILS_ENV=production
#production(本番)にDBを作成したい場合はこのコマンド
“`

## ルーティングの設定

ルーティングは、クライアントからのリクエストに対して、どう処理してやるのかの道標です。
app/config/routes.rbにルーティングを記載していきます。

“`ruby: ルーティングの基本

Ra

元記事を表示

rails g modelをしたら「FATAL: Listen error…」が出たので、その時の対処法

今回初投稿という事もあり、色々と不慣れで見にくいとは思いますが、暖かい目で見てください。

タイトル通り、今回rails g modelをした所「FATAL: Listen error: unable to monitor directories for changes.」というエラーが発生したため備忘録として残します。

#現在のrails環境のバージョン
Ruby on Rails バージョン: 6.1.4
vagrant 2.2.17

“`ruby:エラーした時の状況
$ rails g model Hogehoge hoge:hoge hoge:hoge
“`
をした所

“`ruby:エラー文
FATAL: Listen error: unable to monitor directories for changes.
Visit https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers for info on how to fix this.
“`
というのが発生し

元記事を表示

Railsのenumを使ってみた

# はじめに
Railsを触っていてenumって何ってなった背景からこの記事を書いています。
間違っている点等あればご指摘いただけると助かります!

# enumとは?
enumは[列挙型]と言われるもので[列挙型]とは何かというと、プログラミング言語やデータベース管理システムなどにおけるデータ型の一つとされています。また複数の異なる定数を一つの集合として定義するものでもあります。

# どんな時にenumを使うべきか?
ここはあくまで個人的な見解なのですが状態が変化するようなものを判定させたい時などが一番使い道があるのかなと考えています。

(例)どのようなものに使うか

– 頻繁に値が更新されるような物
– 外部から取得するようなデータなど

上記のようなものに使うと状態が変更された時に判定しやすくなるので使い勝手が良いのかなと一個人として思います。

# 参考文献
https://qiita.com/ozackiee/items/17b91e26fad58e147f2e

元記事を表示

自動デプロイでエラーが発生して、解決に至るまで(Capistrano)

## はじめに
オリジナルアプリケーションのサーバをAWSのEC2に変更後、自動デプロイを実行中にエラーが発生しました。
![エラー画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906683/de44f84f-aaef-f316-4454-f9f4226fc69f.png)
解決に至るまでの手順を備忘録として記録します。

## 環境
– Mac OS Catalina 10.15.7
– Ruby 2.6.5
– Rails 6.0.0
– MySQL2 0.5.3

## 結論

sassを使用しているのに、cssファイルが削除されていなかったので、cssファイルのrgbを読み込んだことによるエラーで、

“`ruby:room.css
.select {
box-shadow: 0 1px 0 rgb(0 0 0 / 7%) inset;
}
“`

この1行を削除することにより解決しました!

## 解決に至るまでの手順
– とりあえず検索。QiitaやGoogleで「自動デプロイ エラー

元記事を表示

OTHERカテゴリの最新記事