- 1. 【Ruby】Ruby silver合格までの流れをまとめてみた【2023】
- 2. 【Ruby・Rails】ダックタイピング
- 3. railsのroutes.rbとは
- 4. 【Ruby】ブロックとProc
- 5. Ruby Silverのあれこれ備忘録
- 6. Ruby,Railsのバージョンアップ
- 7. 【Rails】 local: trueについて
- 8. Ruby 技術者認定試験 Gold対策集
- 9. Ruby on Rails5 速習実践ガイドを読んで
- 10. 投稿アプリのコメント機能
- 11. Dev Containerを使って、Rubyに触れてみる
- 12. さくらレンタルサーバーで ruby 3.3.0 をビルド
- 13. 投稿アプリの複数ページで利用する表示の一部をまとめる
- 14. 投稿アプリの投稿表示順を並べる
- 15. 投稿アプリで本人のみ編集削除を許可しよう
- 16. 投稿アプリマイページ機能の実装
- 17. 【Rails】rails generate controllerで生成されるファイルを制限する【Railsアプリ全体のジェネレータ設定変更】
- 18. ユーザー管理機能
- 19. 正規表現 – 量指定子(繰り返し)について
- 20. Rails パラメータを直接使って四則演算する際の注意点と解決策
【Ruby】Ruby silver合格までの流れをまとめてみた【2023】
## はじめに
同じような記事がたくさんありますが、自身の成長記録として書き残そうと思います。
(また、現時点では最新なので誰かのお役に立てば幸いです)## 受験者スペック
・プログラミング歴:約1年
・Ruby歴:同上
・Ruby使用頻度:業務で毎日## 所要時間
・約3週間
(内訳)
▫️参考書1週間(平均30分/日)
▫️模擬問題2週間(模擬問題1周/日ペース)
・集中して時間を取ればRubyやってる人なら2週間ぐらいで合格できるかと思います。## 実際にやった勉強法
#### 参考書
・試験用の[参考書](https://www.amazon.co.jp/%E6%94%B9%E8%A8%822%E7%89%88-Ruby%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-Silver-Gold%E5%AF%BE%E5%BF%9C-Ruby%E5%85%AC%E5%BC%8F%E8%B3%87%E6%A0%BC%E6
【Ruby・Rails】ダックタイピング
# ダックタイピングとは?
ダックタイピングはRubyのような動的型付け言語でよく使われるプログラミングの概念です。この概念は、「もしオブジェクトがカモのように歩き、カモのように鳴くなら、そのオブジェクトはカモである」という考え方に基づいています。つまり、オブジェクトの型よりも、そのオブジェクトがどのようなメソッドを持っているか(どのように「振る舞う」か)が重要とされます。
“`ruby:ダックタイピングを使った例
# オブジェクトの型よりも、そのオブジェクトがどのようなメソッドを持っているか
# Duck, Lion, Sheep, Zekromはそれぞれquackというメソッド・振る舞いを持っている状態
class Duck
def quack
“クワ!”
end
endclass Lion
def quack
“ガオー”
end
endclass Sheep
def quack
“メェメェ”
end
endclass Zekrom
def quack
“ババリバリッシュ!!”
end
enddu
railsのroutes.rbとは
# はじめに
最近railsを勉強し始めて、routes.rbの書き方を自分に中で復習したかったので、ここでまとめてみます
## routes.rbとは
railsのroutes.rbとは、ブラウザから届いたリクエストに対して、コントローラーで定義したアクションを結びつけるための書くファイルのこと具体的なコードを書いてみると以下のような感じ
“`routes.rb
Rails.application.routes.draw do
root “static_pages#home”
get “/help”, to: “static_pages#help”
post “/login”, to: “sessions#create”
delete “/logout”, to: “sessions#destroy”
end
“`
root,get,post,deleteなど色々書いてありますが、詳しく中を確認していきます
### rootとは(コード:1行目)
“`rb
root “static_pages#home”
“`
誰か
【Ruby】ブロックとProc
# Proc
本来オブジェクトにできないブロックをオブジェクト化するもの。これにより再利用性を高め、柔軟で動的なコードにすることができる。:::note info
ブロックとは?
– ブロックは、メソッドに渡すことができるコードの塊
– {} または do..end で囲まれたコードで表される
– メソッドは yield を使用してブロックを呼び出すことができる
– Rubyは全てのコードがオブジェクトと言われているが、例外的にブロックはオブジェクトではない。従来であれば、ブロックはオブジェクトにできなかったが、Procを用いることでブロックをオブジェクトとして扱うことができる“`ruby
# do..endの箇所がブロックで、timesの引数
3.times do |i|
puts a
end
#=> 0 1 2# {}の箇所がブロックで、timesの引数
3.times { |i| puts i }
#=> 0 1 2
“`
:::## 何が嬉しいの?ある時代とない時代の処理の違い
### 可搬性・再利用性・柔軟性
Procがない時代には、ブロック
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_idDev 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 8BUILD 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.rbclass ProductsController < ApplicationController def calculate_price price = params[:price] result = price * 5 render json: { result: result } end end `
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた