Rails関連のことを調べてみた2023年02月17日

Rails関連のことを調べてみた2023年02月17日

変数hashを作成するためのコード

初心に返り復習、備忘としてアウトプットします!

“`ruby:問題
# 下記のメソッドを実行した時に実行結果のように表示されるような変数hashを作成せよ。
puts puts hash.keys
puts hash.values

# 実行結果
one
two
three
1
2
3
“`

“`diff_ruby:解答
# 自身の解答
– hash{“one”:1, “two”:2, “three”:3}
# 模範解答
+ hash = { one: 1, two: 2, three: 3 }
“`

あーやってしまってる。。
=忘れてる。。。

ダブルクォーテーションは文字列に使用しているのであっても実行結果は同じに。
“`ruby:実行結果
irb(main):009:0> hash={“one”:1, “two”:2, “three”:3}
=> {:one=>1, :two=>2, :three=>3}
irb(main):010:0> puts hash.keys
one
two
three
=> nil
irb(main):011:0> puts ha

元記事を表示

【RSpec】RSpecの実行中に変数の中身を確認する際の注意点

# はじめに
Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。

# binding.pryで変数が確認できない

下記のように記載して、テストデータが生成されていることを確認しようとした。

`binding.pry`で停止させることで変数の中身(`product`の中身)を確認できると思ったが、実際に中身を見てみると値を確認できず。。。

“`bash
5: describe “GET /products” do
6:
7: let(:product) { create(:product) }
8: binding.pry # こに記載する
9:
=> 10: before do
11: # HTTPリクエストを実行
12:

元記事を表示

【議事録】メールの送信機能の実装について

# はじめに
– 本記事は、議事録としてまとめたものになります。
– 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
– また記載内容はすべて、正しい内容が記載されているとは限りません。
– 誤った内容を見つけた場合は、ご指摘をお願いいたします。

# この記事は誰向けの記事か?
– Ruby on Railsを開発しており、メールを送信するための機能を実装したい人
– Ruby on Railsを開発しており、メールを送信するための機能の基礎を抑えたい人

# 背景
– アプリのSSL化が成功したので、通信の暗号化が成功し、セキュリティの確保ができた。
– セキュリティの問題で、これまで手が出せなかった機能の開発に、着手することができるようになった。
– お問い合わせページを実装する際に、メールでの受付をすることを考えたため、メールの送信機能を実装する必要があった。
– 今回、GmailのSMTPメールサーバーを利用して、メールを送信するための記事を作成した。

# タスク
主に以下のタスクが生じます。
– 事前準備をしましょう。
– ターミナル上からメーラークラス

元記事を表示

Ruby環境構築&バージョン管理(Mac)

MacでのRuby環境構築についてまとめます。
また、開発を行う上で、複数のバージョンを管理したい時があると思うので、Rubyのバージョンを簡単に切り替えてくれるツールであるrbenvについても記載しています。
ちなみにMacでは元からRubyが入っています。

# Rubyインストール手順
– 1, Homebrewをインストールする
– 2, Homebrewを用いてrbenv(アール・ビー・エンブ)をインストールする
– 3, rbenvを用いてRubyをインストールする

## 1,Homebrewをインストールする
下記コマンドをターミナルで実行
“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
インストールされているかの確認
“`
brew -v
“`
下記のように出ていれば問題ないです。バージョンの部分はインストールした際のバージョンで異なります
“`
Homebrew 4.0.0
“`

## 2, H

元記事を表示

【Rails】Railsの環境構築でエラーが出てインストールできない時の対処法

## はじめに
M1 MacでRailsの環境構築をした時にエラーが出てうまくいかなかったので、
出たエラーと解決方法についてまとめました。

## 経緯
gemでrailsをインストール

**gemとは**
 ①RubyGemsが公開しているRubyのパッケージ
 ②パッケージ管理システム 
  →最近はbundlerというパッケージ管理ツールを使うことが多い
“`
$ gem install rails
“`

## エラー内容
“`
error: while executing gem … (gem::filepermissionerror) you don’t have write permissions for the /library/ruby/gems/2.6.0 directory.
2\.
“`

## 解決方法
gemがどこにあるか?
“`
$ which gem

/usr/bin/gem
“`

rubyがどこにあるか?
“`
$ which ruby

/usr/bin/ruby
“`

rubyはrbenvで管理しないといけないらしい

元記事を表示

Rails7でDaisyUIを使ったアプリ作成の環境構築

## ■ DaisyUIとは

