Ruby関連のことを調べてみた2022年01月16日

Ruby関連のことを調べてみた2022年01月16日
目次

rails newでコケたときの備忘 m1 mac macOS 12.1

#書いた理由

備忘のため。
ググってもダイレクトに出てこなかったので、同じところで詰まっている人の参考になれば。

#起こったこと

`rails new`
を叩いたら以下のメッセージでコケた

“`
/Users/hoge/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require’:
dlopen(/Users/hoge/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/bootsnap.bundle, 0x0009):
tried: ‘/Users/hoge/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/bootsnap.bundle’ (mach-o file, b

元記事を表示

{Rails}uninitialized constant * (NameError)と出た場合の対処法

①やりたいこと
rails cでレコードを確認&作成したいが、uninitialized constant User (NameError)と出てしまう。※Userはモデル名です。

②エラー内容

“`
% rails c
Running via Spring preloader in process 18643
Loading development environment (Rails 6.1.4.4)
irb(main):001:0> User.all
(irb):1:in `

‘: uninitialized constant User (NameError)
“`

③原因
uninitialized constant * (NameError)は、Rubyで「定数やclassが定義されていない」ことを意味しています。
ファイル名の記述間違いなどで、呼びたいクラス名を記述できていない場合などで発生します。
この場合はコントローラー名が間違っていたみたいです。

④解決策
ターミナルを遡ってみると、コントローラーを作成しているとこ

元記事を表示

プログラミング言語別のswitch文

#初めに
switch文に初めて触れたのは、業務改善でC言語を使った時です。
場合によってifの分岐より簡潔に記述できるswitch文は好きな処理です

ライブラリが豊富で汎用性があるpythonを使っていて
「switch文なぜなんでないんだ・・・。」と、ずっと引っかかっていました。

そんなことを忘れかけていた中、twitterを見ている時に
pythonのバージョン3.10.0にてswitchと同じ動作をする
matchが追加されていることを、先日知りました。(リリースが2021年10月の様です)

今まで長文まとめるの時間かかるな、そんないい記事書けないなと
アウトプットはすぐ投稿できるTwitterに逃げていましたが
switch文でQiitaデビューしようと思いました、暖かい目でご覧ください

###書くこと

– match関数とif関数の違い(python)
– プログラミング言語でのswitch文の違い(C言語・Ruby・VBA)

###書かないこと
– 言語ごとの深掘り(数値の場合どうなるか等)

###コード内容
– 色で英語の文字列を日本語で出力

元記事を表示

ログインはしてるけど違うアカウントの人ができることを制限したい

ログイン自体していない人はauthenticate_user!でログイン画面に飛ばせるのは前回の記事の話。
前回の記事→https://qiita.com/JkzW1QJsgjPBxa/items/f834c85a420cd253d6bd

が、ログインはしてるけど**別のIDの人**はこれでは**防げない**。

URLを直接入力しちゃえば別のIDのページに行けちゃう。

例えばID1でログインしている人がてへっとID3の人の情報を覗いたり書き換えちゃったり消しちゃったりは、authenticate_user!では防げない。

ので、コントローラーにそれを防ぐ記述をしてみたよ。
(注意:未解決部分あり)

##before_action
コントローラーで、通ってほしいクラスを書くと、指定するアクションに行く前に通ってもらえる。

