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

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

エンジニアとしてフルリモートワークで8年生き残るための技術スタック

こんにちは。[吉田智哉](https://twitter.com/tomoya_y0shida)です。
岩手県盛岡市に住みながらエンジニアとしてフルリモートワークで東京の開発案件を請けてます。
気が付くとこの働き方で8年間も経過していました。
8年生き残ることができた技術スタックをシェアしたいと思います。
今までの8年間で、これから先はどうなるかわかりませんが、これらを軸に守備範囲を広げていけば、
これからもフルリモートワークで生き残っていけるのではないかと思っています。

## Ruby on Rails

Ruby on Railsは私がエンジニアになるきっかけとなったフレームワークです。
リモート案件が多いので、リモートワークしたい人であればRuby on Railsを学ぶといいでしょう。
GolangやTypescriptに押され気味な感じもしますが、実際に転職エージェントやフリーランスエージェント,
Wantedlyで案件を探してみるとまだまだRuby on Rails案件は多いです。
8年前から今までも十分にリモート案件が存在します。
YoutubeやXなどのナノインフルエ

元記事を表示

AIを使って個人開発のアイデアを出しまくる・ブラッシュアップしまくる

## AI機能追加🚀 個人開発をもっと楽にしたい話

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498701/3193f961-ced5-5651-5297-49eb5fc9f6c8.png)

## 目次
1. なんでAIを入れるの?
2. 新機能紹介
3. 気になるお金の話
4. 個人開発を盛り上げたい
5. まとめ

## 1. なんでAIを入れるの?

答えからいうと、「個人開発をスムーズにして、ideeeの価値を格段に上げたから」です!

ideee(アイディー)とは「アイデアとエンジニアのマッチングプラットフォーム」として生まれました。
おかげさまでアイデアを見にきてくれる方、アイデアをブラッシュアップしたいと投稿する方によって、ideeeは利用されてきました。
気づけばアイデアは500を超え、ユーザー数も約1500人に!

https://ideee.tech/about?utm_source=qiita&utm_medium=article&utm_id=ai_upd

元記事を表示

RSpec入門:基本構文と使い方を紹介

# はじめに

こんにちは!
社会人一年目の石川です。
記事をご覧いただきありがとうございます。

現在、私はRSpecを勉強中で、学んだことを共有したいと思いこの記事を書きました。この記事では、RSpecの基本的な書き方を紹介し、具体的な例を通して理解を深めていきます。
初心者でも理解しやすいように書いたのでRSpecを勉強したい際はぜひ参考にしてください。

