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

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

変数hashを作成するためのコード

初心に返り復習、備忘としてアウトプットします!

“`ruby:問題
# 下記のメソッドを実行した時に実行結果のように表示されるような変数hashを作成せよ。
puts puts hash.keys
puts hash.values

# 実行結果
one
two
three
1
2
3
“`

“`diff_ruby:解答
# 自身の解答
– hash{“one”:1, “two”:2, “three”:3}
# 模範解答
+ hash = { one: 1, two: 2, three: 3 }
“`

あーやってしまってる。。
=忘れてる。。。

ダブルクォーテーションは文字列に使用しているのであっても実行結果は同じに。
“`ruby:実行結果
irb(main):009:0> hash={“one”:1, “two”:2, “three”:3}
=> {:one=>1, :two=>2, :three=>3}
irb(main):010:0> puts hash.keys
one
two
three
=> nil
irb(main):011:0> puts ha

元記事を表示

【Ruby3】rbs コマンド使い方【RBS】

# はじめに

RBS は Ruby3 で追加された、Ruby の型を宣言する言語です。
この記事では、その RBS 言語で書かれた型定義を処理するためのライブラリ `rbs` gem の `rbs` コマンドの使い方についてまとめてみました。

以下の環境で動作を確認しました。

“`
$ ruby -v
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-linux]
$ rbs -v
rbs 2.8.2
“`

# `rbs` コマンドの使い方

以下コマンドでインストールできます。

“`
$ gem install rbs
(省略)
$ rbs -v
rbs 2.8.2
“`

`rbs` または `rbs help` で ヘルプが出ます。

“`
$ rbs help
Usage: rbs [options…] [command…]

Available commands: ast, annotate, list, ancestors, methods, method, validate, constan

元記事を表示

Ruby環境構築&バージョン管理(Mac)

MacでのRuby環境構築についてまとめます。
また、開発を行う上で、複数のバージョンを管理したい時があると思うので、Rubyのバージョンを簡単に切り替えてくれるツールであるrbenvについても記載しています。
ちなみにMacでは元からRubyが入っています。

# Rubyインストール手順
– 1, Homebrewをインストールする
– 2, Homebrewを用いてrbenv(アール・ビー・エンブ)をインストールする
– 3, rbenvを用いてRubyをインストールする

## 1,Homebrewをインストールする
下記コマンドをターミナルで実行
“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
インストールされているかの確認
“`
brew -v
“`
下記のように出ていれば問題ないです。バージョンの部分はインストールした際のバージョンで異なります
“`
Homebrew 4.0.0
“`

## 2, H

元記事を表示

ERROR: `GLIBC_2.29′ not found |Ruby AWS SAM で Nokogiri 使用時の回避方法

AWS SAMでLambdaを動かそうとした時、以下のエラーが出たため修正した。
M1だと発生するのかもしれない。

“`zsh
$ sam local invoke HelloWorldFunction –event events/event.json
Invoking app.lambda_handler (ruby2.7)
Local image was not found.
Removing rapid images for repo public.ecr.aws/sam/emulation-ruby2.7
Building image…………………………………………………………………………………………………………………………………………………………………………………………………….

元記事を表示

takara awesome title

Your article starts here.

try github to qiita contents.

元記事を表示

macOS12.5にcocoapodsをインストールするときのエラー対処(‘ruby/config.h’ file not found)

# 環境
MacOS : Monterey 12.5
Xcode : 14.2

# cocoapodsをインストールする
~~~
sudo gem install cocoapods
~~~

# エラー内容

次のようなエラーが出ました。

~~~
Building native extensions. This could take a while…
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.

current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf2

元記事を表示

ABC086A Product AtCoderの問題をRubyで解説

# 正解の解答例
“`
a,b = gets.split.map(&:to_i)

if a * b % 2 == 0
puts “Even”
else
puts “Odd”
end
“`

1行目では入力、入力値を配列に入れる、配列の入力値を数値オブジェクトに変換する処理を行なっています。
他の解答例でsplit(” “)と解答している方もいらっしゃいますが、splitの記述だけでスペースは区別できるようです。

