Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

dockerコンテナ内でrails dbconsoleが使えないエラーが出た時の対処法

**概要**
—————————————

DBコンソールを起動しようとDockerコンテナ内で以下コマンドを実行したが,エラーが発生。

“`
# rails db
Couldn’t find database client: psql. Check your $PATH and try again.
“`

rails dbコマンドを実行したときにPostgreSQLのクライアントであるpsqlが見つからないときに表示されるとのこと。
Dockerfileを訂正し,PostgreSQLをインストールする必要がある。

**解決策**
——————————————–
Dockerfile
“`rb
FROM ruby:3.1.4
RUN curl -sL https://deb.nodesource.com/setup_19.x | bash – \
&& wget –quiet -O – /tmp/pubkey.gpg https://dl.yarnpkg.

元記事を表示

【Rails】destroyではなくshowが実行される

# はじめに
この記事では、学習中に出会ったエラーとその解決までの道のりを自分のために記録しています。
初学者のため理解が不十分なところがあるかもしれません。
その場合はご指摘いただけると幸いです。

# 起こった問題
スクールのカリキュラムでX(旧Twitter)のような短文投稿サイトを作成した際、destroyアクションを実装して投稿の削除ボタンを作成したが、showアクションが実行されてしまった

# 結論
RubyのコードではなくJavaScriptの問題の可能性があるためコンソールを確認してみる

# 試したこと①
元の記述(これだとdestroyできない)
“`
<%= link_to "削除", user, method: :delete, data: { confirm: "本当に削除しますか?" } %>
“`
この記述で作成した削除リンクをクリックするとshowアクションに飛んでしまいました。
特にエラーが表示されるわけでもありません。
調べたところ、link_toをbutton_toに変更すると解決する場合があるとのことだったので試してみました。
“`
<

元記事を表示

【Rails】buildメソッド結構有能かもしれない

どうもこんにちは。

今回はRailsで使いこなすと楽そうな`build`メソッドについて調べました。

# buildメソッドとは?

`build`メソッドは`new`メソッドにかなり似たメソッドです。
ただし、場合によって、`new`メソッドを使用するより`build`メソッドを使用することでコードの簡略化ができます。

# newメソッドとの違い

## newメソッド

– Active Recordモデルの新しいインスタンスを作成する
– モデルクラス自体に対して直接呼び出される

“`ruby
new_post = Post.new
“`

– 関連付けを意識せずに単独でオブジェクトを作成する場合に使用される

## buildメソッド

– `has_many`、`has_one`、`belongs_to`などの関連付けが定義されている場合に使用される
– 関連付けられたオブジェクトの新しいインスタンスを作成し、そのインスタンスを親オブジェクトに自動的に紐付ける
– 関連付けを表すメソッドチェーンの一部として使用される

“`ruby
user = User.fi

元記事を表示

繰り返し処理

繰り返し処理を2通りで実装しました。

>課題:iを0から9まで10回ループするプログラムを作成しなさい。

while文
“`ruby
# while

i = 0

while i < 10 do puts "Hello" i += 1 end ``` times文 ```ruby 10.times do |i| puts "#{i}: hello" end ```

元記事を表示

【Ruby・Rails】nil? ・empty? ・blank? ・present?の使い方

## はじめに
使い分けがフワッとしていたので改めてまとめます。
## メソッドごとの違い

| メソッド |判定対象| 出力 |
| — | ———– | ——- |
| nil?| nil |Boolean|
| empty?|””(空文字)|Boolean|
| blank?| nil + “”(空文字) + [] + {} |Boolean|
| present?|nil + “”(空文字)以外か|Boolean|

https://railsdoc.com/page/empty

## nil?

“`ruby
hoge = nil
puts hoge.nil?
# true
hoge = “”
puts hoge.nil?
# false
“`

## empty?
“`ruby
hoge = “”
puts hoge.empty?
# true

