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

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

Python,JavaScript,PHP,Ruby,Perlのインストールの比較

Python,JavaScript,PHP,Ruby,Perlのインストールの比較

# Python

https://qiita.com/disk131/items/a4f74ea9aa9c173cc71a

# JavaScript

https://qiita.com/sefoo0104/items/0653c935ea4a4db9dc2b

# PHP

https://qiita.com/yuya00/items/45312f386a7a0d5d76de

# Ruby

https://qiita.com/Rock22/items/31ab75c87fcf3122f357

# Perl

https://perlzemi.com/blog/20180820153471.html

元記事を表示

【Rails】検索フォームをヘッダーに追加する

# はじめに
検索フォーム(検索窓)を実装する。
**仕様**
・ヘッダーに検索フォームを追加し、テンプレートを崩さない。
・form_withを使用する。
・虫眼鏡マークと検索フォームが重ねる。
・検索キーワードが空白の時は、全ての投稿を返す。
・検索キーワードがタイトルと内容に一致するを記事を検索する。
![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/3bd31692-4117-5184-6247-85c94b2d6e58.gif)

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
4|sass-rails|5.1.0

# 実装
# routes.rbの設定

元記事を表示

コード譜投稿アプリを作る #1(アプリ構築)

[←前回の記事](https://qiita.com/t_sekky/items/de8768b9826d98601164)

今回はひとまずRailsのAPIモードとNext.jsのアプリケーションを作っていきます
環境はM1macです

## Railsアプリ作成
[この記事](https://qiita.com/ydammatsu/items/a2fbae968149bf2c1999)に書いてあることを~~コピペ~~参考にしてdockerを使って構築しました
ruby3系とRails7系は初めてだけど試すのには絶好の機会だしまぁええでしょ

詰まった点としては`db:create`する際に以下のようなエラーが出ました
“`
/lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29′ not found (required by /usr/local/bundle/gems/nokogiri-1.13.0-aarch64-linux/lib/nokogiri/3.1/nokogiri.so) – /usr/local/bund

元記事を表示

【Ruby】二次元配列を複製する

結論だけ知りたい方は[コードへジャンプ](#二次元配列の複製方法)!

## 二次元配列を”複製”したのに、コピーを操作するとコピー元も変わってしまう…
AtCoder Beginner Contestにてそんな事象にぶつかってしまい、時間内に解決できませんでした。

たとえば
“`ruby
arr = [[1,2,3],[4,5,6],[7,8,9]]
“`
このような二次元配列を想定します。
これをdupで複製し、項を操作すると…
“`ruby
copy = arr.dup
copy[0][0] = 100

p arr
# => [[100,2,3],[4,5,6],[7,8,9]]
# copyはarrとは別のオブジェクトなのに、copyを操作するとarrも変わってしまった。
“`
複製したのになぜコピー元が影響を受けてしまうんだろう?と頭を捻りました。

## なぜコピー元が影響を受けてしまうのか?
copyは確かにarrを複製した別のオブジェクトですが、copy[0]が持っているのはプリミティブな値ではなく、[1,2,3]を格納している参照値(ざっくり言うとメモリア

元記事を表示

PHPerでLaravel使いの僕がRailsでハマったこと(環境構築編)

# Ruby on Railsやろう!
ある日突然急にRailsがやってみたくなって手を出した男の奮闘記です。
またなんかあったら追記します。

# 環境
OS: Windows11
エディタ: Intellij Idea
ターミナル: Windows Terminal
Rubyインストーラー: Ruby+Devkit 3.1.2-1 (x64)
Rubyバージョン:3.1.2p20
Railsバージョン:7.0.3.1

# 第1の壁:「エラー: データベース ‘msys’ は無効です (無効または破損したデータベース (PGP 鍵))」が乱立
Rubyのパスも通った、railsコマンドも入った、さて「rails new」をしよう!
・・・とやる気のところに立ちはだかる無数のエラー
「エラー: データベース ‘msys’ は無効です (無効または破損したデータベース (PGP 鍵))」しか記録に残して置かなかったのですが、他にも鍵がないとかのエラーが出てたと思います。
## 解決策:
MSYS2 development toolchain と Run ‘ridk install’

元記事を表示

【Rails】Fromオブジェクトパターンを使用したActiveStorageの拡張子バリデーションを設定する方法

大阪でRailsを中心に学習している薬剤師エンジニア(初学者)こと、ヨマ([@yoma_2003](https://twitter.com/yoma_2003))です!
Fromオブジェクトパターンを使用したActiveStorageの拡張子バリデーションを設定する方法をまとめます。

※おことわり※
断定口調でまとめますが、初学者であるため間違い等あればご指摘頂けると嬉しいです。

# はじめに

### やりたいこと

以下の様にPostモデルとCommentモデルに同時にデータを登録するため、PostCommentモデルというFormオブジェクトを作成した時、
**PostCommentモデル(Formオブジェクト)において、Postモデルで保存する画像データに拡張子のバリデーションを設定したい。**

![formobj.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711042/32c4781c-d08f-8436-269a-7b69bb817193.png)

“`ruby:p

元記事を表示

【Ruby on Rails】link_toの中でhtmlタグを表示させずにタグの内容だけ適用させる方法

## やろうとしていたこと
“`
p= link_to “#{use_tmp(gorira.name)}”, user_path
“`
こんな感じのコードをrailsのslimを使用して書いていた。
ちなみに↑の“`use_tmp“`はapplication_helper.rb内に記述したヘルパーメソッド。
このヘルパーメソッドでは、文字を青く表示する処理を聞いた。

そのため、ユーザーが実際にみる画面では文字が青く表示されれば良い。

が、うえの書き方だと
“`
ごりら
“`
このように、ユーザーが見る画面でもspanタグが表示されてしまう状態だった。

## 解決方法
“`
– gorira_name = “#{use_tmp(gorira.name)}”
p= link_to “#{gorira_name}”.html_safe, user_path
“`
このようにすると、htmlタグは表示されず、ごりらという文字が青で表示されるようになった。

元記事を表示

【Rails】bundlerでプロジェクト毎にgemを管理する根拠と方法(5分)

## 本記事の趣旨

初学者の方でもわかりやすいように、5分で読めるくらいの軽さで下記の項目についてまとめます!
1. bundlerとは何か?
1. プロジェクト(アプリ)毎にgemを管理する根拠
1. bundlerを使ってプロジェクト毎にgemを管理する方法
1. プロジェクト毎にGemを管理するときはgitignoreしよう

※ OSはmacを想定しています。
※ rbenvを使用していることを想定しています。

## bundlerとは何か?

ざっくり言うと、**Gemfileに書いているGemをよしなに管理してくれる超便利マン**です。

各種のGemを人の手で管理すると、非常にだるい、だるすぎるので、bundlerさんの力を借りて簡単に管理するのが定石となります。

下記の記事でわかりやすくまとめてくれているので、詳しく知りたい方は参照してください。
https://pikawaka.com/rails/bundler

## プロジェクト毎にgemを管理する根拠(メリット)

上記の通り、Gemをよしなに管理してくれるbundlerさんですが、デフォルトではinst

元記事を表示

Python,JavaScript,PHP,Ruby,Perlの入門の比較

Python,JavaScript,PHP,Ruby,Perlの入門の比較

# Python

https://qiita.com/ponnhide/items/870f0e6b1ae50f201f07

# JavaScript

https://qiita.com/ab-boy_ringo/items/23f60e051e3022f2a599

# PHP

https://qiita.com/mackeyTA/items/069900b5c2366fb30e3a

# Ruby

https://qiita.com/oekazuma/items/6daa19248353c6a81146

# Perl

https://perlzemi.com/

元記事を表示

【RSpec】have_xpathの使い方|テキストフィールドの中身をテストする

# have_xpathの使い方
have_xpathを使うとタグの有無を確認することができます。

“`ruby
#ページ内に指定した属性が’hoge’である指定したタグがあるかテストする
expect(page).to have_xpath “//タグ名[@属性名=’hoge’]”

#ページ内にvalue属性が’サンプルデータ’であるinputタグがあるかテストする(テキストフィールドの中身が’サンプルデータ’かどうかテストする)
expect(page).to have_xpath “//input[@value=’サンプルデータ’]”
“`

※XPathとはなんぞや?という人は以下のサイトを参考にしてください。
[【図解】XPathとは?基本概念から書き方までわかりやすく解説!](https://www.octoparse.jp/blog/xpath-introduction/)

# 参考
– [Capybara RSpecでのマッチャ、セレクタ 「こんなときどうするの」その1](https://qiita.com/kenzan100/items/9642615bad

元記事を表示

Rubyで可変長配列を実装する

# はじめに

Rubyの[配列](https://docs.ruby-lang.org/ja/latest/class/Array.html)は可変長配列であり、両端キューです。それは `shift`, `unshift`, `push`, `pop` のメソッドを持っている点から明らかです。
ではRubyで可変長配列を実装するとは何を言っているのでしょうか?
それはもしRubyが配列の要素数が増減したときに言語側でメモリの動的確保を行なってくれない言語だったらを仮定して、可変長配列を実装してみました。
両端キューには対応していませんが、C++の[vector](https://cpprefjp.github.io/reference/vector/vector.html)を参考にスタック構造を実装しました。
劣化車輪の再発明でしかありませんが、勉強として作成したためアウトプットします。

# 実装

“`rb
class MyVector
def initialize(*arr)
@heap = arr
@size = arr.size
@max_si

元記事を表示

【Rails】同一名のmodule内でクラスを呼び出す方法

## 状況
一見問題なさそうだが
“`User.hoge_method“`で“`User“`モデルではなく、“`Parameters::User:Module“`の“`User“`が呼ばれてしまっているためエラーが起きている。
moduleとクラス名が同一のため起きていると考えられる。
“`ruby
class User
def hoge_method
puts ‘hogeメソッドを実行’
end
end

module Parameters
module User
class ProfileParameter
def fuga_method
User.hoge_method
end
end
end
end
end
“`

“`
NoMethodError:
undefined method `hoge_method’ for Parameters::User:Module
“`
## 解決法

クラス名の前に“`::“`をつける。
ちな

元記事を表示

【Rails】l(エル)メソッドを使用して時刻表示を日本語化rev1

# はじめに
[こちら](https://qiita.com/vaza__ta/items/268cad88235c4de7940c)の記事で一部、よりDRYな書き方をアドバイスいただいたので、その方法で実装をする。ご指摘いただき、ありがとうございます。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |

# 実装
下記のように、lメソッドを使用して、時刻を表示する。
“`ruby:posts/show.html.erb
# <%= post.created_at.to_s(:datetime_jp) %>
# 上記ではなく、下記で記載する。
<%= l object.created_at %>
“`
application.rbに下記を定義する。
“`ruby:config

元記事を表示

rbenvでrubyをアップデートする(mac版)

# rubyアップデートが上手くいかなかった・・・
以下参考に実行したところ・・・
https://prog-8.com/docs/ruby-env

エラーは出なかったものの上手く反映されなかったため備忘録として書いときます。

### ※当記事はprogateで実行してみて出来なかった方に向けて書いています!

### その為、上のprogateのRubyの開発環境を用意しよう!をやってみて上手くいかなければ参考にしてみてください!

# なぜ出来なかったのか?
正直わからなかったので調べた所・・・
どうも設定ファイルが読み込まれていない?と思ったので、
vimで確認編集してみました。

# 解決策
ターミナルで下記を順番に実行してください。
~~~
vi ~/.zshrc
~~~

下記を追記してください。
~~~
export PATH=”$HOME/.rbenv/bin:$PATH”
eval “$(rbenv init – zsh)”
~~~
#### ちなみにprogateで実行された方はすでに同じようなのが入力されていると思いますので、
#### exportから後

元記事を表示

Python,JavaScript,PHP,Ruby,Perlの基本文法の比較

Python,JavaScript,PHP,Ruby,Perlの基本文法の比較

# Python

https://qiita.com/AI_Academy/items/b97b2178b4d10abe0adb

# JavaScript

https://qiita.com/Fendo181/items/cca476da99e8f09b6b97

# PHP

https://qiita.com/shosho/items/ffbb44eeec9d68b21d99

# Ruby

https://qiita.com/Fendo181/items/eb2cb17f32d99aa01f59

# Perl

https://perlzemi.com/blog/20091226126425.html

元記事を表示

【Rails】turbolinksが原因で、一度リロードしないとjsが反応しない

# はじめに
[【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたい](https://qiita.com/vaza__ta/items/4a8895889ed8da683845)
上記の記事で書いたものが、一度ページをリロードしないとjsが動かない(高さが変わらない)ことが起こった。
これを改善するために、turbolinksを修正していく。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 4 | turbolinks| 5.2.0 |
| 5 | webpacker | 4.0.7 |

# 実装
[【Rails】リロードしないとJavaScriptが動かない!【簡単に解決】](htt

元記事を表示

【Rails】モデルに複数のタグを付ける方法

## はじめに
近年のSNSやブログ等では、1つの投稿に対して、複数のタグを付けられることが一般的になっています。
しかし、これらの機能の実装を丁寧に説明した記事はあまりないと思いました。
そこで、自分の復習も兼ねて具体例を交えながら細かく丁寧に解説するために、記事にまとめてみました。

## 実装環境
Ruby 3.1.2
Rails 6.1.6
## アソシエーション
まず、今回の設定条件は以下にします。
– トピック(Topic)にタグ(Tag)をつける
– タグは自身で入力する仕様になっている
– 1つの記事には複数のタグを付けられる
– 1つのタグも複数の記事に使用される

以上より、Topicモデルの中にタグのカラムを設けるのではなく、TopicモデルとTagモデルを分けて作成します。
また、TopicモデルとTagモデルは、多対多の関係になります。
従って、中間テーブル(Tagging)を設ける必要があります。

ER図は以下のように設定します。
![ER図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

【Rails】エラーメッセージや時刻表示を日本語化する。

# はじめに
デフォルトで英語表記になってしまうところが散見される。特にバリデーションをかけた時のエラーメッセージや、投稿した記事のタイムスタンプなどがよくある。
それを日本語化するため、実装した内容を記載していく。

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
# 実装
# 1. エラーメッセージを日本語化
[こちら](https://qiita.com/kents1002/items/509ea32715bb78c6d3e2)を参考にエラーメッセージの日本語化を目指す。
“`config.rb
# 以下を追記
I18n.config.available_locales = :ja
I18n.default_locale = :ja
“`
conf

元記事を表示

IPアドレスを取得するone-liners

## 概要
WSL2 で ip adder コマンドから IPアドレスを取得したくなることがる。通常は awk など使うが、他の言語だとどうやるのか気になったので試してみた。

それぞれの言語の特徴を垣間見られる点で興味深い。

### 環境

* Ubuntu 18.04 LTS

## 表示内容

ポイント
* IPv4 アドレスは `inet` の行のみにある
* `inet` と `inet6` の行があるので行を抽出する場合は区別が必要

“`console
$ ip address show dev eth0

inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.255 scope global dynamic
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic
valid_lft 86398sec preferred_lft 14

元記事を表示

壁にぶち当たりながらDockerで環境構築をする(Rails6 + PostgreSQL)

# はじめに
久しぶりに個人開発をするにあたってDockerで環境構築をしようと思いましたが、
– 転職時のポートフォリオに開発環境で使ったときは、使えそうなコードを見つけ、コードの意味を調べて導入するも、あらためて見るとあまり理解できていない
– 業務でもすでに準備されているDockerfileなどにより環境構築し、日頃はコンテナを起動して開発を進めるだけなので理解が深まっていない

ということに気がつき、危機感を覚えました。

というわけで、今回は自分で考えながらDockerでの環境構築に取り組んでみました。
その過程を記事にすることで頭の整理をするとともに、同じような状況の人の気づきになってくれれば嬉しく思います。

ちなみに、当面の目標はRails6 + Vue3 + PostgreSQLの開発環境をDockerで構築することですが、いきなりあれもこれも手を出すことはせず、まずはRails6 + PostgreSQLに絞ることにしました。

# 目次
[1. 開発環境](#1-開発環境)
[2. 今回のゴール](#2-今回のゴール)
[3. この記事で扱わない内容](#3-この

元記事を表示

OTHERカテゴリの最新記事