if文ではaとbの積を2で割ることで余りが出るか判別しています。
2で割り切れればEvenを出力します。
そうでなければ奇数なのでOddを出力します。

■参考サイト
https://leokun0210.hatenablog.com/entry/2019/08/25/162033

元記事を表示

Rails7でDaisyUIを使ったアプリ作成の環境構築

## ■ DaisyUIとは

DaisyUIは、Vue.js、React、Alpine.jsのためのオープンソースのUIコンポーネントライブラリです。DaisyUIは、簡単にカスタマイズできるデザインシステムを提供し、アプリケーションの開発を迅速化することを目的としています。

DaisyUIには、ボタン、カード、フォーム、アラート、モーダルなど、Webアプリケーションでよく使用されるUIコンポーネントが含まれています。また、カラーパレットやフォントファミリーの設定などのデザインシステムを提供することで、開発者がコンポーネントのスタイリングを簡単にカスタマイズできるようにしています。

DaisyUIは、無料で利用でき、さまざまなプロジェクトで使用されています。Vue.js、React、Alpine.jsのいずれかのフレームワークを使用している開発者は、DaisyUIを利用して、簡単かつ迅速にWebアプリケーションの開発を進めることができます。

## ■プロジェクトを作成する

“`ruby
rails new myapp -j esbuild –css tailwind

元記事を表示

値がnilになる可能性があるか調べたい

# ある値がnilになる可能性があるか知りたい時
レビューをしてもらっていると、
「これってnilになる可能性ありますか?」と聞かれることがある。
突然の質問に、困惑したのでその調べ方を残しておく。

# schema.rbを確認する
ここにはDBの制約が書かれているので
知りたい値に “null: false“ があればdbにnullが許容されないということがわかる。
# modelを確認する
ここにはmodelのバリデーションが書かれているので
知りたい値に“exclusion: { in: [nil] }“とか定義してあればnullが許容されないということがわかる。

# おわり
よきコードを書きたい。

元記事を表示

ruby ぼっち演算子について try try! &. &[] あと||も

# ボッチ演算

`&.`は`try`の省略形と考えて頂いてOKです。
tryはNilClassのメソッド
レシーバがnilクラスの時に動く

レシーバは簡単にいうと`.`の左側のことをレシーバっていいます。
foo`.`bar
レシーバ`.`メソッド
fooがレシーバ barがメソッド

参考 [github_ruby_NilClass](https://github.com/rails/rails/blob/f33d52c95217212cbacc8d5e44b5a8e3cdc6f5b3/activesupport/lib/active_support/core_ext/object/try.rb#L135)

# 使い方

#### 普通のボッチ演算子の使い方

使用前
“`
p nil.hogeee

undefined method `hogeee’ for nil:NilClass (NoMethodError)
“`

使用後
“`
p nil&.hogeee

nil
“`

#### arrayとかhashで使うとき

使用前
“`
arraydesu =

元記事を表示

Ruby if, else問題

# if, elseを使ってプログラムを作成します

条件は以下の通りです。
– 条件1:メソッドの実引数として「1以上の正の整数」を3つ用意し、それぞれを仮引数a,b,c としてnumメソッド内で使用する
– 条件2:第一引数と第二引数は足し算をし、変数abに代入する
– 条件3:第三引数が3以下の場合は変数abを第三引数の値で割り、結果を出力する
– 条件4:第三引数が4以上の場合は変数abを第三引数の値で掛け、結果を出力する
※小数点以下の出力は考慮しなくてかまいません。

模範解答
“`ruby
def num(a, b, c)
ab = a + b
if c <= 3 puts ab / c else puts ab * c end end # 呼び出し例 num(1,5,3) ``` ```:ターミナル 2 # ab = 1 + 5 = 6 # 6 / 3 = 2 ``` ## 解説 条件2に、第一引数aと第二引数bを足したものを変数abに代入するとあるので、その式を2行目に記述します。 if文には第三引数cが3以下の

元記事を表示

[PracticeA][Welcome to AtCoder]を解いてみた!RubyでAtCoderの解説