hoge = “hoge”
puts hoge.empty?
# false

hoge = nil
puts hoge.empty?
#undefined method `empty?’

元記事を表示

麻雀AI対戦サーバMjaiのインストール


## [1.]概要

### [1-1.]目的

麻雀AI対戦サーバ「Mjai」をインストールする手順をまとめます。

### [1-2.]「Mjai:麻雀AI対戦サーバ」とは
「Mjai:麻雀AI対戦サーバ」(以下mjai)とは、麻雀AI同士で対戦することができるrubyベースのアプリケーションです。
詳細は[Mjai 麻雀AI対戦サーバ](http://gimite.net/pukiwiki/index.php?Mjai%20%E9%BA%BB%E9%

元記事を表示

インターフェースを活用したトレイトプログラミングとプロパティパターンマッチングの相性が素晴らしいという話

## はじめに
皆様は日頃から各プログラミング言語の特徴や機能についてキャッチアップしていますか?
今回はRubyのmixinの勉強を進めていく中でtraitとの違いが気になり、C#ではどう表現するのか気になり、勉強がてらこの記事を書くに至りました。笑

Ruby ワンライナー 入門

## 前置き

### ワンライナー

手元で何かしたいときに,スクリプトを書くことがある.
自分の基準だと,

1. ワンライナー
2. Make
– make がデフォルトインストールされている場合
3. プログラミング言語のスクリプト
4. プロジェクト

みたいな優先順位になることが多い.
必要となる速度,妥当性検証,再利用性みたいな部分でもこの順序で考えていそう.

### Ruby

今まで,Perl でやっていたけど,Ruby か別の言語にしようと思ったので,
今回のステップでは Ruby にする.[^next][^why]
[^next]: ネクストステップだと,型ありがいいかも?
[^why]: Perl を書ける人が少ないなどの理由がある.

## 準備

### パイプ

“`shell-session
$ ruby -lpe ‘do something for $_’
“`

よくあるパターン

“`shell-session
$ ruby -lne ‘do something for $_’
“`

あとよく使うオプション

– `-a`

元記事を表示

Ruby基礎 学習コードコピペ

Ruby基礎 (学習コードコピペ)

puts “Good morning”
ctrl + @でGood morningを出力。改行される。
print “Good morning” は改行しない。
ctrl + shift + S で保存。

p”改行されない”
puts”Good morning” # putsと”Good morning”の間にスペースが必要なことに注意 
puts”Good afternoon”
puts”Good evening”
p”改行される”
print”Good morning”
print”Good afternoon”
print”Good evening”
print” ”
num = 1
p” # 変数を代入”
p num
print ” #変数を参照(出力)”
p num
print ” # pでputsを省略できる”
print”ハイフンや数字から始めることはできない”
print”予約語は変数名にはできない。return,class,for,wh

元記事を表示

railsで作成したアプリに投稿日時を表示させる方法

# 投稿日時を表示させるには

以下の記述をすることで投稿日時を表示できる。
“`ruby:〇〇.html.erb
<%= テーブル名.created_at %>
“`

ただし、この記述だと日本時間で表示されない(おそらくアメリカの時間が表示されている) ため為日本時間への変更が必要になる。

# 日本時間を表示させる

## 手順1
日本時間を表示させるには aplication.rb を以下のように編集する。
“`ruby:aplication.rb
module TaskMemo
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 7.0 config.i18n.default_locale = :ja config.time_zone = 'Tokyo' # 省略 end end ``` ```

元記事を表示

Ruby on Rails 環境構築 MacOS

MacOSでのRuby on Railsの環境構築(installまわりのみ)を記録用に残しておきたいと思います。
ChatGPTに聞けば一発でわかることかもしれませんが、誰かの経験を参考にしたいという方の手助けになれば幸いです。

至らない部分もある方と思いますが、その時はそっと教えていただけると励みになります!

Rubyのインストール

* まずはbrew入ってるのかなあと、確認
“`
brew -v
“`
>version表示されたらOK

* rbenvのインストール

“`
brew install rbenv ruby-build
“`
* インストールされたか確認

“`
rbenv -v
“`
>version表示されたらOK

+ rubyのインストール
“`
rbenv install 3.2.0 //任意のversion
“`
+ インストールされたか確認
“`
ruby -v
“`
>version表示されたらOK

2, bundlerのインストール

bundlerはRubyライブラリーの依存関係やversionを一元

元記事を表示

SinatraをAWS Lambdaで動かす (Lambda Web Adapter 0.8.1 使用)

AWS Lambda 上で、任意の Web アプリケーションフレームワークを動かせる「Lambda Web Adapter」が、バージョン 0.8.1 で [HTTP 以外のイベントも受けられるように](https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#non-http-event-triggers)なりました。

ここでは、Ruby製Webアプリケーションフレームワーク「[Sinatra](https://sinatrarb.com/)」を、AWS Lambda + Lambda Web Adapter で動かす最小構成を紹介します。

## 1. 動作確認用の最小構成Sinatraアプリケーション

いたって普通のSinatraアプリですね。これが AWS Lambda でそのまま動作します。

“`ruby:app.rb (Sinatraアプリ)
require ‘sinatra’

元記事を表示

複数台で parallel_tests を動かす場合でも、実行時間ベースでテストを分割できるようにする

RSpec を並列に実行してくれるツールとして [parallel_tests](https://github.com/grosser/parallel_tests) があります。このツールは CPU 数などの情報から、自動で最適な並列数で RSpec などを複数同時に実行してくれるツールです。これにより通常よりも早くテストを完了することが出来ます。

https://github.com/grosser/parallel_tests

Qiita でも parallel_tests を使いつつ、複数のマシンを利用して CI での自動テストを回しています。(テストが大量にあるのと、テストを動かすマシンスペックの都合などで、こういう構成になっています。)

![parallel_tests_image.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/b8669d38-5417-8ca3-5680-9b5523a245e8.png)

こういう感じで並列にテストを回す場合は、**実行時

元記事を表示

ぐりとぐらぐらい似てる dig と fetch の違いを解説

# 概要
ハッシュから値を取り出す方法で有名な【dig】と【fetch】に来ていただきました。

どういう時にどっちを使えば良いかわからなかったので、違いをまとめました。

# 対象
– dig と fetch をあまり使ったことが無い方
– dig と fetch の特徴を知りたい方
– 使い分けや挙動を知りたい方

# dig
dig は存在感のあるメソッドです。

階層化データからデータを掘り出していることを明示的にしてくれるので

コードの中に dig があるだけで、周辺でやっていることが透けて見えます。

### ハッシュからdigでデータを取り出す
とある amazon の summary データに来ていただきました。
“` ruby
def guri_to_dig
summary =
{“marketplaceId”=>”*****”,
“adultProduct”=>false,
“autographed”=>false,
“browseClassification”=>{“display

元記事を表示

【個人開発】北海道の魅力を発見し、北海道旅行のお悩みを解決するアプリを作りました🐄

# はじめに
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
完全異業種からエンジニアに転職するためオンラインスクールに入り学習をしていました。

オンラインスクールでは北海道から受講している方がほとんどおらず、
道外の方と交流する中で、

道外の方は意外と北海道について知らないことが多いのかも🤔
道民が近くにいなくても、代わりに相談に乗ってくれるようなアプリを作りたい💭
もっと北海道を身近に感じてもらいたい🦌
と思ったことがきっかけで、このアプリを作成しました。
  
**「えぞとらべる」**

https://ezo-travel.com/

https://github.com/satou-haruka-37/hokkaido_travel

# 使い方
### 1.北海道内のおすすめのスポットを探す機能
道外の方からの **「広すぎてどこに何があるかわからない」** というお悩みに対して、
投稿を地図上にマーカーで表示することで、どこにあるスポットなのか分かりやすくしました。
田舎のスポットも、有

元記事を表示

【Ruby on Rails】rubocopの警告「Rails/InverseOf」から学ぶinverse_ofオプション

私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。

個人開発中に`rubocop`から`Rails/InverseOf`と警告されたことをきっかけに`Active Record`の`inverse_ofオプション`を用いた`双方向関連付け`について学習した内容をアウトプットとしてこちらの記事にしました。
どなたかの参考になれば幸いです。

:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::

環境
ruby 3.2.2
Ruby on Rails 7.0.8

# 双方向関連付けとは
皆さんが良く知る以下のアソシエーション関連付けは`双方向関連付け`と呼ぶことができます
※まずこれすら知らずにアソシエーションだなんだかんだと言っていた私に石を投げてください
“`ruby
class User < ApplicationRecord has_many :books end class Book < ApplicationRecord

元記事を表示

Go導入はやっぱり悪戦苦闘するという話

# はじめに
Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

今回は普段Rubyをメイン言語としている弊社がGo導入に悪戦苦闘した話をしようと思います!

## 経緯
弊社ではメインでRuby、サブシステムにJava、Pythonを使用していました。
しかし、社内からエンジニア的な欲求としてGoを使用してみたいという声が多かったのと、エンジニア採用面から使用できる機会を窺っていました。

そんな中、そこまでfatではない[新アプリケーション](https://hubble-docs.com/news/forms)のAPIに使用してみようということになりました。

## 技術選定
今回の新APIは、ほぼ自分1人で担当することになったので予めエコシステム周りを決定していくことにして、以下の構成で行くことにしました。

– フレームワーク – Echo
調べた感じEchoとGinの2大巨頭っぽい
Ginだとワイルドカードパスを使用した共有のルーティングでコンフリクトが発生する

元記事を表示

オーバライドとモンキーパッチでどう違うねんと思ったので調べた

オーバーライド(Override)とモンキーパッチ(Monkey Patch)は、どちらも既存のコードの挙動を変更する方法ですか、
使用される文脈と目的において全く違う振る舞いをするよと教えてもらったのでまとめてみました。

### オーバーライド

オーバーライドは、主に継承で使用され、
サブクラスがスーパークラスで定義されたメソッドを再定義することを指します。

#### 具体例
“`ruby
class Animal
def speak
“Some sound”
end
end

class Dog < Animal def speak "Bark" end end dog = Dog.new puts dog.speak # 出力: "Bark" ``` この例では、`Dog`クラスが`Animal`クラスの`speak`メソッドをオーバーライドしています。 ### モンキーパッチ モンキーパッチは、既存のクラスやモジュールに新しいメソッドを追加したり、既存のメソッドを変更したりするために使われます。モンキーパッチは、継承とは関係なく

元記事を表示

AWS SAMを触ってみる

# はじめに
lambda関係を勉強中です。この記事は、やった作業内容の備忘録です

# AWS SAMとは
似た記事はたくさんあるので、詳細は割愛させていただきますが、公式ページでは以下ののように説明されています。

AWS Serverless Application Model (AWS SAM) は、AWS 上でサーバーレスアプリケーションを構築および実行するデベロッパーのエクスペリエンスを改善するツールキットです。AWS SAM は次の 2 つの主要な部分で構成されます。

1. AWS SAM テンプレート仕様
– AWS でサーバーレスアプリケーションインフラストラクチャを定義するために使用できるオープンソースフレームワーク。
1. AWS SAM コマンドラインインターフェイス (AWS SAM CLI)
– AWS SAM テンプレートやサポートされているサードパーティーの統合と併用することで、サーバーレスアプリケーションを構築し、実行できるコマンドラインツール。

https://docs.aws.amazon.com/ja_jp/serverl

元記事を表示

OTHERカテゴリの最新記事