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

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

Ruby Silverのあれこれ備忘録

### 【概要】

標記の通りになります。記述漏れなどございましたらご指摘のほど宜しくお願いします。
主に、ruby silverに関しての備忘録になります。
これからruby silverを受験する・受験するか悩んでいる方向けの参考になればと思います。

【目次】

1.ruby silverとは?
2.学習方法について
3.学習の目安時間
4.ruby silverの頻出問題
5.ruby silverの個人的に気になったこと
6.終わりに
7.引用

【1.ruby silverとは?】

まず、ruby silverについて解説します。以下、公式サイトの原文です。

>Ruby技術者認定試験制度は、Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師及びRubyを学ぶ学生などを対象とした認定試験制度です。認定者は、Ruby技術者としての技術力を公正に評価され、高い水準のRubyによるシステム開発能力を持つことを認定されます。
>認定によりRubyベースでシステム開発を行ううえで必要な基礎

元記事を表示

Ruby,Railsのバージョンアップ

# 背景
– Ruby2.7.7とRails6.0.6.1で開発したアプリを運用します。デプロイ先はherokuで特に問題なくアプリは動いていました。
– しかしながら、Ruby2.6.ZとRails6.1.Zでは、Status(Rails Maintenance Plicy)が「EOL」となっています。
– そこで、Status(Rails Maintenance Plicy)が「Maintained for Security Issues」となっているRuby3.0.ZとRails6.1.Zへのバージョンアップを試みました。

<参考記事>

https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html

# 現在のバージョン
Ruby:2.7.7
Rails:6.0.6.1
bundler:2.4.13
node:16.20.0
npm:8.19.4
yarn:1.22.19
webpack:4.46.0
※開発環境は、macOS Monterey バージョン12.1です。
※エディターは、VS

元記事を表示

【Rails】 local: trueについて

# local: trueについて

## local: trueとは
Railsはデフォルトで同期処理になっています。
しかし、form_withはデフォルトで非同期処理(ajax)になっています。
※Rails5.2< あなたが使用しているRailsのバージョン < Rails 7.0の状態の場合 そこで、下記のようにform_withにlocal: trueオプションを付与することで、form_withが非同期処理から同期処理に変更されます。 それがlocal: trueオプションになります。 ```ruby <%= form_with model: @board, class: 'new_board', local: true do |f| %>

<%= f.label :title %>
<%= f.text_field :title, class: 'form-control' %>
元記事を表示

Ruby 技術者認定試験 Gold対策集

## 内容
Ruby技術者認定試験のGold資格取得のための振り返り記事になります。

## 前提
Ruby3.1系

## 学習教材
– REx
– https://rex.libertyfish.co.jp/exam_histories
– CTC
– https://www.school.ctc-g.co.jp/ruby/training_ruby_gold_01_10.html
– まとめ記事

https://qiita.com/jonakp/items/c7b7ecfe3eb9ee8c950e

# 目次
[objectクラス関連](#objectクラス関連)
[module関連](#module関連)
[self関連](#self関連)
[探索順](#探索順)
[enumeratorクラス関連](#enumeratorクラス関連)
[procオブジェクト](#procオブジェクト)
[例外処理関連](#例外処理関連)
[気になるメソッド](#気になるメソッド)
[演算子関連](#演算子関連)
[日付関連](#日付関連)
[正規表現関連](#正規表現関連)

元記事を表示

Ruby on Rails5 速習実践ガイドを読んで

# はじめに
今回はrailsインプット学習の一環として
[現場で使える Ruby on Rails 5速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4%E5%AF%A7%E5%AD%90/dp/4839962227)を読了しましたので、その感想・学んだことを記述していこうと思います。

* これから読もうと検討しているが、その前に一通り本書の概要を知りたい方
* 読了したが改めて本書の要点を整理したい方

といった方々にお役に立てれば幸いです。

# よかったところ
### 簡単なアプリを作りながらrailsの基礎を学べる
表題にあるように、本書では簡単なTodoアプリとタスク管理アプリを作成しながらrailsを学ぶことができます。
2つ目のタスク管理アプリに関しては多

元記事を表示

投稿アプリのコメント機能

コメント機能の実装です
正直ここはすごく苦手です。。。
Xの素晴らしい出来に改めて尊敬です!

### 目的
– アソシエーションを復習
– ルーティングのネストの理解

コメントは、ツイートと別のテーブルで管理しなくてはなりません。
なのでコメントテーブルを作る必要があります
さらに、コメントはどの投稿に対してのコメントなのか、
誰の投稿したコメントなのか明示されている必要があります
そのため、userモデルとtweetモデルの2つにアソシエーションを組む必要があります

### Commentモデル作成
`rails g model comment`

#### マイグレーション編集
db/migrate/20XXXXXXXXXXXX_create_comments.rb
“`ruby
lass CreateComments < ActiveRecord::Migration[7.0] def change create_table :comments do |t| t.integer :user_id t.integer :tweet_id