# 正解したコードの解答例
“`
a = gets.to_i
b,c = gets.split(” “).map(&:to_i)
s = gets.chomp

puts (“#{a+b+c} #{s}”)

“`
# 解説
1行目a = gets.to_i
のgetsメソッドでは、ユーザーがキーボードで入力した値を文字列として取得しています。
問題文は数値での出力が求められるためto_iメソッドで数値化してあげます。

2行目b,c = gets.split(” “).map(&:to_i)
b,cで入力したコードをsplitメソッドで指定した区切り文字(” “)で分割し、配列で返します。
b cの入力時にスペースをあけるため、ここでsplit(” “)が作用して文字列の配列が作成されます。
このままでは配列の中身は文字列の状態なので.map(&:to_i)を使用して配列の中身を全て数値オブジェクトに変換します。

3行目のchompは改行をなくすメソッドです。getsのみだと改行が入るようになっています。

最後、計算結果を出力しています。

以上、PracticeAの解説でし

元記事を表示

【Rails】3種類のラベルのうち1つは必ず選択(バリデーション)

## はじめに
現在webアプリ制作に携わらせていただいている中で調べて学んだことをアウトプットしていきたいと思います。
よろしくお願いいたします。

## 開発環境
Rails 6.0.3
Ruby 3.0.1