“`ruby:コントローラー
class ActorsController < ApplicationController before_action :move_to_root, only: [:show, :create, :update] #←コ

元記事を表示

Rubyのgemのコードリーディングをする時の備忘録

rubyのgemのコードリーディングをする時によく利用したことを 備忘録としてメモ。
(随時更新する。)

※rubyのバージョンは3.1.0

## gemのファイルの場所を知りたい時

`$LOAD_PATH.grep(/serach_word/)`で検索できる。

例)devise関連のgemの場所を知りたい場合

“`
rails c
irb(main):010:0> $LOAD_PATH.grep(/devise/)
=>
[“YOUR_PATH/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/devise-4.8.1/lib”,
“YOUR_PATH/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/devise-4.8.1/app/controllers”,
“YOUR_PATH/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/devise-4.8.1/app/helpers”,
“YOUR_PATH/.rbenv/versio

元記事を表示

【個人開発】海とサーフィンが好きすぎて、海のように見え方が変わるサーフィン日記共有サービスを作ってみた。

# **はじめに**

天気が雪の日は雪が降ります。

![https://i.gyazo.com/8a18102d9f03a7b6e44496ba03032d79.gif](https://i.gyazo.com/8a18102d9f03a7b6e44496ba03032d79.gif)

サーフィンをしたことがありますか?

一度きりの人生、自然と一体になれるこんな素晴らしいスポーツをやってみる事もしないなんて勿体ない事です。

私は海とサーフィンを愛しています。

自身の大好きなものを題材に作品を作って誰かの心に届くものにしたい!そんな想いがあります。

初めまして。りゅうじと申します。

【Twitter】

[https://twitter.com/otokomigakimasu](https://twitter.com/otokomigakimasu)

【今回作ったサービス】

[https://www.namikki.jp](https://www.namikki.jp/)

**私はエンジニアの方は全員海の近くに住んでサーフィンをした方がいいと思っています。**

元記事を表示

[Ruby]バイナリーサーチとは

学習したことのアウトプットとして

バイナリーサーチを用いた問題、理屈はわかるが、実際自分でコードを描こうとすると脳が混乱…。
ので、自分なりに整理してみようかと。

##”バイナリーサーチ”とは
ソート済みのリストや配列に入ったデータ(同一の値はないものとする)に対する検索を行うときに用いられる手法。
中央の値を確認し、検索したい値との大小関係を用いて、検索したい値が中央の値の右にあるか、左にあるかを判断。
それを繰り返し、片側には存在しないことを確かめながら検索していく方法。

例)ある配列にある13の位置を知りたい

|2|3|5|6|`8`|10|11|13|16|
|-|-|-|-|-|–|–|–|–|
4番目の”8″が要素の中央。13は8より大きいので、次は`”10″を左端として検索`

|10|`11`|13|16|
|–|–|–|–|
6番目の”11″が要素の中央。13は11より大きので、次は`”13″を左端として検索`

|`13`|16|
|–|–|
7番目の”13″が要素の中央。検索したい13と合致

「13は配列の7番目」

という

元記事を表示

each.with_indexメソッド(Ruby)

Ruby3.1
Enumeratorクラスwith_index
Enumerableモジュールeach_with_index
要素にインデックスを添えて繰り返す

“`ruby
a = [“a”,”b”,”c”]
a.each.with_index(2) do |s, i|
puts “#{i}:#{s}”
end

2:a
3:b
4:c
#each.with_index(引数)とすることで、引数を受け取る。
#each_with_indexは引数を受け取らないため、添字は0から始まる
“`

元記事を表示

【共同開発】欲しいものを買う優先度をランキング形式で提示するサービス「HoshiMe」をリリースしました!

# はじめに
早速ですが質問です。衝動買いをして後悔した経験はありませんか?

私はよく後悔しています。。
ずっと欲しかったものがあったにも関わらず、違うものを衝動買いしてお金を使ってしまい、本当に欲しかったものを買うためのお金がなくなってしまったことがありました。

そんな悩みを解決するために開発したのが、欲しいものを買う優先度をランキング形式で提示するサービス **『HoshiMe』(ほしみぃ)** です。

https://hoshime.herokuapp.com

# 使用技術
**バックエンド**
– Ruby 2.6.6
– Rails 6.1.4

**フロントエンド**
– TailwindCSS
– JavaScript(jQuery)
– Chart.js

# 主なサービス内容
### 欲しいもの登録ページ
ユーザ登録なしで欲しいもの3つ登録できるように実装しました。
three_items【Rails】kaminariとboostrap4を使ってページネーションをする

##ページネーションとは?
ページネーションとは画像の通り、検索した時などの下に出てくる、今は何ページ目…と表記してくれるもの。
[![Image from Gyazo](https://i.gyazo.com/13f2a53b76005bca00bb3f05e9032cce.png)](https://gyazo.com/13f2a53b76005bca00bb3f05e9032cce)

railsでこのページネーションを導入する際には“kaminari“と言うgemを使っていく。

**手順**
①“kaminari“のインストール
②ページネーションデザインのデフォルトの設定ファイルを作成/編集
③コントローラーの編集
④viewの実装

##①“kaminari“のインストール
今回はboostrap4を一緒に使っていくので、“Gemfile“に“kaminari“と“bootstrap4-kaminari-views“を記入し、“bundle install“する。

“`Gemfile.
gem ‘kaminari’
gem ‘bootstr

元記事を表示

【Ruby】特定の文字列を検知 check_nameメソッド

※初心者向け
※アウトプット練習の為

開発環境
rails 6.0.4.4
ruby 2.6.5

##概要##
対象の文字列の中に特定の値が含まれているかどうかを検知するプログラムを実装。

##問題内容##
以下の要件を満たすcheck_nameメソッドを実装しましょう。

**・名前を入力すると「登録が完了しました」という文字列を出力すること**
**・名前の中にピリオド(.)がある場合は、「 “!エラー!記号は登録できません”」という文字列を出力すること**
**・名前の中に空白(半角のみ)がある場合は、「 “!エラー!空白は登録できません”」という文字列を出力すること**
※今回空白に関しては、半角スペースのみを考えることとします。

**雛形**

“`ruby
def check_name(str)
# 処理を記述
end

puts “登録したい名前を入力してください(例)YamadaTaro”
str = gets
check_name(str)
“`

**出力例**
YamadaTaro → 登録が完了しました
Yamada.Taro→!エラー!記号

元記事を表示

【Rails】rails routesの見方

## rails routesの見方

現在のルーティングを確認する際にroutes.rbフォルダを見に行く方法もありますが、以下のコマンドでも確認できます。

“`
$ rails routes
“`
上記コードを入力すると下のような画面がターミナル上で表示されます。

![スクリーンショット 2022-01-15 11.53.56.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581028/3a0c37c0-bfe9-fad1-8858-d64cb7ba51d5.jpeg)

Prefix:URLのニックネームです。(routes.rb内で「as:ニックネーム」で設定したものがここに表示されます)

Verb:HTTPメソッドです。

URI:URL(例 /books)
※(.:format)というのは、/books.htmlとしてもいいよという意味です。htmlがフォーマットです。

Controller#Action:コントローラーとアクションを意味しています。

元記事を表示

文字列を作るときに%でも作る方法を見つけたので備忘録

#目的
文字列を作るときに%でも作る方法を見つけたので備忘録
#感想
使うんかなぁ

#%q! ! シングルクオートで囲んだことになる
“`ruby:%q!!
puts %q!Hello world! #=> Hello world
“`

#%Q! ! ダブルクオートで囲んだことになる
“`ruby:%Q!!
it = “this”
puts %q!#{it}Hello world! #=> this Hello world
“`

#%! ! ダブルクオートで囲んだことになる
“`ruby:%!!
it = “this”
puts %q!#{it}Hello world! #=> this Hello world
“`

#参考
プロを目指す人のためのRuby入門書

元記事を表示

present?メソッドとnil?メソッドの使い方

#はじめに
 今回はpresent?メソッドとnil?メソッドについてまとめます。どちらも条件分岐の時に便利なメソッドです。条件分岐どうしようと悩んだ時に、このメソッドで解決できたのでまとめます。
この記事は学習備忘録です。

#present?メソッドとnil?メソッドの違い
 present?メソッドとnil?メソッドは、オブジェクトに対してtrueとfalseを返すメソッドです。
使用例としては

present?メソッド→@testsに値が入っている時trueが返される

“`qiitq.rb
@tests.present?
#実行結果
=> true
“`

nil?メソッド→@testsに値が入っていない時trueが返される

“`qiitq.rb
@tests.nil?
#実行結果
=> true
“`

このメソッドを利用して条件分岐を作る事ができます

#present?メソッドとnil?メソッドで条件分岐を作る
 present?メソッドとnil?メソッドを使って、
以下のようにインスタンス変数に中身がある場合は商品を表示させて、中身がない場合は代わりの

元記事を表示

【Rails】RSpecの導入手順(メモ)

# はじめに
チーム開発でテストツールとしてRSpecを導入することになったので調べたことを記録したいと思います。

# 環境
Ruby 3.0.3
Rails 6.1.4
rspec-rails 5.0.2
spring-commands-rspec 1.0.4

## 1. 必要モジュールのインストール
* RSpecをRailsアプリで使用するためには`rspec-rails`というgemが必要です。
* また必須ではありませんが、RSpecのテストをより高速に実行するために`spring-commands-rspec`もインストールしておきます。
* インストールグループとしてtestだけでなくdevelopmentも追加することでテストファイルを作成するgeneratorを使用することができます。

“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘spring-commands-rspec’
end
“`
* bundle installでGemfileに記載したgemをインスト

元記事を表示

Railsチュートリアル(6版)の13章で_form.html.erbを使っていた場合の戸惑い解消

# はじめに
プログラミング初学者の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。

Railsチュートリアル(Rails6版)の13章「13.3.2マイクロポストを作成する」の「リスト 13.43、13.44」で戸惑った部分について共有です。

## 戸惑ったポイント
10章の「10.1.1編集フォーム」の演習2をやった場合、`new.html.erb`と`edit.html.erb`の一部を`_form.html.erb`としてパーシャルにするため、テキストと違いが出て、どの部分を`f.object`にするか戸惑いました。

# 結論
`new.html.erb`と`edit.html.erb`は書き換え不要で、`_form.html.erb`を1箇所変えるとOKです。

“`ruby:_form.html.erb
<%= form_with(model: @user, local: true) do |f| %>
<%= render 'shared/error_messages', object: f.ob

元記事を表示

Ruby 中級者になるために絶対に理解しておかなければならない知識

こんにちは!石田佳介です!

今回の記事では、RoR初心者が中級者になるために絶対に抑えておかなければならないことを記事にします。

それは、オブジェクト、インスタンス、インスタンス変数、クラス

この4つを人に説明できるようになるくらい理解していないと絶対に更なる高みにはいけません。

それはなぜか?理由は、めちゃくちゃ大事な基礎であり、RoRの根幹になるものだからです。いくら多くのメソッドをおぼえても、上の4つを完璧に理解していなければ、実務に入ってもいつか頭打ちがきます。

こんな言っている僕ですが、ぼくも最近理解したので、心配しないでくださいね(笑)

今回使用する言語はrubyを使うので、ご了承ください

それでは本題に入りましょう

そもそもオブジェクトって?

この言葉よく聞くとおもいますが、そんな難しいことを言っているわけではありません。よく「モノ」と表現されます。現実世界でイメージしてみるとよく分かると思いますが、世の中には、モノであるあふれてますよね。スマホ、パソコン、本、等々あげたらキリがありません。

それはわかったけど、プログラミングの話をしてくれよ!っていう

元記事を表示

【Ruby】任意の数字が配列の中の何番目に格納されているかを確認 searchメソッド

※初心者向け
※アウトプット練習の為

開発環境
rails 6.1.4.1
ruby 2.6.5

##概要##
任意の数字が配列の中の何番目に格納されているかを確認できるプログラムを実装。

##問題内容##
以下の配列から任意の数字を探して何番目に含まれているかという結果を返すsearchメソッドを、each_with_indexを用いて作成しましょう。

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

**雛形**
以下の雛形のコードを参考に解答しましょう。

“`ruby
def search(target_num, input)
# 処理を記述
end

input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
# 呼び出し例
search(11, input)
“`
**出力例**
search(5, input) → 2番目にあります
search(12, in

元記事を表示

Railsでコメント機能のajax化

##コメント機能のajax化
[前回のajax化の記事](https://qiita.com/mmaumtjgj/items/ef494de60a36f2e769b1)にてどんなものかある程度理解したので、この記事ではお気に入りボタンの実装を例としてしたが、今回はコメント機能の投稿と削除のajax化の備忘録として記載。

**手順**
①コントローラーの修正
②“remote: true“の追加や“class“、“id“の指定
③“js.erbファイル“の追加

##①コントローラーの修正
“redirect先“を削除

“`修正前comments_controller.rb
class CommentsController < ApplicationController def create comment = current_user.comments.build(comment_params) if comment.save redirect_to board_path(comment.board), success: t('

元記事を表示

docker compose環境のrailsでDB関連のエラーが出たら確認することまとめ

# 環境
docker compose
mysql
rails6
rails初心者が色々迷走しているうちに様々なエラーに出会ったのでまとめてみます。

# エラー
データベースがない時に出るエラーです。

“`error.rb
ActiveRecord::NoDatabaseError: Unknown database
“`
## 対応
データベースがあるかを確認します。

“`checkdb.sh
#execコマンドでrailsコンテナの中に入ります。
$ docker exec -it xxxxxxxxxx bash
#railsコンテナの中からmysqlコンテナに接続しつつmysqlを立ち上げます。
root@xxxxxxxxxx:/app# mysql -u root -p -h db
#ここでmysqlが立ち上がらない場合そもそもdockerコンテナ同士の通信がうまく行っていないので下の「dockerコンテナ間の通信を確認する」を見てください。
#mysqlが立ち上がった場合はshow databasesでデータベースがあるか確認します。データベース名はrailsアプ

元記事を表示

OTHERカテゴリの最新記事