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

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

RDF.rb 3.2における RDF::Graph#insert_statement が遅い問題

[RDF.rb](https://ruby-rdf.github.io/rdf/) は、Rubyで書かれたRDF解析ライブラリで、Ruby界隈でのセマンティックWebやLinked Data処理用途で広く使われている。

RDF.rbの2022年8月時点での最新版は 3.2.9 だが、このバージョンには、昨年2021年時点で使っていた3.1系列に比べて、かなり性能上の劣化があるようなので、念のためメモを残しておく。

例えば、以下のようなコードを実行した場合、数万トリプル規模のファイルの場合には数秒で終わるのが、数十万トリプルを超えた場合に、急速に遅くなる現象が発生する。

“`ruby
require “rdf/n3”
graph = RDF::Graph.new
RDF::N3::Reader.open(“test.n3”) do |reader|
count = 0
reader.each_statement do |statement|
graph.insert << statement count += 1 end end ``` 上記のコード

元記事を表示

100日後くらいに個人開発するぞ!day070

## 今日は配列の変数を使った一覧ページの表示をやってみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/506e5ce2-15e6-d404-2662-50a4cfff8f6b.png)

## 今日の学び

### viewファイル内で変数を定義して表示する
* erbファイルでは`<% %>`で囲むことでHTMLファイル内にRubyのコードを記述できる
* erbは「Embedded Ruby(埋め込みRuby)」の略
* 埋め込んだRuby Codeをブラウザに表示したい場合は`<%=変数%>`を用いる

### <%%>と<%=%>
* `<%%>`の場合は何も表示されないので変数の定義などに用いる
* `<%=%>`はRubyコードの中身が表示されるので変数の値などを表示したい場合に用いる

### 投稿データを入れる配列
* コンマで要素を区切ることで複数の要素を配列に代入できる
* 例:変数postsに複数のデータを入れる

元記事を表示

coc.nvim + efm-langserver でerbファイルの文法チェックをおこなう

# Vimで.erbファイルを書きたい

Rails7のHotwireを試したくて、(nvimで)何年かぶりにeRubyを書いてみてるのだけど、eRuby向けのLanguage Serverが見当たらなくて泣きそうになった。
せめて文法エラーのチェックくらいはできたら・・・[^1]
[^1]: Ruby自体のLanguage Serverは[solargraph](https://solargraph.org/)というのがあり、だましだましだが[Railsもサポートされている](https://solargraph.org/guides/rails)

そこで、どんなコマンドでもLanguage Serverにしてしまえる `efm-langserver` を使ってみることにした。

https://github.com/mattn/efm-langserver

efm-langserverのREADMEには、

“`yaml
lint-command: ‘erb -x -T – | ruby -c’
“`

と[書いてある](https://github.com/mattn/e

元記事を表示

Fakerが理解不足でエラーが出たので調べてみた

はじめに

タイトルの通り、RspecでダミーデータをFakerを用いて作成しようとしたところ、単純な理解不足でエラーが起きて一瞬詰まったので備忘録として残します。
同じようなミスをしている人がもしかしたらいるかもしれないので!!

行いたかったこと

user_name(ユーザー名)のダミーデータを作成がしたくて、下記のように記述したのですが、”国際化エラー:翻訳に失敗しました”というようなエラーが返ってきてしまいました。

~~~
FactoryBot.define do
factory :user do
user_name { Faker::Name.user_name }
#user_nameのダミーデータを作成したかったがエラーが発生
~省略~
end
end
~~~

~~~
#返ってきたエラー
I18n::MissingTranslationData:
translation missing: en.faker.name.user_name
~~~

ネットでエラーについて調べたところ、翻訳ミスなのでconfig/

元記事を表示

Rails7 x Mysql8 Dockerで環境構築をする

## はじめに
Docker環境構築に1日使ってしまい苦労したのでまとめてみる。
環境構築時の知識は`Dockerfile`や`docker-compose.yml`を読めば何をしているのか理解できる。
基本的なコマンドは知っている
`PHP x Mysql`のDocker環境を過去に作ったことがある。

## 環境と前提
Mac M1
Rial7とMysql8で環境を作成する
Vも含めたフルスタック想定で環境を組むが、途中の注釈通り`–api`をつけるだけでapiモードで開発可能

## 環境構築をしていく
適宜コメントで説明を入れていきます。
*必要ファイル*
大体どんな記事でもこの構成だと思う
“`
Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
entrypoint.sh
“`

*Dockerfile*

“`rb
# Docker-hubのImageをベースとして利用します。
# Docker-hubにログインしていないとダウンロードできないので気をつける
FROM ruby:3.1

# Dockerコンテナ内

元記事を表示

【厳選】エンジニアにおすすめのビジネス寄りTwitterアカウント30選

# はじめに
最近、私が開発した翻訳サービスである[meta翻訳](https://meta-school.web.app)でもサブスクサービスを始めました。
([有料記事](http://localhost:3000/articles)を現在月額980円で提供するというものです。)

私自身、日頃のインプットにはTwitterを一番活用しているのですが、フォローしている方はエンジニア系の人が大半で、技術的なインプットが大半となっています。

自分がサブスクを始めたのもあり、世間のニーズを捉える上で、ビジネス系の発信を常日頃から見ておくのは大事なことだとふと思いました。

そこで今回、ビジネスサイドの知見を広める必要を感じ、片っ端から良さそうなアカウントをフォローして情報収集基盤を整理することにしました。

選んだ基準としては以下を意識しました
– エンジニアとの親和性の高さ
– 様々な業界を網羅
– ITサービスを運営してる人

先日、「[【厳選】機械学習の学習におすすめのTwitterアカウント40選](https://qiita.com/goto_yuta_/item

元記事を表示

gem cocoon rails6使い方

## 初めに

今回この記事では、gemのcocoonの簡単なチュートリアルを紹介してきます。
この記事ではあくまで簡単なチュートリアルを動かすことを目的として作成しています。
公式のgithubのreadmeではhtmlファイルがhamlで作成されているのでhamlを学習しておらず詰まってしまっている方に向けて作成しています。

github Readme↓
https://github.com/nathanvda/cocoon

上記のreadmeを日本語訳してくれている記事↓
https://note.com/emetselch1984/n/neb1396b86126

## 実装環境
ruby 3.1.2
rails 6.1.6.1

## 完成図
![Screen_Recording_0004-08-17_at_16_48_12_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1717562/77687a3c-d545-ad09-6a4d-ee8d0b721a8c.gi

元記事を表示

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

# 実装

元記事を表示

コード譜投稿アプリを作る #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

元記事を表示

OTHERカテゴリの最新記事