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

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

[Ruby] rescueの中でreturnするとちゃんと関数からreturnしてくれる

本題の通り、rescueの中でreturnするとちゃんと関数からreturnしてくれる。
期待通りで安心した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/a88a42b0-8e72-1ac5-5462-7f69fc60c5ec.png)

元記事を表示

WIP【Viewがレンダリングされるまでの技術とその理解 / Aaron Patterson 】Aaron PattersonさんがYouTubeで説明していたコードにビューを付けてみる

“`
.
├── app
│ ├── controllers
│ │ ├── action_controller.rb
│ │ ├── application_controller.rb
│ │ └── users_controller.rb
│ └── views
│ └── users
│ ├── index.html.erb
│ └── new.html.erb
├── application.rb
├── rack_router.rb
└── server.rb
“`

“`html

users#index

“`

“`html

users#new

“`

“`ruby
require ‘socket’
require ‘./application’

port = 3000
server = TCPServer.open(port)

loop d

元記事を表示

paiza POH code_and_sql #異世界転職エンジニア

## SQL

同じデータベースを使う(取得する条件だけが徐々に複雑になっていく)のが面白く感じました。

### 魔法使いの街(d1)

“`sql
SELECT id, name FROM Hell;
“`

### 果ての平原(d2)

“`sql
SELECT id, name, str FROM Hell ORDER BY str DESC LIMIT 5;
“`

### 砂漠のオアシス(c1)

“`sql
SELECT id, name, cost FROM Hell WHERE cost <= 10; ``` ### 禁断の洞窟(c2) ```sql SELECT Hell.id, Hell.name, Element.name AS element FROM Hell INNER JOIN Element ON Hell.element_id = Element.id WHERE Element.name = "Earth"; ``` ### 精霊の村(b1) ```sql SELECT Hell.id, Hell.name, Eleme

元記事を表示

Ruby3.1を触ってみる(error_highlight)

# 0. はじめに