## 目次
1. [RSpecとは?](#rspecとは)
1. [基本的なRSpecの書き方](#基本的なrspecの書き方)
・[describe、context、itの使い方](#describecontextitの使い方)
・[最初のテストケースの例](#最初のテストケースの例)
3. [よく使われるマッチャ(Matchers)](#よく使われるマッチャmatchers)
・[eq、be、include、matchなどの基本的なマッチャ](#eqbeincludematchなどの基本的なマッチャ)
・[複数のマッチャを使用した例](#複数のマッチャを使用した例)
4. [最後に](#最後に)

## RSpecとは?

元記事を表示

[Rails] any?メソッドとは?をまとめた

# any? メソッドとは
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/any=3f.html

配列の要素が、全て**偽**の場合、`false`を返します。
一つでも**真**の要素があれば、`true`を返すメソッドになります。

# 例

“`rb
p [nil, true, 99].any? # => true
p [nil, false, 99].any? # => false
“`

# ブロックを使用する
ブロックを伴う場合は、各要素に評価され、全て**偽**の場合、`false`を返します。
評価の時点で真を返した時点で、`true`を返します。

“`rb
p [5, 10].any? {|v| v > 20 } # => false
p [5, 10].any? {|v| v > 6 } # => true
“`

# 引数を使用する
引数を渡して、処理することもできます。

ブロックと同じで、引数で渡したオブジェクトと各要素が一致するか評価され、全て**偽**の場合、`false`を

元記事を表示

Rails6.0 → 6.1にバージョンアップする手順

# はじめに
Railsのバージョンアップの対応を皆さん行ったことはありますでしょうか?
今回は、6.0から6.1へバージョンアップを行ったので、**対応の進め方**を主にまとめています。

参考になれば、幸いです。

:::note info
本記事の対象
– バージョンアップ対応の進め方が知りたい人
:::

:::note warn
本記事の対象外
– 具体的な対応策が知りたい人
:::

早速ですが、今回どのような手順で進めたのか、以下にまとめました。

# 手順
1. バージョンアップの進め方確認
1. ゴールの設定
1. テスト方法の確認
1. バージョンアップ作業
1. テスト準備
1. テスト実施
1. 本番反映

では、一つずつ詳細を見ていきましょう。

## バージョンアップの進め方確認
まずは全体感をしっかり掴みましょう。個人的には、公式と以下の記事がおすすめです。

https://railsguides.jp/upgrading_ruby_on_rails.html

https://qiita.com/jnchito/items/0ee47108972a0e

元記事を表示

レンダリングを減らしたい

## はじめに
そこまでログを意識していなければ、レンダリングがログに出ていても見過ごしてしまうと思います。
ただ、レンダリングはパフォーマンスに影響するので改善できるならしておきたいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1328154/794432a8-6c4f-77b5-ee7f-2d7a2cc50bcf.png)

今回はレンダリングを減らす方法を試してみたいと思います。

## レンダリングを減らす方法
railsでレンダリングを減らす方法は、collectionです。
collectionを使って、同じレンダリングを再利用してあげれば良いです。
今回はcollectionのやり方で詰まったところもあったのでその部分も紹介していきます。

### 部分テンプレートの部分をひとつにまとめる
scaffoldでusersテーブルと関連ファイルを作成します。
`index.html.erb`はこのように記載されていると思います。
`<%= render user %>`

元記事を表示

dockerを使用したRuby on Rails7の環境構築について

## dockerとは何か
1台のサーバー上に、コンテナという複数のアプリケーション実行環境(開発環境)を構築でき、開発環境の共有や移転を簡単に行うことができるツールです。OSやハードウェアを問わずに実行できるため、Windows+Linuxのように、複数OSでアプリケーションの動作を確認したり共有したりする際にも適しています。
dockerを使用することで、動作の一貫性を保証することができ、環境構築における手間を大きく削減することが可能です。
## 使用したきっかけ
Railsチュートリアルに取り組むにあたって、codespaceというgithubを使用した開発環境で進めていましたが、より実践に近い、自分の力で開発環境を構築してみようと思ったからです。

## 環境構築方法
早速環境構築を行なっていきます。dockerはインストール済みであることが前提で進めるため、まだの方は以下からインストールを行なってください。

https://docs.docker.com/get-docker/?_gl=1*1w46cmq*_gcl_

元記事を表示

SQLクエリをview側に表示してみる

## はじめに
各ページで発行されたSQLクエリはログを見れば分かります。
ただ、そのログをview側で確認してみたいといったとき、やり方を知らなかったので今回やってみました。

## SQLクエリをview側に表示する
やり方は考えれば色々あると思いますが、今回は`ActiveSupport`を使用してログを表示してみたいと思います。

### `application_controller.rb`にインスタンス変数を定義

“`rb:app/controllers/application_controller.rb
class ApplicationController < ActionController::Base before_action :setup_query_logs private def setup_query_logs @query_logs = [] ActiveSupport::Notifications.subscribe "sql.active_record" do |name, started, finished, u

元記事を表示

マイグレーションで使用するadd_indexの役割について

## 経緯
Railsチュートリアルを進めていく中で、マイグレーションファイルにadd_indexという記述を行なっていましたが、具体的に使い方がいまいちわからなかったため、調べた結果をまとめます。

## add_indexがなぜ必要なのか
結論から言うと、データベースの処理を高速化できるから。
通常該当のデータをデータベースから検索する際には、DBは1から10まで全てのデータを検索し、該当のデータが存在するかどうかを検索します。(フルスキャン)
add_indexがあると、検索しやすいようにデータを並び替え、必要なデータを取得しやすくできるようになります。(木構造という検索方法でデータを並び替えています。このあたりの説明は、アルゴリズムのお話になるので今回は省略します。)
Railsチュートリアルでは、Twitterのようなユーザーをフォローする機能、される機能を作成していますが、これらを登録するカラムを作成する際に、インデックスを設定しています。高い頻度でアクセスするこれらのデータに追加することで、DBにかかる負荷を軽減し、レスポンスを高速でできるようになります。
“`
cla

元記事を表示

Everyday Rails – RSpecによるRailsテスト入門を読んだ

# はじめに
今回railsの学習に伴いテストフレームワークの学習として
Everyday Railsを読みましたのでそのアウトプットとして本記事を作成しました。
# 学んだこと
* **意味のあるテストデータの作成**
* Factory Bot
* テストにおけるサンプルデータを作成するためのgem
* “`bin/rails g factory_bot:model モデル名“`でファクトリのファイルを作成
* 以下ファクトリの構成例。用意するとスペック全体でファクトリが使用可能になる。
“`
FactoryBot.definedo
factory :モデル名 do
//データを囲む中括弧({})は必須
カラム1 { “test1” }
カラム2 { true }
カラム3 { 1234 }
end
end
“`
* “`FactoryBot.build(:モデル)“`のような

元記事を表示

【紹介】「認可」を実装する方法3選_Rails

# はじめに
「認証」は、多くのRailsアプリケーションで、`devise`が使用されているかと思います。
ただ、「認可」に関しては、皆さんどのように実装されていますでしょうか?

今回実装するにあたって、考えた方法を3つご紹介いたします。

:::note warn
「認証」と「認可」の違いに関しては、本記事では解説いたしません。
詳しくは、以下の記事が参考になりますので、ご覧ください。
:::

今さら聞けない認証と認可の違い ゼロトラストセキュリティ対策

# 3選の紹介
## ① Pundit ・ cancancan
https://github.com/varvet/pundit

https://github.com/CanCanCommunity/cancancan

上記2つとも、認可周りをサポートしてくれるgemです。
ライブラリを使用すると、実装が楽になるのはとても良いですね。

昔からあるイメージですが

元記事を表示

【初心者向け】RailsアプリをRenderでデプロイする手順(mac)

## 背景
今回はRailsアプリを作ってデプロイする上で、
2024年7月時点において最も簡単かつモダンにデプロイする手順についてです:sunglasses:

当方、駆け出しエンジニアですがrailsデプロイに苦しんだため、
同じくデプロイで苦しんでおられる方の一助となればと思います:grinning:

webアプリは有料プラン(starter:月$7~)でないと動作が不安定なのでご注意ください。Freeプランだとエラーが出る場合があります。Freeで失敗したら有料プランの移行を検討してください:hushed:
データベースは90日まで無料で運用できますが、90日でデータベースは削除されるので継続運用される場合は有料プラン(starter:月$7~)に移行をお願いします:bow:

## 手順
大きく以下の流れで進行します。

1.PC上のアプリ内準備
2.Railsアプリのデプロイ
3.データベースのデプロイ
4.Railsアプリとデータベース接続

## PC上のアプリ内での準備

### Gemfileの編集

以下のような変更を加えてください。

“`diff_c:

元記事を表示

【Rails】カラムの確認と削除

## 環境
Docker Compose
## 確認手順
Railsコンソール起動
“`bash:コマンド
docker compose exec web rails c
“`

以下コマンド実行でusersテーブルのカラム名が表示
“`Ruby:コマンド
User.column_names
“`

## 削除手順

**構文**

“`ba:コマンド
rails g migration Removeカラム名Fromテーブル名 カラム名:型名
“`

以下は`users`テーブルの`role`カラムを削除するマイグレーションファイルを作成・実行
“`bash:コマンド
docker compose exec web rails g migration RemoveRoleFromUsers role:integer
“`


マイグレーションファイルを確認

**リセットとロールバック**
コマンド実行してマイグレーションファイルのステータスを確認する
“`bash:コマンド
docker compose exec web rails db:migra

元記事を表示

【Ruby】ちゃんと動かないcase/when

## はじめに:突然ですが、問題です
こんなメソッドがあります。

“`ruby
def role_name(role)
case role
when ‘Admin’
‘Administrator’
when
‘Member’
else
‘Guest’
end
end
“`

このとき、以下のコードの実行結果はどうなるでしょうか?

“`ruby
puts role_name(‘Admin’)
puts role_name(‘Member’)
puts role_name(‘Guest’)
“`

正解はCMのあとで!!

<CM>

Rubyを知れば、Railsはもっと楽しくなる。
「プロを目指す人のためのRuby入門 改訂2版」好評発売中!🍒

https://ruby-book.jnito.com/

<CMおわり>

では正解です。先ほどのコードを実行するとこうなります。
(おや、”Member”が出力されませんね :thinking: )

“`
Administrator

Guest
“`

あなたは正解しましたか!

元記事を表示

docker+vite+vue3環境のバックエンドにrailsを設定

# 想定
以下で構築したフロントエンドvite+vue3の環境にバックエンドとしてapiモードのrailsを追加します。

https://qiita.com/devzooiiooz/private/45079e52d4a7d4d25d40

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82975/899f031c-276d-b6c0-38e4-f1d97066453a.png)

# 前準備
+ direnvのインストールと有効化
プロジェクトルート直下でに.envrcを作成する。
direnvはホスト側のみでよい。
“`sh:
touch .envrc
“`
+ .envrcに環境変数を設定
“`env:.envrc
# MySQL
export DATABASE_USERNAME=’root’
export DATABASE_PASSWORD=’password’
export DATABASE_HOST=’db’
“`
+ direnvの有効化
“`sh:
dire

元記事を表示

AWS ECS上からRailsアプリケーションにBedrock+Claude 3 Haikuを取り込んでみた

## Claude 3 Haikuは安い・美味い・速い

基本的に応答スピードが早く、日本語入出力にも長け、速いのが特徴です。

以下Bedrock経由での価格ですが、Claude 3 Sonnetは他と比較して1/10以下の金額で使えるのが非常に良いです。応

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293892/9cb13398-28c5-532c-d88b-556845799872.png)

詳細はコチラ

https://aws.amazon.com/jp/bedrock/pricing/

2024年7月時点で、応答速度もSonnetの2倍程度はやく、非常に魅力的です。個人で使ったり、製品のプロトタイプとして活用するには非常に魅力的です。

## AWS Bedrockを使うメリット

– 学習・管理コスト
– AWSに慣れているエンジニアが弊社には多かった
– AIだけAzureに外出しせずとも、AWS内ですべて完結出来る
– セキュリティ

元記事を表示

Rails APIモードでDevise Token Authがうまく動かない!?解決までの道のり

最近Railsで APIを作ろうと思って、Rails APIモードとDevise Token Authを使ってみたんですが、思わぬところでつまづいてしまいました。今回は、その問題を解決するまでの過程を、私なりにまとめてみました。

## 最初の状況
まず、こんな感じでプロジェクトを始めました:

– ` rails new my_api –api` でAPIモードのRailsプロジェクトを作成
– Gemfileに` gem ‘devise_token_auth’ `を追加
– `bundle install `を実行
– `Devise Token Auth`の設定を行う

ここまではスムーズに進んだんですが、rails s でサーバーを立ち上げて、routesを確認しようとブラウザから http://localhost:3000/rails/info/routes にアクセスしたら

“`
NoMethodError (undefined method `mount_devise_token_auth_for’ for #

元記事を表示

【Rails】バリデーションのエラーメッセージが表示されない時

# controllerにstatus: :unprocessable_entityを追加
“`ruby:post_controller
def update
@post = Post.find_by(id: params[:id])
@post.content = params[:content]
if @post.save
redirect_to(“/posts/index”)
else
render(“posts/edit”, status: :unprocessable_entity)
# rails7系でバリデーションエラー文を表示させるには、 ,status: :unprocessable_entityの追記が必要)
end
end
“`
Rails7.0からデフォルトでTurboが導入されており、バリデーションのエラーメッセージを表示させるためには`status: :unprocessable_entity`の記述を追加する必要がある。

“`ruby:edit.html.erb
<

元記事を表示

初学者がBearer Tokenを使って認証・認可をざっくり理解してみた!

### **はじめに**
はじめまして、Sun*でBackendエンジニアをやっている24卒のAsutoです!
今回は認証・認可について具体的な認証機能(Authorizationヘッダを用いた認証方法)を用いたフロー図などで流れを説明していきます。

:::note info
補足:認証と認可を行うサーバーは一般的に分けられる(認可サーバー・認証サーバー)ことも多いですが、今回はまとめて認証・認可を行う「サーバー」として定義しています
:::

### **目的**
– 認証・認可に手こずってる人をクリアにさせたい
– そもそも認証と認可の違いとは?
– どのような流れで認証・認可が行われているのか?

### **想定読者**
– 初学者(認証・認可に初めて触れる人)
– 認証・認可の違いや流れなどが掴めていない人

### **そもそも認証・認可とは**
– 認証とは、利用者本人の確認を行うことです。
– 認可とは、リソースに対するアクセス権利をユーザーに与えるということです。

といってもイメージがつかないと思うので、もう少し違いをわかりやすくするため、ChatGPTに身

元記事を表示

【個人開発】誰でも簡単に謎解きを作成・回答できる「EnigmaPortals」をリリースしました!👓

## はじめに
皆様初めまして、[ヒデボー](https://x.com/yamarice428 “ヒデボー”)と申します!
プログラミングスクール「RUNTEQ」に入学し現在、WEBエンジニア転職を目指して学習&転職活動を行なっています!
今回、個人開発ポートフォリオとして[EnigmaPortals~謎クリエイト~](https://enigmaportals.com/)を開発しました!

## サービス名
#### EnigmaPortals ~謎クリエイト~

[![Image from Gyazo](https://i.gyazo.com/0d8b483df7e4c9eb17e3b01e828333da.png)](https://gyazo.com/0d8b483df7e4c9eb17e3b01e828333da)

#### ・サービスURL

https://enigmaportals.com/

#### ・Github URL

https://github.com/yamadahideto/EnigmaCraft

## サービス概要
自作の謎を投稿、**AIを使

元記事を表示

OTHERカテゴリの最新記事