元記事を表示

Dev Containerを使って、Rubyに触れてみる

## はじめに

この記事の中でやりたいことは、以下のことです。
– Rubyの動作環境を構築する
– vscode拡張機能の「Dev Containers」を使う

## Dev Containersとは?

公式ドキュメント:https://code.visualstudio.com/docs/devcontainers/containers

Dev Containerはコンテナの内部で、簡単に開発環境を構築することができます。
この拡張機能を使用すると、ローカルにRubyをインストールする必要もありません。
(Dev Containerの構築時にGUIで選択するだけ)

また、Dev Containerの設定は[devcontainer.json](https://code.visualstudio.com/docs/devcontainers/containers#_create-a-devcontainerjson-file)の中に記載されます。
一度作成した設定を他でも使いまわせるのはありがたいですね。

↓公式のイメージ図
![image.png](https://qi

元記事を表示

さくらレンタルサーバーで ruby 3.3.0 をビルド

# はじめに
さて,クリスマスといえばRubyのメジャーアップデートですね.早速 [去年と同じ方法](https://qiita.com/cycloawaodorin/items/0bec7bc01849ad7d4ba0) で ruby 3.3.0 をインストールしてみましょう.

“`
==> Installing ruby-3.3.0…
-> ./configure “–prefix=$HOME/.rbenv/versions/3.3.0” –enable-shared –with-ext=openssl,psych,+ –disable-install-rdoc –with-openssl-dir=/usr/local “–with-libyaml-dir=$HOME/local”
-> make -j 8

BUILD FAILED (FreeBSD 13.0 on amd64 using ruby-build 20231225-2-g3b79c293)

You can inspect the build directory at /home/cycloaw

元記事を表示

投稿アプリの複数ページで利用する表示の一部をまとめる

テックキャンプの復習です!
いいねお願いします!

### 目的
– 部分テンプレートの理解
– renderメソッドで描画方法を理解
– 部分テンプレートのメリットを理解

### 表示の一部をまとめて再利用しよう
#### 部分テンプレート
ビューファイルにおいて繰り返し使用するコードを切り出し、再利用する仕組み
rubyで繰り返し使うような処理をメソッドでまとめてきたのと同じ。

テンプレート自体のファイル名は、命名規則として、アンダースコア`_`を先頭に記述します

### 投稿表示一覧部分をまとめよう
`app/views/tweets`に`_tweet.html.erb`作成

#### renderメソッド
部分テンプレートを呼び出す際に利用するメソッド
#### partialオプション
renderメソッドで使用できるオプション
`partial`というオプションをつけ、部分テンプレート名を指定することで、該当する部分テンプレートを表示できる
例)
`<%= render partial: "sample" %>`
#### localsオプション
renderメソ

元記事を表示

投稿アプリの投稿表示順を並べる

テックキャンプのカリキュラムの復習です!
いいねお願いします!

“`ruby“`

### 目的
– orderメソッドの理解

### 投稿最新順表示
#### レコードの取得順変更
##### orderメソッド
ActiveRecordメソッド
テーブルから取得してきた複数のレコード情報を持つインスタンスの、並び順を変更するメソッド

`インスタンス = モデル名.order(“並び替えの基準となるカラム名  並び順”)`
ASC(昇順) DESC(降順)

app/controllers/tweets_controller.rb
“`ruby
def index
@tweets = Tweet.includes(:user).order(“created_at DESC”)
“`

元記事を表示

投稿アプリで本人のみ編集削除を許可しよう

オンラインスクールの復習のための備忘録です!
いいねお願いします!
### 目的
「deviseのメソッドを使用し、ユーザーのログインの有無を変える」など、アプリ制作において使用頻度の高い分岐を体験し、理解する

##ログイン中のユーザー情報取得
###投稿者本人か確認して表示を変えよう
編集ボタンと削除ボタンの表示部分をif文で囲う
“`ruby
~略~
<% if user_signed_in? && current_user.id == tweet.user_id %>

  • <%= link_to '編集', edit_tweet_path(tweet.id) %>
  • <%= link_to '削除', tweet_path(tweet.id), data: { turbo_method: :delete } %>
  • <% end %>
    ~略~
    “`
    `current_u

    元記事を表示

    投稿アプリマイページ機能の実装

    こちらも備忘録です!

    ### 目的
    – アソシエーションの理解
    – N+1問題の対策を理解

    ### ツイートにユーザー情報を追加
    「誰が投稿したのか」わかるようになり
    – 特定のユーザーがつぶやいたツイート一覧を取得できる
    – ツイートの削除を行う際につぶやいた本人しか削除できないように設定できる
    機能が実現可能になります

    #### tweetsテーブルにカラムを追加
    tweetsテーブルに新しく`user_id`というカラムを作成する
    そこにツイートを投稿したユーザーのidを保存します
    #### tweetsテーブルにuser_idカラムをinteger型で追加
    ターミナル

    `rails g migration AddUserIdToTweets user_id:integer`
    `rails db:migrate`

    ### ツイート保存時にユーザー情報も追加
    user_idカラムに、ツイートを投稿した(現在ログイン中の)ユーザーの
    idを保存する処理を記述
    ここに保存すべき値は、currenr_userのid
    #### current_userメソッド
    現在ログインしてい

    元記事を表示

    【Rails】rails generate controllerで生成されるファイルを制限する【Railsアプリ全体のジェネレータ設定変更】

    ※この記録は、プログラミング初学者である私が、行き詰まったり難しいと思ったりしたものを復習できる様にとして残している自分メモです。同じ様なところでつまずいている方のお役に立つことができれば尚よし。間違った記載等あれば教えていただければありがたいです。

    ## はじめに
    いろんなファイルを自動作成してくれるgenerateコマンド。しかし初期段階では何から何まで自動生成されると煩わしさを感じるものもあるからRailsにはジェネレーター実行時にファイルを生成しない為の設定も用意されている。
    今回は、config/application.rb内の設定によって、generate コマンドで生成されるファイルに制限をかけようかと。

    ## rails generation時の挙動を確認
    ターミナルでrails generation(またはrails g)を実行。
    下記の様な色々なファイルが自動生成される。

    “`
    $ bin/rails g controller boards
    Running via Spring preloader in process 26592
    [+] Running 2

    元記事を表示

    ユーザー管理機能

    ユーザ管理機能はとても便利なRuby on RailsのGem機能です!
    備忘録として投稿します!

    ### 目的
    – deviseを理解
    – deviseを使用したユーザー登録の理解
    ### ログイン機能の実装
    – ユーザー登録したユーザーのみがアプリを使えるようにする
    – ログインしてないユーザーは投稿機能のアプリだと
    新規作成、編集、削除機能などが使えないようにする

    ### ライブラリのインストール
     #### devise
    ユーザー管理機能を簡単に実装するためのGem
    Gemfile
    `gem ‘devise’`

    ターミナル
    `bundle install`
    Gemインストール後はサーバー再起動
    インストールしたGemの反映のタイミングが、サーバー起動時であるため
    `ターミナル`

    ### deviseの設定ファイルを作成
    #### rails g devise::innstall コマンド
    追加したdeviseというGemの「設定関連に使用するファイル」を自動で生成するコマンド

    `rails g devise:install`

    ### deviseのUse

    元記事を表示

    正規表現 – 量指定子(繰り返し)について

    # はじめに
    正規表現で、直前の文字の出現回数を指定する、量指定子の紹介と簡単な用法を例示する。
    検証は Ruby で行うため、Onigmo 正規表現ライブラリに従う。

    # 量指定子(Quantifier)

    `「」`とそれに囲まれた領域にマッチするパターンを検討する。
    “`:例文1
    aaa「bbb」ccc
    “`
    こういった文字列の `「bbb」` にマッチする表現を考える。

    その中で量指定子の種類と効果を確認する。

    ## 用法
    `「」` の中に含まれるテキストが固定内容なら、以下の様に簡単な正規表現を記述できる。

    “`ruby:基本1
    re = Regexp.new(/「bbb」/)

    p ‘aaa「bbb」ccc’.scan(re)
    # => [“「bbb」”]

    # scan なのでマッチしたすべてが配列で出てくる
    “`

    しかし、入力された文字列を対象とする場合
    `「」` に含まれる内容は文字種も長さも定まったものではないだろう。

    この不定な内容にマッチするように正規表現を書く際に、量指定子が有効である。

    量指定子にはいくつかのタイプがある。

    ## gre

    元記事を表示

    Rails パラメータを直接使って四則演算する際の注意点と解決策

    ※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

    # はじめに
    Railsアプリケーションを開発する際に、パラメータの処理は非常に重要です。
    しかし、パラメータはデフォルトで文字列として扱われるため、予期せぬ結果が生じることがあります。
    本記事では、その中でも掛け算の処理に焦点を当て、問題の理解と解決策について説明します。

    # パラメータの文字列扱いによる問題
    Railsでは、リクエストパラメータはデフォルトで文字列として扱われます。例えば、以下のようなコントローラアクションがあるとします。

    “`ruby
    # app/controllers/products_controller.rb

    class ProductsController < ApplicationController def calculate_price price = params[:price] result = price * 5 render json: { result: result } end end `

    元記事を表示

    【Rails】form_withにおけるmodel: とは何者か?

    :::note warn
    **注記**
    この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
    情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
    :::

    こんにちは!
    ご覧いただきありがとうございます!
    **Ito** と申します!
    Ruby on Rails初学者です。
      
    タイトルの通り
    **form_withにおけるmodel: とは何者か?**
    個人的にわかりにくいと感じたので、端的にまとめてみました。

    ## 場面設定
    掲示板アプリを想定しています。

    * `Post`モデルの`index`ビューに、`author`(著者)を選択して`post`を検索できる検索フォームを実装しています。
    * `Post`モデルが`Author`モデルと関連付けされています。
    * `authors`テーブルと`posts`テーブルは **一対多** の関係です。

    ### モデル
    “`rb:app/models/post.rb
    class Post < Applicat

    元記事を表示

    【Rails】yieldとrenderの違い

    # はじめに
    Railsチュートリアルを進めているとview/layouts/application.html.erbの中で見かけたyieldというメソッドと部分的に描画するrenderという似たようなメソッドが目につき、これどういう違いなのかと疑問に思ったので記事にしてました。

    # そもそもapplication.html.erbって?
    Railsのビューは
    – application.html.erb → HTMLやHEADタグなどの共通レイアウト
    – アクション名.html.erb → BODYタグ内の個別レイアウト

    この二つで役割分担して画面表示している。

    application.erbはコントローラ固有のレイアウトが見つからない場合、**デフォルトで使用される共通レイアウト。**

    全てのページで使われるhead、ヘッダー、フッターなどをここで一括して書くことで個別レイアウト内で同じコードを書く必要がなくなり、DRYが保たれる。
    [(コントローラーでレイアウトを指定するにはlayoutメソッドを使う)](https://pikawaka.com/rails/layou

    元記事を表示

    [Ruby] コマンドライン用フレームワーク「Benry-CmdApp」の紹介

    ([2023年 Ruby アドベントカレンダー](https://qiita.com/advent-calendar/2023/ruby) 8 日目の記事です。もともと別の方(dzsさん)がエントリーしていましたが、キャンセルされたようなので、代打を務めます。記事公開が最終日になったのは、キャンセルに気づいたのが 2、3 日前だったからです。ご理解をお願いします。)

    サブコマンドを受け取るタイプのコマンドラインアプリケーション用に、「[Benry-CmdApp](https://kwatch.github.io/benry-ruby/benry-cmdapp.html)」というフレームワークを Ruby で開発したので紹介します。

    ## 概要

    Git や Docker や Gem のコマンドは、サブコマンド(またはアクション)を受け取ります。またサブコマンドごとに異なるオプションを受けつけます。

    “`term
    $ git commit -m “message” # 「commit」がサブコマンド

    $ docker run -it “ubuntu:lat

    元記事を表示

    【Rails】O/Rマッピング時の中間テーブル、わかりにくかったので簡単に調べた。

    :::note warn
    **注記**
    この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
    情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
    :::

    ご覧いただきありがとうございます!
    **Ito** と申します!
    Ruby on Rails初学者です。
      
    タイトルの通り
    **「RailsでのO/Rマッピング時、中間テーブルがどのように変換されているのか?」**
    個人的にわかりにくいと感じたので、端的にまとめてみました。

    ## 場面設定
    タグ投稿機能を持った掲示板アプリを想定しています。

    `Post`モデルが`Tags`モデルと関連付けされています。
    `posts`テーブルと`tags`テーブルは`post_tags`テーブルを介して多対多の関係です。

    ### モデル
    “`rb:app/models/post.rb
    class Post < ApplicationRecord has_many :post_tags has_many

    元記事を表示

    OTHERカテゴリの最新記事