[前回](https://qiita.com/Satoooon/items/734ef8cdecba2725943f) に引き続きRuby 3.1の新機能について動かしながら紹介しようと思います。

今回は error_highlight になります

# 1. リリースノートを見てみる
> error_highlightという組み込みgemが導入されました。これにより、バックトレース中でエラーが発生した詳細な位置が表示されます。
このgemはデフォルトで有効になっています。–disable-error_highlightコマンドラインオプションを指定することで無効化できます。詳しくはruby/error_highlightリポジトリを見てください。

引用: https://www.ruby-lang.org/ja/news/2021/12/25/ruby-3-1-0-released/
# 2. 触ってみる

使い方を [README](https://github.com/ruby/error_highlight) を拝見しながら触ってみます

“`sa

元記事を表示

ActiveRecord::Enum

## Enum is 何
– enumは“列挙型“

## 定義例
“` ruby
class Book < ApplicationRecord enum sales_status: { reservation: 0, # 予約受付中 now_on_sale: 1, # 発売中 end_of_print: 2, # 販売終了 } end ``` #### 保存のされ方 - シンボル、文字列、数値を渡しても戻り値が"now_on_sale"と表現される ``` ruby irb(main):001:0> Book.create(sales_status: :now_on_sale)
=> #

irb(main):002:0> Book.create(sales_status: “now_on_sale”)
=> #

irb(main):003:0> Book.create(sales_s

元記事を表示

【備忘録】Rubyの実行方法と標準出力メソッドの違いについて

## はじめに
本記事は、[Rubyがミニツク](http://www.minituku.net/)の学習内容をまとめたものです。
今回は、Ruby入門コースの1章をやります。

## まとめ
* Rubyのプログラムを実行する方法は幾つかあり、代表的な方法として以下の手法がある。
・rubyコマンド
・irb
・-eオプション

* 標準出力のメソッドには、主に3種類ある。各メソッドには、次のような違いがある。
・print: 最後に改行を行わない。
・puts: 最後に改行を行う。
・p: 最後に改行を行う。文字列を出力する場合は””で囲まれる。

## Rubyのプログラムを実行する方法
・rubyコマンド
・irb
・-eオプション

まずは、自分の環境にRubyがインストールされているか確認する。
“`:ターミナル
$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin20]
“`

#### 方法1 rubyコマンドで実行する
テキストエディタを用いて、以下のプログラムを作成し保存

元記事を表示

find/ find_by/whereの違い

## バージョン
– Ruby 2.6.6
– Rails 6.0.3

## find/ find_by/whereの違い

### find
– 検索条件に引っかかる場合
“` ruby
pry(main)> Book.find_by(1)

Book Load (0.2ms) SELECT `books`.* FROM `books` WHERE `books`.`id` = 1 LIMIT 1
=> #
“`

“`ruby
pry(main)> Book.find(1).id ## データの中身を取得するとき
=> 1
“`

– 検索条件に引っかからない場合
– “ActiveRecord::RecordNotFound“が発生
“`ruby
pry(main)> Book.find(1000)
Book Load (0.

元記事を表示

bundle install で `gem install mysql2 -v ‘0.5.3’ –source ‘https://rubygems.org/’ と言われてうまくいかない

時間ないので、雑に忘備録として、一旦あげておきます

## 問題
“`Gemfile
gem ‘mysql2’, ‘~> 0.5.3’
“`

こんな感じでGemfileに`mysql2`を入れようとしたときに
“`
bin/bundle install
“`
って入れても
“`
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v ‘0.5.3’ –source ‘https://rubygems.org/’` succeeds before bundling.

In Gemfile:
mysql2
“`
こんなエラーが出るわけですよね。

書いてある通りに
“`
gem install mysql2 -v ‘0.5.3’ –source ‘https://rubygems.org/
“`
と入れても
“`
ld: library not found for -lssl
“`

元記事を表示

[Tips]insertメソッドでコールバックを発火させずに単一のレコードを作成する(Rails)

## コールバックを呼ばずにデータを作りたい

Railsでレコードを作成する時、コールバックを発火させずにデータを作成したい時が(基本的にない方がよいですが)ごく稀に存在します。
データを大量に作る時は、Rails6以降なら下記のように[insert_all](https://railsdoc.com/page/insert_all)を使うと良いでしょう。

“`ruby
Article.insert_all([
# created_at、updated_atが存在しrecord_timestampsをfalseにする場合、attributesの中に書いておく必要があるので注意
{ title: “How to use qiita”, author_id: 1 },
{ title: “Why does elasticsearch use inverted index?”, author_id: 2 }
])
“`

しかし、一つのレコードしか作らないのに`insert_all`を使うために配列を作るのは少々大仰な気がします。

## そこでinsertメソッド

元記事を表示

【もうやらかさない】開発DBのデータを全部消しちゃったお話(改善策もあるよ)

## はじめに
どうも、もきおです。未経験から自社開発企業に入社して半年以上経ちましたがつい一週間前くらいに盛大にやらかしたのでその際のお話をしていきたいと思います。

Slackでの会話
先輩「あれ?開発DBのデータ消えた・・・?」
メンバー「僕もDB見れなくなりました、、」
先輩「全部消えてるよね、、」

この時ハンパない冷や汗をかいてました。心当たりがめちゃくちゃあったからです。
そう、開発DBのおそらく何千万というデータというデータを消してしまったのは紛れもなく自分でした。

## なぜデータを消してしまったのか?
毎回テストを走らせるためにテスト用DBを作成しているのですが、テスト途中で止まってしまいそのまま進まないという事象が起きていました。
“`ruby:
rails db:create Rails_ENV=test
rails db:migrate Rails_ENV=test
“`
そのためmigrateが上手くできていないと感じ、一旦テストDBをリセットしようとしたら“test“を指定せず以下のコマンドを打ってしまい開発DBのデータを全てリセットしてしまった

元記事を表示

The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window’s load event.

## はじめに
RubyonRailsでアプリを開発していた時にjsを用いて写真プレビュー機能の作成時に起こったエラーです。
今回は2つの解決法を使って解説しましたので自分に合った解決法が見つかれば幸いです。

### 使用する環境
– MacOS(M1)
– Rails 6.1.4
– Ruby 2.6.3
– yarn 1.22.17
– Homebrew 3.5.0

### エラー文
「The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window’s load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.」

## 解決法1:特定のページでのフルリロードを実行する

Before
“`application.html.erb
<%= javascript_pack_tag "application"

元記事を表示

Rubyのクラスについて

## コード
“`
class Student
def initialize(name)
@name = name
end

def avg(math, english)
return @name,(math + english)/2
end

attr_accessor :name
end

a001 = Student.new(“sato”)
p a001.name, a001.avg(30,70)
“`
## 実行結果
“`
“sato”
[“sato”, 50]
“`
## コード解説
### `a001 = Student.new(“sato”)`
– `クラス名.new(引数)`により、引数を使ってにinitializeメソッドが実行され、インスタンスが生成される
– インスタンスとはそのクラスに由来するオブジェクト

### `@name = name`
– `@変数`はインスタンス変数と呼び、クラス内のどこでも参照できる
– 何度も使うような変数を定義する

### `a001.avg(30,70)`
– `インスタンス.クラス内で定義し

元記事を表示

undefined method `permit’ for “1”:String に手こずった。

# はじめに
本記事はプログラミング初心者が、railsの学習を進めながら、躓いた部分、解決した箇所、またそれらの解決方法を備忘録も兼ねてまとめているものです。
最初はprogate。そのあと、「現場で使える RubyonRails5 速習実践ガイド」(通称)「現場Rails」を参考に進めていきました。
そのため、記事の内容には誤りがある可能性があることをご理解ください。
誤りがあればお手数ですが、ご指摘いただければと思います。よろしくお願いします。

# 環境
Ruby 3.1.2
Rails 7.0.3.1

“`ruby:new.html.slim
– if @user.errors.present?
ul#error_explanation
– @user.errors.full_messages.each do |message|
li = message
dl
= form_with model: @user, url: ‘/users’, local: true do |f|
.form-group
f.label 名前

元記事を表示

完全未経験が2ヶ月半で一からWebアプリを作ったお話

# はじめに
ポートフォリオとして作成したWebアプリの紹介記事です。
アプリを作成する際に自分が何を考えて作成したのか、その過程をご紹介します。
苦労したことや楽しかったことなどもまとめましたので、是非最後まで読んでいただければと思います!

# 簡単に自己紹介
* 商社の営業マンとして働く29歳
* ポートフォリオ作成前は、Progateで基礎学習、Railsチュートリアルを一通りした程度

# アプリの概要と開発背景
### アプリ概要
* 自分の欲しいものを管理して支出予測するアプリです。
* サービス名は『Wantest』にしました。
* 欲しいものを登録して一覧化し、その合計金額を表示させます。

### 開発背景
* アプリの制作理由
みなさんは欲しいものを買うか迷ったり、欲しいものを買ってみて後悔した経験はありませんか?
私自身、本を買っても読まなかったり、ゲームを買っても結局やらなかったりと、買って後悔した経験が多々あります笑。
このアプリはそんな経験を少しでも減らせればという思いで開発に至りました。

* 誰のどんな課題を解決するか
**欲しいものを買うか迷っている

元記事を表示

Userモデル、usersテーブル作成とバリデーション【10日目】

# 概要
– Userモデルを作成
– usersテーブルを作成
– TDDでバリデーション

# 1. モデルとマイグレーションファイルの作成
– `rails g model user`でモデルを作成
– 自動的にマイグレーションファイルが生成される
# 2.マイグレーションファイルの編集
– マイグレーションファイルの中身を編集
# 2. テーブル作成
– `rails db:create`でusersテーブルを作成
# 3. モデルの編集
– rspecでテストを書いてfailedを確認
– モデルにvalidation書く
– テストが通るか確認

# その他
– bcryptをgemでインストール
– has_secure_passwordでパスワードをハッシュ化
– パスワードのカラム名はpassword_digestへ
– 一意性(uniqueness)のバリデーションはDBレベルでも行う

# 参考
– [Ruby on Rails チュートリアル](https://railstutorial.jp/chapters/modeling_users?version=6.

元記事を表示

自作言語のコンパイラにオレオレアセンブリではなくx86_64アセンブリを生成させる(関数呼び出し+足し算だけ)

自作言語とそのコンパイラを作って(一応 x86風のつもりの)オレオレVM向けにオレオレアセンブリ・オレオレ機械語を出力するということをこれまでやってきたのですが、今回はこれを改造して本物の x86_64 アセンブリを出力させてみます。

x86_64 アセンブリを触るのは今回が初めてで、ちゃんとやろうとすると大変そうなのでハードルを下げます。あんまりがんばらなくて済むようにしたい。

– 関数呼び出しと足し算だけ
– 正常系1パターンだけ動けばOK
– 「x86_64アセンブリとツールまわりを軽く触ってみた」の実績解除ができればOK
– 細かいところまで理解してなくてもOK
– 細かいところに深入りしない。深入りしないぞ!
– なんとなく雰囲気が分かればOK

今回のスコープはここまで。

# これを改造します

https://github.com/sonota88/vm2gol-v2

<自作言語処理系(Ruby版)の説明用テンプレ>
自分がコンパイラ実装に入門するために作った素朴なトイ言語とその処理系です。簡単に概要を書くと下記のような感じ。

– 小規模: コン

元記事を表示

議事録

# 研修が終わって
一ヶ月半ほどの研修を終えて早々、プロダクトの機能の追加を頼まれた僕は意気揚々とコーディングに取り掛かろうとしたが、まず最初に立ちはだかった問題が多かった。

## 足りなかった知識
・linux
・TCP/IP(ネットワーク)
・git

### linux
まず最初に環境構築をする上でコマンドラインで色々設定する上で指示をされるのだが、ssh接続のコマンドの細かいオプションやIPアドレスを調べるコマンドを知らずにため息を疲れる場面が多々あった。また権限に関してもとても重要であるのにも関わらずうまく指示通りのコマンドを打てなかった。

### TCP/IP
基本的に指示をされる上で多くのカタカナが出てくるがほとんど理解できなかった。おそらくTCP/IPの知識が必要である。どのIPアドレスがどういうものなのかという理解がなかった。

### git
gitに関しては共同開発をする上での最低限の知識コマンドを必要である。

## rails
基本的なモデル、データベース操作の練習が足りない。どのようにコードを書いたらどのようなデータが取り出せるのかは、コードをひたすら

元記事を表示

Rails7をちょっと試す(turbo_frame_tag でページの表示を速くする編)

## はじめに

Rails 7.0.0 には、 [Turbo](https://github.com/hotwired/turbo-rails) が組み込まれています。
今回はその中で、 `turbo_frame_tag` を試してみたいと思います。
`turbo_frame_tag` を使ってページの表示速度を改善してみます。

以下のバージョンで確認しました。

– Ruby 3.0.2
– Rails 7.0.3.1

## 前準備をする

今回は前準備に少し手間がかかります。

## Rails プロジェクトを作る

新しくRailsプロジェクトを作ります。このとき `
(データベースオプションを指定しているのに深い意味はありません。)

“`shell
mkdir rails_sandbox
cd rails_sandbox
rails new . –database=postgresql
“`

## model を2つ作る

`User` と `Book` の2つの model を作ります。

“`shell
bin/rails g model User nam

元記事を表示

Gitコマンドでrbenv version ruby-2.7.4′ is not installedtというエラーが出る

# はじめに

この記事は2022年4月にまとめていた「細かいつまずいたことをメモしておく(4月編)をそれぞれ投稿した内容になります
解決方法が最新でない可能性もありますのでご了承ください

# 問題

Gitコマンドを叩くと以下のエラーが出るようになってしまった

“`
rbenv version ruby-2.7.4′ is not installed
“`

またブランチを変更してもでてしまう

# 解決方法

これはovercommitをインストールしたことに起因していた
overcommitは.gitのホックに直接設定を書き込むためにブランチを変更してもその設定は引き継がれている
そのためブランチを変更して`overcommitがはいっていない状態`にしても動いてしまうのでエラーが発生する

overcommitを追加したブランチを早くマージする必要がありました

元記事を表示

Railsのコントローラ

### コントローラの作成コマンド
今回はBooksコントローラを作成します
“`ruby
rails g controller books
Running via Spring preloader in process 51297
create app/controllers/books_controller.rb
invoke erb
create app/views/books
invoke test_unit
create test/controllers/books_controller_test.rb
invoke helper
create app/helpers/books_helper.rb
invoke test_unit
invoke assets
invoke scss
create app/assets/stylesheets/books.scss
“`

このように表示させる

元記事を表示

OTHERカテゴリの最新記事