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

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

Python,Ruby,PHP,Java,JavaScript,PerlのPDF作成の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのPDF作成の比較

# Python

https://qiita.com/godan09/items/13866970972bf3a1c243

# Ruby

https://qiita.com/inoue9951/items/4498e5d130702d884352

# PHP

https://qiita.com/one_punch_man/items/bf140d4300195577dd3d

# Java

https://qiita.com/iceblue/items/a059c99ef1c17226a02a

# JavaScript

https://qiita.com/shuhei_sakiyama/items/ef68d49b7199d50a853b

# Perl

https://perlzemi.c

元記事を表示

Ruby問題 配列の並び替え

(1) 配列の並び替え

“`
【Q】 数字の配列を、偶数はそのままの位置で、奇数のみを昇順に並び替えなさい。

例)
[7, 1] => [1, 7]
[5, 8, 6, 3, 4] => [3, 8, 6, 5, 4]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] => [1, 8, 3, 6, 5, 4, 7, 2, 9, 0]
“`

私の回答

“`ruby
def sort_array(array)
oddsArr = array.select {|n| n.odd? }.sort
array.map {|n| n.even? ? n : oddsArr.shift }
end
“`

1) 配列の中から奇数のみを取り出したいので、selectメソッドを使いました。
sortメソッドで昇降順に並び替えて、新しい配列に入れます。

2) 元の配列を三項演算子を使って、並び替えます。
`n.even?` 偶数であるかどうかを判断
YES => そのまま配列に入れる
NO => 奇数なので、`oddsArr`からshiftメソッド

元記事を表示

asdfでruby2.7.6が見つからない件

# はじめに
コロナにかかってしまった筆者です。高熱は3日続き、微熱が1週間下がらず、半年前から計画していた旅行には行けず、悲しい思いをしました。
気をつけてはいたのですが、皆様もどうぞお身体にはお気をつけくださいませ:pray:

さて、今回は新規で参画するプロジェクトのGitリポジトリをクローンして、bundle installした際に、Gemfileに記載のRubyのバージョンが違うと怒られました。

↓こんな感じですね。
“`console
> bundle install
Your Ruby version is 2.6.6, but your Gemfile specified 2.7.6
“`

asdfでバージョン管理しているので、早速インストールしようとすると、ないと言われてしまいました。

“`console
> asdf install ruby 2.7.6
Version not found
“`

そして、確かにないですねー。。
“`console
> asdf list all ruby | grep 2.7
1.8.6-p287
2.0.0-p2

元記事を表示

【Laravel / Rails】bulk insertについてまとめ

一度に複数のデータを1回のクエリでインサートしたいとき(bulk insert)、insert

## PHP/Laravel

クエリビルダの“`insert“`メソッド

“`php
DB::table(‘users’)->insert([
[‘email’ => ‘picard@example.com’, ‘votes’ => 0],
[‘email’ => ‘janeway@example.com’, ‘votes’ => 0],
]);
“`
https://readouble.com/laravel/9.x/ja/queries.html

先輩エンジニアに聞いたところ、「bulk insertは使うとしたら100万件くらいのデータ量の場合だが極力使わないほうがいい」とのこと。
今回のプロジェクトではデータ量がそこまで大量ではなかったため、bulk insertは結局使わないことにした。
下記記事も参考になった。

https://zenn.dev/naoki_oshiumi/articles/648a00bcd4d209

ただ、調べるとLar

元記事を表示

Docker環境でrails 6以降の構築しました。あ、macはM1チップです。

私はサラリーマンである。
ITエンジニアである。明日も7時前に起きて出社の準備をしないといけない。今深夜1時。

この記事を書き終わる頃には2時とかだろう、早く寝ろ俺。

しかし一個だけ言わせてほしい。

dockerお前の仕事は環境の差異をなくすことちゃうんか!?お前が一番差異に困惑しとるやないかぇぇぇぇぇぇウェえええええええ!!!

# 失礼しました

タイトルの通りrailsをDockerに走らせるだけの簡単なお仕事でミスりまくってものすごい時間を費やしたので書いてます。

# 試したこと

https://zenn.dev/tmasuyama1114/articles/rails-docker-5x-how-to

自分が作ったdeviceでログイン + 文章投稿する という簡単なアプリケーションを
上記リンクを参考にDockercomposeファイルを足してコンテナ化しようとしました。

# そもそも使てるアプリケーションがrails 6~

まず手始めにエラーが出たのは

“`ターミナル
bundler: command not found: rail……..
`

元記事を表示

凝縮度・結合度という尺度から関数のリファクタリングを行う

# 背景

https://gihyo.jp/magazine/wdpress/archive/2022/vol127

☝️読んで感化されました。

https://fortee.jp/object-oriented-conference-2020/proposal/a826b6c6-167c-4c5c-bfc7-52bb8bc22ec1

感化された内容は☝️でもまとめられています。
この記事は上記の内容を読み解いていくだけです。

# はじめに

より良いプロダクトにするために色々な設計論や尺度が存在しています。
知っておいて良いと思うのですが、ひきづられない方がよくて、
現状のプロダクトにとって **何が最善なのかはチームで決めていく** ことが望ましいと思います。
(本の受け売り)

この記事では

– 凝縮度
– 結合度

の観点から関数のリファクタリングについて考えてみたいと思います。

# なぜリファクタリングするのか

https://refactoring.com/

> Since each refactoring is small, it’s less li

元記事を表示

MySQLではinsertで生成されるIDが帰ってこない問題へのアプローチ

注)mysql 5.6のことだけ調べました。他のバージョンのことはよくわからないです。

# この記事でできるようになること
mysqlでinsertしたレコードの自動生成されたIDの取得

# 解決したかった問題
Railsでbulk insertする場合

– 生SQLでinsert文流す
– activerecord-importを使う

を使うのかなと思うのですが、mysqlは生成したレコードのIDがわからない、、、

生成したIDで紐付け処理を行う場合は、再度fetchしてIDを取得する必要がある。
が、取得する場合にkey値がなかったらどうすればいいのか

# 例えばこんなデータ

“`sql
mysql> desc parents;
+————+———————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+—