DaisyUIは、Vue.js、React、Alpine.jsのためのオープンソースのUIコンポーネントライブラリです。DaisyUIは、簡単にカスタマイズできるデザインシステムを提供し、アプリケーションの開発を迅速化することを目的としています。

DaisyUIには、ボタン、カード、フォーム、アラート、モーダルなど、Webアプリケーションでよく使用されるUIコンポーネントが含まれています。また、カラーパレットやフォントファミリーの設定などのデザインシステムを提供することで、開発者がコンポーネントのスタイリングを簡単にカスタマイズできるようにしています。

DaisyUIは、無料で利用でき、さまざまなプロジェクトで使用されています。Vue.js、React、Alpine.jsのいずれかのフレームワークを使用している開発者は、DaisyUIを利用して、簡単かつ迅速にWebアプリケーションの開発を進めることができます。

## ■プロジェクトを作成する

“`ruby
rails new myapp -j esbuild –css tailwind

元記事を表示

Ruby if, else問題

# if, elseを使ってプログラムを作成します

条件は以下の通りです。
– 条件1:メソッドの実引数として「1以上の正の整数」を3つ用意し、それぞれを仮引数a,b,c としてnumメソッド内で使用する
– 条件2:第一引数と第二引数は足し算をし、変数abに代入する
– 条件3:第三引数が3以下の場合は変数abを第三引数の値で割り、結果を出力する
– 条件4:第三引数が4以上の場合は変数abを第三引数の値で掛け、結果を出力する
※小数点以下の出力は考慮しなくてかまいません。

模範解答
“`ruby
def num(a, b, c)
ab = a + b
if c <= 3 puts ab / c else puts ab * c end end # 呼び出し例 num(1,5,3) ``` ```:ターミナル 2 # ab = 1 + 5 = 6 # 6 / 3 = 2 ``` ## 解説 条件2に、第一引数aと第二引数bを足したものを変数abに代入するとあるので、その式を2行目に記述します。 if文には第三引数cが3以下の

元記事を表示

【Rails】belongs_toのバリデーションと外部キー制約についてまとめてみた

# 概要
以下のような`User`を親モデルにもつ`Post`モデルについて
`post.user_id`をデータベースに存在しない`User`の`id`や`nil`でセットして保存しようとするとバリデーションエラーが走ります。
“`ruby
class CreatePosts < ActiveRecord::Migration[7.0] def change create_table :posts do |t| t.references :user, null: false, foreign_key: true t.timestamps end end end ``` ```ruby class Post < ApplicationRecord belongs_to :user end ``` ```ruby post = Post.new(user_id: 1) # idが1のUserはまだ作られていないとする post.save # => false
post.errors.messages
# => {:user=>[“を

元記事を表示

Routing Error(uninitialized constant HomesController Object.const_get…)の解決について

# 概要
railsのタグ機能の練習がしたくて、railsの環境を構築しましたが、routingのエラーが起きたので解決の方法を記述します。

# 環境
rails 7.0.4.2
ruby 3.1.2
AWS
cloud9
mac

# エラーの意味
エラー文を[deepl](https://www.deepl.com/ja/translator#en/ja/uninitialized%20constant%20HomesController%20Object.const_get(camel_cased_word)%20%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%20Did%20you%20mean%3F%20HomeController%20raise%20MissingController.new(error.message%2C%20error.name)%20%5E%5E%5E%5E%5E)で検索します。

uninitialized constant HomesController Object.const_get(camel_cased_word) ^^

元記事を表示

【RSpec】RSpecの導入

# はじめに

Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。

# RSpecのGitHub

https://github.com/rspec/rspec-rails#rspec-rails–

# rspecのインストール

### Gemfileへの記載

`Gemfile`に下記の通り追記する。

Railsのバージョンに合わせてどのバージョンの`rspec`をインストールするかは、`GitHub`上で確認することができる。

テストデータを作成するための`Factory_Bot`という`Gem`も、テストを実行する際によく使用するため一緒にインストールすることが多い。

“`ruby
group :development, :test do
gem ‘rspec-rails’, ‘~> 4.0.0’ #Rails 5.xでRspecを使用する場合、このようにバージョン指定する。
gem ‘fact

元記事を表示

rails deviseを使った論理削除と、垢BANさせる機能と復活させる機能

# 管理者側で、会員ステータスを思うがままにする
論理削除で退会したユーザーのデータは残っています。なので、退会したユーザーを復活させることが可能。

