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

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

Windows10で、Redmine 5.04(Mysql 8.0, Ruby 3.1)すべて手動インストール

# はじめに
Redmine単体 をWindows 10にインストールしたときのメモ

version:
Redmine 5.0.4
MySQL 8.0.32
Ruby 3.1.3

# 経緯
Windows10, Cygwin の環境に、Mysql 8.0 が別にあったので、
Redmine単体をいれて普通に動かせるかと思ってやってみると、いろいろ動かなかったため
その試行錯誤して、インストールできるまでの備忘録


# もともとあったCygwin のRuby 2.8を使った場合

公式手順
http://guide.redmine.jp/RedmineInstall/

> Step 6 – データベースのテーブル等の作成
> データベース上にテーブルを作成してください。Redmineのインストールディレクトリで下記コマンドを実行します。
>
> RAILS_ENV=production bundle exec rake db:migrate
でつまづく。

RubyのMysql2 とMySQLサーバーと接続せず、以下のエラー
~~~
Can’t connec

元記事を表示

sudoは必要なときに使う

ターミナルで入力するコマンドでたまに出てくる`sudo`だが、これのせいで私は半日程度苦しんだのでここに残しておく。

Ruby on Rails チュートリアルをやっていたときに途中で自分のコードがおかしくなり、仕方なく筆者の方のgithubからクローンしてやり直すことになった。

その際master.keyファイルが無かったため、
[master.keyが見つからない問題 [初見殺し] – はじめてのデプロイで嵌るポイント](https://qiita.com/naokit-dev/items/5e09b2fb4b64a29712e4)
の記事などを参考にしてcredentialsyml.encも消してから自分で新しく二つとも作り直そうとして、ターミナルで
“`
sudo EDITOR=”vi” rails credentials:edit
“`
を実行した。

「管理者権限が必要なんやなー」くらいのノリで実行したが、
結論から言えばこの`sudo`が悪さをしており、`sudo`無しで
“`
EDITOR=”vi” rails credentials:edit
“`
と実行

元記事を表示

【Rails+dynamodb-local】dynamodb-localのテスト環境をつくりたい

# はじめに
テスト環境を作る際に色々と詰まった点を簡単にまとめてみます。

dynamodb-localなどの構築はこちらの記事で行っています

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

# 詰まった点1:dynamodb-localのコンテナを開発用とテスト用に分ける?
結論から言うと1つにまとめました。
dynamoidで勝手にテーブルを作成してくれるので、コンテナを分けないと開発用とテスト用で同じテーブルを使用することになってしまうのではと思いました。しかし、helperでdynamoidの設定を作成することでこの問題を解決することができました。

# 必要な設定

“`backend/spec/rails_helper.rb
require ‘spec_helper’
require ‘dynamoid’

Dynamoid.configure do |config|
config.namespace = ‘test’
config.region = ‘ap-northeast-1

元記事を表示

Why Ruby on Rails Training is Essential for Web Developers

![ruby-on-rails-igmguru_619772196_xl.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3131492/c82fb577-0bcb-7da2-3293-c319fd2298a8.jpeg)

Ruby on Rails (RoR) is a popular web application framework that allows developers to build high-performance and scalable web applications with ease. It is a widely used framework in the web development industry, and many popular websites such as Airbnb, GitHub, and Shopify a

元記事を表示

Capistrano自動デプロイ時のブランチが見つからないエラー

# エラー内容
Capistranoを使用して自動デプロイコマンド
`bundle exec cap production deploy`
を実行したところ、以下のようなエラーが発生。
“`ruby:エラーメッセージ
git archive master
fatal: not a valid object name: master
“`
1行目ではGitのmasterブランチ
2行目では「master」という名前のオブジェクトが無効とのこと。

# 解決まで
おそらく、「master」というブランチが無効(もしくは存在しない)ために
エラーが発生していると想定。

また、現在のGithubにおける大元のブランチが「main」となっているため、
ブランチ名を「master」にするか、Capistranoが検索するブランチを「main」に
変更すれば解消できるのでは、と考え調べたところ、

“`ruby:config/deploy.rb
set :brach, “main” #末尾に記載
“`
上記のように追記することで、Capistranoで検索するブランチを「main」に
変更

元記事を表示

【Ruby on Rails】選択ボックスをモデルの情報を元に生成する方法

# 前提条件
– Ruby 3.1.0
– Rails 7.0.4

# やりたいこと
選択ボックスをvegetableテーブルの情報を元に生成したい。

### vegetableテーブル
|id |name |
|:—|———–|
|1 |たまねぎ |
|2 |じゃがいも |
|3 |にんじん |

# 方法
### collection_selectメソッドを使う
“` ruby:vegetable_controller.rb
def new
@veges = Vegetable.all
end
“`
“` ruby:new.html.erb
<%= f.collection_select(:name, @veges, :id, :name) %>
“`
第一引数:フォームの対象モデルの中の該当する属性名を設定する。
第二引数:選択肢の情報として提供する。
第三引数:フォームのvalueを設定する。
第四引数:optionタグ内のテキストを設定する。

# 結果
選択ボックスをvegetableテーブルの情報を

元記事を表示

Ruby if, else問題

# if, else問題

条件分岐を利用して、プログラムを作成していきます。
内容は下記の通りです。
ECサイトのポイント付与サービスを考えます。
購入金額が999円以下の場合、3%のポイント
購入金額が1000円以上の場合、5%のポイント
このように付与されるポイントを出力するメソッドを作りましょう。

ただし誕生日の場合はポイントが5倍になります。
誕生日の場合はtrue, 誕生日でない場合はfalseで表します。
また、小数点以下をすべてのポイント計算が終わったあとに切り捨てましょう。

“`ruby:模範解答
def calculate_points(amount, is_birthday)
if amount <= 999 point = amount * 0.03 else point = amount * 0.05 end if is_birthday point = point * 5 end puts "ポイントは#{point.floor}点です" end # 呼び出し例 calculate_points(50

元記事を表示

rails follow_redirectについて

#目次
①follow_redirectの意味.
②follow_redirectのイメージ.
③例文でfollow_redirectの挙動を確認.

#follow_redirectの意味.
一言で言うと⇨
「コントローラの中で記載されているリダイレクト先に従って」という意味。

#follow_redirectのイメージ.
![スクリーンショット 2023-02-17 13.33.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602256/cf4ba1bf-6847-5f02-2a0d-4c9db2cb780d.png)

#例文でfollow_redirectの挙動を確認
例 Usersコントローラの中に↓のようなアクションがあるとする.コントローラ内でしようとしていることは「ユーザー登録です」
ユーザー登録成功⇨@userにリダイレクト.
失敗⇨new.html.erbにリダイレクトするというコードです。

“`
def create
@us

元記事を表示

変数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の実行中にletで定義したメソッドの中身を確認する際の注意点

# はじめに
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リクエストを実行

元記事を表示

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

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

# この記事は誰向けの記事か?
– 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

元記事を表示

OTHERカテゴリの最新記事