元記事を表示

Rubyで文字のUnicode(10進数表記)を取得する

## TL;DR
`String.ord` or `String.unpack(“U*”)`を使う
“`ruby
‘あ’.ord # 12354
‘あ’.unpack(“U*”) # [12354]
“`
https://docs.ruby-lang.org/ja/latest/method/String/i/ord.html

https://docs.ruby-lang.org/ja/latest/method/String/i/unpack.html

## ordとunpackの違い
返り値の型が違うので実装上は注意が必要です。
`ord`は最初の文字のUnicodeをIntで返しますが、`unpack`は1文字ずつのUnicodeをArrayで返します。
“`ruby
# 対象が1文字
‘あ’.ord # 12345
‘あ’.unpack(“U*”) # [12354]

# 対象が複数文字
‘あいうえお’.ord # 12354
‘あいうえお’.unpack(“U*”) # [1

元記事を表示

authenticate_user!メソッド

# authenticate_user!メソッドとは
ログイン状態によって表示するページを切り替えるdeviseのメソッドで

ユーザーがログインしていなければ、そのユーザーをログイン画面に遷移させる事が出来ます
以下のようにcontroller内にbefore_actionを記述する事で、アクションを実行する前にログインしていなければログイン画面に遷移させられます。

“`:ruby
before_action :authenticate_user!
“`

##### indexアクションではログインをしていなくても閲覧できるようにしたい場合は以下のように記述する

“`:ruby indexはログインせずに閲覧できる
before_action :authenticate_user!, except: :index
“`

##### このように複数のアクションにも適用する事も出来ます

“`:ruby indexとshowをログインせずに閲覧できる
before_action :authenticate_user!, except: [:index, :show]
`

元記事を表示

(未解決) Mac + Ruby + Selenium + Chrome でドラッグ&ドロップが出来ない。カーソル位置でドロップされてしまう。

# 感想

drag_and_drop ではなく他のメソッドを使ってみても無理で、Seleniumのカーソル移動的な挙動(?)が壊れているかもしれない気がした。

Firefoxではまったくドラッグもドロップも出来なかった。

# Ruby

“`rb
require ‘selenium-webdriver’

driver = Selenium::WebDriver.for :chrome
driver.navigate.to “file:///Users/yumainaura/projects/YumaInaura/ruby/drag-and-drop.html”

source = driver.find_element(:id, ‘p1’)
target = driver.find_element(:id, ‘dd1’)

driver.action.drag_and_drop(source, target).perform

sleep 3
“`

# HTML

“`html