チーム開発で管理者権限で垢BANさせる機能の実装ができなかったので、ポートフォリオで実装してみました。そして、復活させることもできます。神ですね。

## 前提

– deviseで、管理者側と、会員側のpublicで分けて実装している。
– データベースにbooleanのデータ型で、default: falseの会員ステータスを作成している。
– public(user)側で退会機能を実装してある。

### routes.rb
namespace :admin do
:
:
ユーザーを退会させる :idでユーザーのIDが取得できる。
patch “withdrawal/:id” => “users#withdrawal”, as: “withdrawal”
end

### controllers/admin/users_controller.rb

元記事を表示

【Rails】3種類のラベルのうち1つは必ず選択(バリデーション)

## はじめに
現在webアプリ制作に携わらせていただいている中で調べて学んだことをアウトプットしていきたいと思います。
よろしくお願いいたします。

## 開発環境
Rails 6.0.3
Ruby 3.0.1

## 参考記事
[Active Record バリデーション](https://railsguides.jp/active_record_validations.html)
[Railsで特定の条件下で走るバリデーションを作りたい](https://qiita.com/tmzkysk/items/a0c874715ba38eb23350)

## どうしたいか
新規質問投稿時に、3種類のタグから当てはまるタグを複数選択できるようになっているが、`「投稿時にタグを1つは必ず選択させる」`ようなバリデーションを構築したい。

## ER図
questionsテーブルにlabelsテーブル、categoriesテーブル 、kindsテーブルがそれぞれ多対多の関係で紐づいています。
![Qiita.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Railsアプリのローカル開発環境をスマホでも簡単に見られることを今更知ったので仕組みも理解する

## 困ったこと
Railsアプリを開発していて、スマホでの動きはブラウザの開発環境でスマホにして見るくらいしかできないと思い込んでいた。
stagingにデプロイする前にスマホで見られたら便利なのに…と思ってたら、そうか、できるんですね。

## 実装!
操作自体は簡単。
1. Railsアプリ`rails s -b 0.0.0.0`で起動

2. PCのIPアドレスを確認。
macは`システム設定`→`ネットワーク`→接続されているWiFiなどの詳細に書いてある。

3. PCと同じネットワークに繋がっているスマホで、Chromeなどのブラウザを開いて、そのIPアドレスにポート番号を付与してアクセス。

## 仕組みを理解する

まずrailsサーバーを起動するところがいつもと違うので頭を整理。
-bオプションを使っている。

“`terminal
→ rails s -b 0.0.0.0
=> Booting Puma
=> Rails 6.1.3.1 application starting in development
=> Run `bin/rails server

元記事を表示

【TechCamp】受講を終えてからの感想や

# はじめに
– 本記事は、個人の感想や定量的でない内容が含まれたりします。
– また記載内容はすべて、正しい内容が記載されているとは限りません。
– 誤った内容を見つけた場合は、ご指摘をお願いいたします。

# この記事は誰向けの記事か?
– プログラミングスクールの受講を考えている人
– TechCampを受講している人
– TechCampを受講し終えた人

# 私自身について
私は30歳の元ITエンジニア(2023年2月時点)です。以前の職場では、製造業向けのアプリケーション開発現場で約2年、製造メーカーの社内SEとして約2年勤めていました。そのため未経験というわけではなく、経験者という立ち位置で参加させていただきました。元々は仕事と並行しつつ、Webアプリケーションの開発経験を積めるスクールに通いたいなと考えていたのですが、脳の疾患に罹患し、仕事をリタイアしてしまいました。完治するかは未定ですが、今後もITエンジニアとして仕事をしていきたい、という思いもあり、TechCampへ参加することにしました。

# 受講プラン
私が受講したプランの情報は以下のとおりです。
– 短期集

元記事を表示

Railsで新規アプリケーションを作成

## はじめに
アプリケーションを新規作成する時の最初の手順を備忘録として記録しておきます。
## ターミナルで新規作成
**【ターミナル】**
“`terminal
% rails _(railsのバージョン)_ new (アプリケーション名) -d mysql
“`
## 文字コードの変更
必要があれば、文字コードを変更しておきます。

**【config/database.yml】**
“`diff_ruby
default: &default
(省略)
– encoding: utf8mb4
+ encoding: utf8
(省略)
“`
※文字コードを変更するのは何故か?
utf8:1〜3バイトまで対応
utf8mb4:1〜4バイトまで対応
文字化けを起こす可能性があるので、変更する必要がある場合が存在します。

## データベースの作成
ターミナルにて、データベースの作成を行います。

**【ターミナル】**
“`terminal
% rails db:create
“`

## ローカルホストで挙動確認
最後に、ローカルホストで、新規作成した

元記事を表示

【Rails+dynamodb-local 】配列型でカラムを保存したい

# はじめに
こちらの記事に続きになります。

https://qiita.com/does_not_exist/items/19c35639e466844e8b0e

https://qiita.com/does_not_exist/items/23a70dab286ed146b05f

dynamodb-localに保存されたレコードを確認すると、配列として保存されてほしいデータが文字列になっていました。
フロントから配列としてデータを受け取れていたので、dynamoidの設定を見直してみることにしました。

“`backend/app/models/hoge.rb
class Hoge
include Dynamoid::Document

table name: :hoges, key: :id, capacity_mode: :on_demand
field :title, :string
field :comments, :string ,array: true

end
“`

modelを確認すると、配列型の宣言が間違っていました。
dynamoid

元記事を表示

【Rails】後から id 列を追加したい

`id: false` で作成したテーブルに対して、やっぱり id を追加したいってなることもありますよね。

そんなときは以下のマイグレーションで追加できます。

“`rb
class AddIdToUsers < ActiveRecord::Migration[6.1] def change add_column :users, :id, :bigint, primary_key: true, auto_increment: true, null: false, first: true end end ``` これで以下のようなマイグレーションが実行されます。 ```ruby Migrating to AddIdToUsers (20230215062132) == 20230215062132 AddIdToUsers: migrating ======================= -- add_column(:users, :id, :bigint, {:primary_key=>true, :auto_increment=>true, :null=

元記事を表示

Ruby sliceメソッド

# sliceメソッド
配列や文字列から、指定した要素を取り出すことができるメソッドです。

“`ruby:例
# 配列を作成します
array = [0,1,2,3,4,5,6]

# 配列から引数で指定した要素を取得します
ele1 = array.slice(1)
puts ele1
#=> 1 # 0番目から始まるため、1が取り出されました

# 配列番号-4から4つ分の要素をsliceします
ele2 = array.slice(-4,4)
puts ele2
#=> 3, 4, 5, 6

# 配列はもとのままです
puts array
#=> [0,1,2,3,4,5,6]
“`

# sliceメソッドを使って指定した文字列を取り出すプログラムを作成します

条件は以下です。
– 条件1:対象の文字列から末尾にある2文字を取得すること
– 条件2:取得した2文字を3回繰り返して出力すること

“`ruby:模範解答
def extra_end(str)
right2 = str.slice(- 2, 2)
puts right2 * 3
end

#

元記事を表示

【Ruby on Rails】validationの冗長をなくす方法

# 前提条件
– Ruby 3.1.0
– Rails 7.0.4

# 背景
全てのカラムに対して同じバリデーションを設定すると、下記のように同じ記述が繰り返され冗長性がある状態である。
“` ruby:User.rb
class User < ActiveRecord::Base validates :name, presence: true #冗長性あり validates :email, presence: true #冗長性あり validates :age, presence: true #冗長性あり validates :password, presence: true #冗長性あり end ``` # やりたいこと バリデーションの冗長性をなくしたい。 # 方法 ### with_optionsブロックを使う 下記のようにwith_optionsブロックでpresenceをまとめることで、ブロック内のカラムすべてに適用されるようになる。 ``` ruby:User.rb class User < Active

元記事を表示

Gem fileにてGemを取り込む方法 Gemfile.lockの説明

使用しているVer ruby 2.6.5 Rails 6.0.6.1

○Gemとは?
誰かが作ったものを活用するために、Gemが存在します。
プログラマーでよく言われる言葉で、「車輪の再発明をしない」
この言葉の元Gemというものがありそういったもの総称をライブラリーとも言います。
ライブラリーは有名な言語であれば必ず存在します。

○早速Gemを取り込んでいきたいと思います

まずGem fileにてGemの名前を書き込みます。
 今回はfakerを取り入れます。
 

下記をGem fileに記入

gem ‘faker’
ターミナルにて、

$ bundle install

と実行。※$は記入しません。
以上でfakerのダウンロード完了です?

・READMEのドキュメントに使い方やインストールのやり方が記入されています。
https://github.com/faker-ruby/faker
もし、他にも取り入れたいgemがあれば、READMEを参考に使用するか
全て英語で分かりづらい時は、有名なgemであれば検索して日本語で出てくるかと思

元記事を表示

OTHERカテゴリの最新記事