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

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

Railsで画像を表示する方法、Bootstrapのスタイルの当て方

Railsでアプリを作成時、探し出すのに苦労したのでここに残します。

### Railsで画像を表示させたいとき

Railsでは、HTML方式も使えるし、Rubyも使えるので迷いがち画像を表示させようと、を使用すると、うまく画像が表示させられない。
そんなとき、画像はimage_tagを使うべし!
assets/imagesフォルダに画像を入れ下記のように記述で表示できる。
“`
<%= image_tag 'star.png' %>
“`
 ※ <%= image_tag 'ファイル名' %>

サイズを変えたければ,size: 変えたいサイズで可能
“`
<%= image_tag 'star.png', size:'80x80' %>
“`
 ※<%= image_tag 'ファイル名', size:'変えたいサイズ' %>

cssで変えたい場合は、下記のようにすればクラスが当てられる。
“`
<%= image_tag 'star.png', class:"logo" %>
“`
通常通りcssでクラス別に変更できる。
“`
.l

元記事を表示

VScodeでhtml.erbファイルを編集する際入力補正を使いたい

■学習内容
VScodeの拡張機能について

■理解したポイントや参考になった情報
rails課題2からローカル環境で開発することにしたのでVScodeでコーディングしていたところ、html.erbファイルのスニペットが有効ではなかったので自分なりに調べて有効化してみた。

1.拡張機能でrailsと検索し、プラグインをインストール
html.erbの拡張子で文法チェックとスニペットが使えたがhtmlタグのスニペットは有効化されなかった

2.settings.jsonに変更を加えた
 html.erbでhtmlのスニペットを有効化するために、settings.jsonのemmetにhtml.erbにhtmlをインクルードした

左下の設定を開く

検索でemmetと入力し「setting.jsonで編集」を選択

変更を記述
“`settings.json
“emmet.includeLanguages”: {
“html.erb”: “html”
“`

元記事を表示

Rubyのランダム処理について

じゃんけんアプリ作成
・ランダム処理について
RandomクラスのRandom.randメソッドと組込み関数rand(Kernelモジュール)どちらでも呼び出せるが、Randomクラスが推奨されている。
処理が高速らしい。

・eachメソッドとmapメソッド
eachは配列要素を順に取得し、処理を繰り返す。
array.each do |i|
puts i
end

mapは戻り値を集めた新しい配列を作るときなどに使われる
array2 = array.map{|i| i * 2}

ハッシュにも使えるが返り値は配列のため注意。
.to_hメソッドでハッシュに変換できる
hash2 = hash.map{ |key, value| [実行する, 処理 ]}

元記事を表示

Rubyのインスタンスメソッド、クラスメソッドについて

インスタンスメソッド、クラスメソッドについて
class Hey
def a
self.b #インスタンスメソッド内でselfと書いたらインスタンス自身を指す
end

def b
puts “Hey!”
end

def self.c #メソッド定義にselfと書いたらクラス自身を指す
puts “Hello”
end
end

selfの記述する位置でインスタンスを差すのか
クラスを指すのかが変わる

元記事を表示

RubyのFileクラスについてまとめ

memoアプリ作成
・Fileクラスについて
IO(input,output)クラスを継承している
File.open(“ファイル名”, “ファイルモード”)でインスタンス化

ファイルモードは”r”, “r+”, “w”, “w+”, “a”, “a+”など
r:読み取り、w:書き込み、a:追記(append), +は読み書きどちらも

インスタンスメソッド
file.read()メソッド:ファイル読み込み
file.write()メソッド:ファイルに書き込み

クラスメソッド
File.delete():ファイルの削除

追記
インスタンスメソッド
file.closeメソッド:読み込んだファイルを閉じる
openとcloseは基本セット

元記事を表示

いいね!機能の実装方法

## いいね機能の実装方法をこちらに記載致します。

まず最初にmoelのlike.rbを作成し、その後、ユーザーモデルと投稿にあたるモデルにhas_manyを使って関連づけます。

“`
class Like < ApplicationRecord belongs_to :user belongs_to :shop end ``` ``` class User < ApplicationRecord has_many :likes end ``` ``` class Shop < ApplicationRecord has_many :likes end ``` 続いていいね!ボタンを表示したいファイルでの書き方を説明します。 ボタンを押すことにより、見た目が変化するため、if文を設置する必要があります。 ``` <% if current_user.likes.exists?(shop_id: shop.id) %>
<%= link_to delete_like_path(shop), method: :delete, class: "like-btn"

元記事を表示

【Ruby】空のハッシュに自己代入(+=)したい

# できなかったこと
{}を定義したhashに自己代入演算子を使ったがエラー
“`ruby
hash = {}
hash[:hoge] += 1 # => undefined method `+’ for nil:NilClass (NoMethodError)
“`

# 解決策
ハッシュにデフォルト値0を設定し解決
“`ruby
hash = Hash.new(0)
hash[:hoge] += 1 # => 1
“`

# Hash.new(0)とは?
ハッシュにはキーに対応する値が存在しない時のデフォルト値を設定できる。`Hash.new(0)`でハッシュを生成した場合、デフォルト値が0になる。
設定がない場合、デフォルト値はnilになる。

“`ruby
hash = {} # => {}
hash.default # => nil

hash = Hash.new(0) # => {}
hash.default # => 0
“`

# なぜ自己代入演算子(+=)が使えたのか
自己代入演算子を使わない場合を考えて納得。
“`ruby
hash[:hoge] =

元記事を表示

Webアプリケーションをdocker化する(Ruby on Rails7.0 × postgres12)

## はじめに
本記事はRuby on Rails7.0とPostgresql12で構築したwebアプリケーションへdockerを導入する手順をまとめたものです。
“dockerを導入する”ことにフォーカスした記事となのでrubyやRails、postgresの知識がなくてもお読みいただけます。

## この記事でわかること
– Webアプリケーションをdocker化する方法
– ベースイメージのバージョンの決め方
– Dockerイメージの軽量化
– docker-composeを使うメリット

## フォルダ構成
![スクリーンショット 2023-07-29 17.10.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636274/0b26bc04-3396-6def-d591-bded1c9b7296.png)
今回dockerを導入するにあたって追加したファイルは以下の三つです。上から順に説明していきます。
– Dockerfile
– docker-co

元記事を表示

Rubyのoptparseライブラリの使い方

# はじめに

 Rubyの学習としてカレンダーを作成した際に、オプションで月を指定できるようにするために`optparse`ライブラリを使用したので、使い方をまとめました。

# optparseとは

 `optparse`は、Rubyファイル実行時にオプションを指定できるようにするライブラリです。

# 使い方

### 基本パターン
1. optparseをrequireする
2. OptionParserオブジェクトを生成する
3. onメソッドを用いて、オプションを指定するためのブロックを作成する
4. parseメソッドを用いて、与えられたARGVをparseする

“`sample.rb
require ‘optparse’
opt = OptionParser.new

opt.on(‘-a’) {|v| p v }
opt.on(‘-b’) {|v| p v }

opt.parse(ARGV)
p ARGV
“`
“`:実行結果
$ ruby sample.rb
#=> []

$ ruby sample.rb -a foo -b bar
#=> true

元記事を表示

Railsのform_withを自分なりにまとめてみた

## はじめに
未経験からプログラミング学習中のkekiと申します。

Railsのログインの仕組みを理解する中で、`form_with` の機能と個人的に難しかった疑問二点を記事にしてみました。
ログイン付近を学習中の方や、その復習をしたい方向けの内容です。
修正・追記あれば随時更新していきます。

## form_withとは
**Railsで情報を送信するためのヘルパーメソッド**です。
`form_with`を使うことにより、簡単に入力フォームに必要なHTMLを作成することができます。
かつての`form_tag`や`form_for`メソッドをひとまとめにした大変便利なものです。
以下のような初期設定があります。

– デフォルトでは`POST`メソッドの処理がされる
– デフォルトではid属性やclass属性は付与されない
– デフォルトで`remote: true`が付与
– 関連モデルがある場合はモデルを指定し、ない場合はURLを指定する

## 主な機能
大きく6つにまとめました。
1. **自動的に送信先のアクションをcreateかupdateに振り分けてくれる**

元記事を表示

既存のRailsアプリ(Postgres使用)をDocker化する手順

Dockerとdocker-composeについて学習し既存のRailsアプリをDocker化したので、その手順をまとめたいと思います。完成版は[こちら](https://github.com/yokoyamamn/rails-docker)です。

# 前提
– Dockerの基礎知識については学習済みと仮定します。
– 今回使用する既存のRailsプロジェクト名は`rails-docker`になります。
– DBはpostgresのversion12を使用します。
– ホストのファイルシステムとコンテナのファイルシステムを同期させます。

# 手順
大まかに以下のようになります。
– `database.yml`の編集
– プロジェクト直下にDocker関係のファイル作成
– `Dockerfile`の編集
– `compose.yaml`の編集
– docker-composeで起動
– `localhost:3000/`にアクセスできるか確認

## `database.yml`の編集
以下のように記述します。`password`のところは環境変数を設定します。
“`ru

元記事を表示

ruby.wasmでRubyからJavaScriptのメソッドを呼び出すしくみ

## JavaScriptオブジェクトのメソッドを呼び出せる

[ruby.wasm](https://github.com/ruby/ruby.wasm)では実行したRubyスクリプトからJavaScriptのメソッドを呼び出せます。
たとえば次のRubyスクリプトを実行するとbodyタグを表すHTML要素が取得出来ます。

“`ruby
html_element = JS.global[:document].querySelector(‘body’)
“`

JavaScriptで書くと次のようになります。

“`javascript
const htmlElement = globalThis.document.querySelector(‘body’)
“`

ruby.wasmの`JS.global`はJavaScriptの[globalThis](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis)を表す変数です。
JavaScript

元記事を表示

rails newからgit pushまで(SSH接続)

# 目的

SSH接続で最初のPushをする方法のメモ

# やったこと
新しいアプリを作り、Pushしようと思ったらユーザー名とパスワードではできなかった…。
SSH接続だとできるらしいので、やる。

### railsアプリの作成
環境構築は一通り終わっているので
以下でrailsアプリを作成します。
“`shell:cmd
rails new test
“`

### リポジトリの作成

https://github.com/

上記から、リポジトリを作成します。
今回は、「test」という名前でリポジトリ名以外はデフォルトで作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/589fd76c-1eed-e703-f024-8a3d82e5f619.png)

### SSH公開鍵の登録
以下のコマンドを入力してカギを作成します。
“`shell:cmd
ssh-keygen -t ed25519 -f .ssh/id_test -C ” “

元記事を表示

ruby.wasmの初期化シーケンス

[ruby.wasm](https://github.com/ruby/ruby.wasm)をブラウザで動かすためには次のJavaScriptを使って`ruby.wasm`を初期化します。

“`html

“`

上記のJavaScriptのソースコードは
https://github.com/ruby/ruby.wasm/blob/main/packages/npm-packages/ruby-wasm-wasi/src/browser.script.ts です。

## 初期化シーケンス

`browser.script.ts`で行っている初期化処理をシーケンス図にします。

“`mermaid
sequenceDiagram
Note over browser.script.ts: CRubyのWebAssemblyバイナリをダウンロード
バイナリを

元記事を表示

devise導入後ログアウトできないエラーの解決

deviseを導入してログアウトの時にcreated at に関するエラー文が出ていた。
migration fileに

“`ruby
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at

## Rememberable
t.datetime :remember_created_at
“`

これを記述したら解決した。

元記事を表示

RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法

## 発生する問題

RSpecのテストを実行すると以下のようなエラーが発生する。

“`
Webdrivers::VersionError:
Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = ` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html
# ./spec/system/tasks_spec.rb:24:in `go_to_project’
# ./spec/system/tasks_spec.rb:14:in `block (2 levels) in


# —————–

元記事を表示

Ruby on Railsのエラー画面の読み方

## 自己紹介
はじめまして、はると申します!
現在はスクールに通いながら学習をしており、学習開始から4ヶ月が経過しました。
 
## 概要
Ruby on Railsでアプリ開発中に出会うエラー画面の基本的な読み方について、
調べたりChatGPTに相談しながら、勉強を兼ねてまとめたものをアウトプットしてみます。
初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです?
(エラー例は、Ruby 3.1.3、Rails 7.0.5で作成した学習時間を記録するアプリで、記事のために意図的に起こしたものです)
 
## エラー画面の見方 例①NoMethodError
![6c5c3b7e63d012d172f585deeee8bd19.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3471604/8a1c7c9e-1f75-92a8-27c0-004a9ec079c1.jpeg)
 
項目の上から順に意味を確認していきます。
 
#### エラータイトル
`NoM

元記事を表示

[Rails]仮想カラムをもちいて、ソート機能を実装する

## はじめに
#### 実装したこと
PFでコミュニティサイトを作成しており、投稿一覧にソート機能を実装しようとしております。「いいねが多い順」のソート機能の実装が思ったより難しかったのでアウトプットのため、記事に残します。

#### 動作環境
Ruby 3.1.2
Rails 6.1.7.3

## 手順
#### モデルとカラムの状態
~~~shema.rb
create_table “contents”, force: :cascade do |t|
t.string “title”, null: false
t.text “text”
t.datetime “created_at”, precision: 6, null: false
t.datetime “updated_at”, precision: 6, null: false
end

create_table “favorites”, force: :cascade do |t|
t.integer “content_id”
t.datetime “cr

元記事を表示

ElastiCache for RedisのClusterモード(暗号化)への接続方法 Rails編

# はじめに
AWSでRedis(クラスターモードかつ暗号化)を作成した際、
接続が止まった状態でエラーログも何も出ない。。
ということで何に気を付ければいいか書いていく

## サーバー内接続確認

まずは接続コマンドを入力する。
注意点として
`-c` クラスターモードON
`–tls` 暗号化転送ON
このオプションがないと延々と接続待ちになるので注意
“`
$ redis-cli -h [エンドポイント] -p [ポート番号] -c –tls
“`

ただし、自身のredis-cliの`4.0.10`をインストールしていたが、redis-cliのオプションである`–tls`が使えなかった(ここで詰まった)
“`
Unrecognized option or bad number of args for: ‘–tls’
“`

なのでバージョン6をインストールする
“`
$ sudo amazon-linux-extras install redis6
“`

接続確認して完了
“`
# キー”mykey”に値”Hello, Redis!”をセットする
xx

元記事を表示

異なるOS間でのGemfile.lockの競合を解決する方法

## はじめに

オリジナルプロダクト(ポートフォリオ)のデプロイに向けて、最新のソースコードをAWS EC2に反映させようとしたところ、`Gemfile.lock` の競合が発生しました。
その原因と解決方法についてまとめました。

### 開発環境

– ローカルマシン
– OS:macOS Ventura
– AWS EC2
– OS:Amazon Linux 2
– 共通
– Ruby:3.2.2
– Rails:7.0.6
– Bundler:2.4.13

## エラーメッセージ

EC2 に`git pull`で最新のソースコードを反映させようとしたところ、以下のエラーメッセージが表示されました。

“`
error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge.
“`

「次のフ

元記事を表示

OTHERカテゴリの最新記事