## 参考記事
[Active Record バリデーション](https://railsguides.jp/active_record_validations.html)
[Railsで特定の条件下で走るバリデーションを作りたい](https://qiita.com/tmzkysk/items/a0c874715ba38eb23350)

## どうしたいか
新規質問投稿時に、3種類のタグから当てはまるタグを複数選択できるようになっているが、`「投稿時にタグを1つは必ず選択させる」`ようなバリデーションを構築したい。

## ER図
questionsテーブルにlabelsテーブル、categoriesテーブル 、kindsテーブルがそれぞれ多対多の関係で紐づいています。
![Qiita.png](https://qiita-image-store.s3.ap-nort

元記事を表示

外部キー制約ついているデータの削除

# 外部キー制約がついているデータの削除について

外部キー制約がついているデータを削除するために必要なことを簡単にまとめました。
外部キー制約がなければ、destroyアクションで削除機能を実装する事ができますが、外部キー制約があると削除を実行するとエラーが出てしまします。

## エラーが出た時のコード
“`Ruby:app> models> user.rb
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable with_options presence: true do validates :name

元記事を表示

【TechCamp】受講を終えてからの感想や

# はじめに
– 本記事は、個人の感想や定量的でない内容が含まれたりします。
– また記載内容はすべて、正しい内容が記載されているとは限りません。
– 誤った内容を見つけた場合は、ご指摘をお願いいたします。

# この記事は誰向けの記事か?
– プログラミングスクールの受講を考えている人
– TechCampを受講している人
– TechCampを受講し終えた人

# 私自身について
私は30歳の元ITエンジニア(2023年2月時点)です。以前の職場では、製造業向けのアプリケーション開発現場で約2年、製造メーカーの社内SEとして約2年勤めていました。そのため未経験というわけではなく、経験者という立ち位置で参加させていただきました。元々は仕事と並行しつつ、Webアプリケーションの開発経験を積めるスクールに通いたいなと考えていたのですが、脳の疾患に罹患し、仕事をリタイアしてしまいました。完治するかは未定ですが、今後もITエンジニアとして仕事をしていきたい、という思いもあり、TechCampへ参加することにしました。

# 受講プラン
私が受講したプランの情報は以下のとおりです。
– 短期集

元記事を表示

Railsで新規アプリケーションを作成

## はじめに
アプリケーションを新規作成する時の最初の手順を備忘録として記録しておきます。
## ターミナルで新規作成
**【ターミナル】**
“`terminal
% rails _(railsのバージョン)_ new (アプリケーション名) -d mysql
“`
## 文字コードの変更
必要があれば、文字コードを変更しておきます。

**【config/database.yml】**
“`diff_ruby
default: &default
(省略)
– encoding: utf8mb4
+ encoding: utf8
(省略)
“`
※文字コードを変更するのは何故か?
utf8:1〜3バイトまで対応
utf8mb4:1〜4バイトまで対応
文字化けを起こす可能性があるので、変更する必要がある場合が存在します。

## データベースの作成
ターミナルにて、データベースの作成を行います。

**【ターミナル】**
“`terminal
% rails db:create
“`

## ローカルホストで挙動確認
最後に、ローカルホストで、新規作成した

元記事を表示

MacでRuby3.2.1 インストールメモ

# 変更履歴
2023/2/15 初稿(とりあえず殴り書き)

# 環境
H/W : Macbook Air 13inch (model A1932、メモリ16GB)
OS : macOS Ventura 13.2

# はじめに
ヤフオクでMacbook Airを手に入れたので最新版のRuby3.2.1を入れようとしたら無茶苦茶めんどかったのでメモを残します。
最終的にうまく行ったコマンドの羅列となります。
誰かの参考になればいいなぁ。

# インストール準備

## Homebrew
ここを見るような人はとっくに入っていると思いますが、私のようなMac初心者もいると思いますので。
以下よりインストールしてください。
[Homebrew]

バージョンを確認。
“`
% brew –version
Homebrew 3.6.21-91-g31ec835
Homebrew/homebrew-core (git revision 31ec835c9; last commit 2023-02-13)
Homebrew/

元記事を表示

Ruby sliceメソッド

# sliceメソッド
配列や文字列から、指定した要素を取り出すことができるメソッドです。

“`ruby:例
# 配列を作成します
array = [0,1,2,3,4,5,6]

# 配列から引数で指定した要素を取得します
ele1 = array.slice(1)
puts ele1
#=> 1 # 0番目から始まるため、1が取り出されました

# 配列番号-4から4つ分の要素をsliceします
ele2 = array.slice(-4,4)
puts ele2
#=> 3, 4, 5, 6

# 配列はもとのままです
puts array
#=> [0,1,2,3,4,5,6]
“`

# sliceメソッドを使って指定した文字列を取り出すプログラムを作成します

条件は以下です。
– 条件1:対象の文字列から末尾にある2文字を取得すること
– 条件2:取得した2文字を3回繰り返して出力すること

“`ruby:模範解答
def extra_end(str)
right2 = str.slice(- 2, 2)
puts right2 * 3
end

#

元記事を表示

【Ruby on Rails】validationの冗長をなくす方法

# 前提条件
– Ruby 3.1.0
– Rails 7.0.4

# 背景
全てのカラムに対して同じバリデーションを設定すると、下記のように同じ記述が繰り返され冗長性がある状態である。
“` ruby:User.rb
class User < ActiveRecord::Base validates :name, presence: true #冗長性あり validates :email, presence: true #冗長性あり validates :age, presence: true #冗長性あり validates :password, presence: true #冗長性あり end ``` # やりたいこと バリデーションの冗長性をなくしたい。 # 方法 ### with_optionsブロックを使う 下記のようにwith_optionsブロックでpresenceをまとめることで、ブロック内のカラムすべてに適用されるようになる。 ``` ruby:User.rb class User < Active

元記事を表示

デバックの考え方

◎デバッグとは
意味:バグを無くす
デバックは、プログラミングに問題があった時にそれを解決すること。

○初心者にとって特に重要!!→なぜ重要なのか?
・自走力を身につけるため
  プログラマーとして仕事をするには、自分で問題を解決するのが重要
・学習効率を向上させる
  一般的なデバッグの知識は付け焼き刃の知識ではない。
 すべてのプログラミングの学習に通じる考え方なので応用が効く。

○どうやってやるのか?
 STEP1
  証拠集め(情報収集)
 STEP2
  証拠を解釈(情報の意味を把握)
 STEP3
  犯人を推理(原因を推測)

・具体的に
 STEP1
  証拠集め(情報収集)
  ・エラーが、出ている確認! 一番大事
  エラーは、最大のヒントです。ダイイングメッセージみたいなもの
  読まないのはもったいない!!

  ・どういう場合に動かなくなるのか?
  何をした時に動かなくなるのか?

  どこまで動いている?
  ブレークポイントなどを使いどこまで確実に動いているのか確認する

※もし証拠がない場合でも、証

元記事を表示

OTHERカテゴリの最新記事