- 1. 【Rails】カラムの確認と削除
- 2. 【Ruby】ちゃんと動かないcase/when
- 3. docker+vite+vue3環境のバックエンドにrailsを設定
- 4. AWS ECS上からRailsアプリケーションにBedrock+Claude 3 Haikuを取り込んでみた
- 5. Rails APIモードでDevise Token Authがうまく動かない!?解決までの道のり
- 6. 【Rails】バリデーションのエラーメッセージが表示されない時
- 7. 初学者がBearer Tokenを使って認証・認可をざっくり理解してみた!
- 8. 【個人開発】誰でも簡単に謎解きを作成・回答できる「EnigmaPortals」をリリースしました!👓
- 9. Railsにおけるロジックの切り出し方
- 10. 「続きを読む」を実装
- 11. 実際に動かしてみてわかった、N+1問題の恐ろしさ
- 12. [Rails] Rspec_Anonymous Controllerを使用して、Application Controllerのテストをしよう!
- 13. railsのcreateでPostman使ってみた
- 14. 【Render × Xserver】独自ドメインでのデプロイ時の注意点と解決策
- 15. RailsでOmniAuth-GitHubを利用してログインをしようとした時に、turboが邪魔をしてgithubのログイン画面にいけなかった現象について。Not found. Authentication passthru.
- 16. [個人開発] 食品の在庫を簡単に管理できるサービスを作ってみました
- 17. 37signalsが書くコードの”Service Object”を見てみる
- 18. [作成中]RSpecについて初学者段階のメモ
- 19. Rails + I18n – バリデーションエラーの言語を強制指定する例
- 20. Railsでのバリデーションの実装
【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:migrate:status
“`データベースに反映
`
【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: )“`
AdministratorGuest
“`あなたは正解しましたか!
docker+vite+vue3環境のバックエンドにrailsを設定
# docker+vite+vue3環境の構築
まずはここを参考にfrontendでvueが起動するところまでhttps://qiita.com/devzooiiooz/private/45079e52d4a7d4d25d40
# 前準備
+ direnvのインストールと有効化
プロジェクトルート直下でに.envrcを作成する。
direnvはホスト側のみでよい。
“`sh:
touch .envrc
“`
+ .envrcに環境変数を設定
“`env:.envrc
# MySQL
export DATABASE_USERNAME=’root’
export DATABASE_PASSWORD=’password’
export DATABASE_HOST=’db’
“`
+ direnvの有効化
“`sh:
direnv allow
“`
# backendの設定
+ ディレクトリ作成
“`sh:
mkdir backend && mkdir backend/api
“`
+ 必要ファイル(Dockerfile,Gemfile,Gemfile.lock)作成
“
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を使
Railsにおけるロジックの切り出し方
### 記事について
値オブジェクト、サービスオブジェクト、フォームオブジェクト、コールバックオブジェクト、Concernなど、Railsには多様なロジックの切り出し方法が存在します。適切に、それぞれの責務を理解して実装するべきだと思いChat GPTに聞いたりして調べたことをまとめます。### 1. 値オブジェクト (Value Object)
値オブジェクトは、特定のドメイン内での値の表現を担います。これらは不変であり、値としての等価性を持ちます。たとえば、`Money` クラスや `DateRange` クラスなどが該当します。
**使用例:**
“`ruby
class Money
attr_reader :amount, :currencydef initialize(amount, currency)
@amount = amount
@currency = currency
enddef ==(other)
self.amount == other.amount && self.currency == oth
「続きを読む」を実装
# はじめに
案件で実装することになったので、それの備忘録です。# 目的
youtubeなどに実装されているコメントが長いと省略されて表示されているこれです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632357/1d6d7ee6-e564-ce43-ceac-8d4f0f83d950.png)# 既存
“`erb<%= comment.content%>“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632357/eba598ba-4e69-3ae4-f1a6-c2fcebf4e0b0.png)# 実装
探せばあるもので、下記のものを利用しています。https://www.stimulus-compo
実際に動かしてみてわかった、N+1問題の恐ろしさ
## はじめに
ご閲覧いただきありがとうございます!
Sun* という会社で Backend Engineer をやっている 24 卒の Campanule と申します。
普段は Ruby on Rails を使った Web アプリの開発を行っております。今回が初投稿となります。どうぞお手柔らかにお願いいたします。
本記事ではデータベースを用いる際にいつも頭を悩まされる **N+1 問題** について簡単に説明し、またパフォーマンスの簡易的な測定をしてみようと思います。
## 目的
– N+1 問題 とは何なのかざっと理解したい
– パフォーマンスの測定を行い、N+1 問題 の影響について考えたい## 想定読者
– N+1 問題 を知らない方、あるいは言葉だけ聞いたことがある方
– N+1 問題 によるパフォーマンスの低下が気になっている方## N+1 問題とは
こちらがわかりやすいです。https://qiita.com/muroya2355/items/d4eecbe722a8ddb2568b
簡単に言うと、あるテーブルのレコード N 件 に対応した別テーブル
[Rails] Rspec_Anonymous Controllerを使用して、Application Controllerのテストをしよう!
# はじめに
`ApplicationController`では、ユーザーのロール(役割)に対して、アクセス制御を行っていると思います。
では、そのアクセス制御をテストしようと思った時に、どのように実装しますでしょうか?– requestテストでやろう!
– でも、`ApplicationController`へのルーティングは通っていないよね…
– アクセス制御をしている箇所を`Concern`に切り分けて、単体テストでやろう!
– これは結構良さげ
– ただ、切り分けるほどの処理の大きさでもない…上記のように、色々と模索すると思います。
その中で、`AnonymousController`を使用すれば、実装を変えずにテストすることができます。今回はその内容をアウトプットいたします。
:::note warn
Rails5からは、`request spec`が推奨されています。
今からは、`controller spec`になるので、ご了承ください。
:::https://qiita.com/t2kojima/items/ad7a8a
railsのcreateでPostman使ってみた
## はじめに
最近、PostmanというAPIの開発をサポートしてくれるツールを知ったので使ってみようと思います。## Postmanとは
公式より
>Postman は、 API を構築および使用するためのAPI プラットフォームです。Postman は、API ライフサイクルの各>ステップを簡素化し、コラボレーションを効率化することで、より優れた API をより迅速に作成できるようにします。公式に書いてある通り、PostmanはAPIの開発やテスト等をサポートするツールです。
実際にAPIにGETやPOSTを行い、リクエストやレスポンスを受け取ることができます。## Postmanでrailsのcreateを行う
実際に、Postmanを使ってみようと思います。### Postmanをダウンロード
まずはPostmanをダウンロードします。https://www.postman.com/downloads/
### lightweight API clientで入る
lightweight API clientと表示されているところをクリックすると、アカウン
【Render × Xserver】独自ドメインでのデプロイ時の注意点と解決策
# はじめに
本記事では、「**Render**」にデプロイしたアプリを独自ドメインで公開する際の注意点と解決策についてまとめます。今回は、「**お名前.com**」での**ドメイン取得**ができなかったため、以前契約していた「**Xserver**」を利用しました。この記事が皆さんのお役に立てば嬉しいです!
https://www.xserver.ne.jp/
https://www.onamae.com/
# 前提/条件
– rails7系
– ruby3.2.3
– PostgreSQLを使用
– Renderでデプロイ済み
– Xserverでドメイン取得される方# 注意点
### XserverでDNSレコード画面で「DNSレコードの確認・設定を行うことができません」表示
![Xserver-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/024ae093-eeb1-2cd6-f3d8-4dcfb18d3a75.png)
DNSレコードの表示ができ
RailsでOmniAuth-GitHubを利用してログインをしようとした時に、turboが邪魔をしてgithubのログイン画面にいけなかった現象について。Not found. Authentication passthru.
## 読んで欲しい人
– 下記の記事を参考に開発を進めていて`Not found. Authentication passthru.`の表示になった人
– https://fuga-ch85.hatenablog.com/entry/2021/04/10/075536
– https://github.com/heartcombo/devise/wiki/OmniAuth:-Overview
– 過去の俺## 動作環境
– ruby 3.3.0
– Rails 7.1.3.3## ハマった現象
– 上記で紹介した「omniauthを使ってgithub認証を実装する」の設定が一通り終わり、いざ`user_github_omniauth_authorize_path`リンクを設置して、ボタンを押した時に`Not found. Authentication passthru.`という文言が出てきて、githubの認証画面に遷移できない状態
ボタンの画面
![image.png](https://qiita-image-store.s3.ap-northeast
[個人開発] 食品の在庫を簡単に管理できるサービスを作ってみました
## はじめに
こんにちは。ryosuke([@ryousuke_doi](https://x.com/ryousuke_doi))と申します。現在プログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。
今回リリースしたサービスの紹介と開発の振り返りをまとめてみました。
記事を書くのが初めてなので、温かい目で見ていただけると幸いです。また、技術的な部分での誤りやサービスについての感想などありましたら、コメント等で教えていただけると助かります。
## 作成したサービスの紹介
[![Image from Gyazo](https://i.gyazo.com/385a7078b695448cfef79567d7cd142b.jpg)](https://gyazo.com/385a7078b695448cfef79567d7cd142b)### サービスURL(レスポンシブ対応済み)
https://pantry-chef-notifier.onrender.com
https://github.com/ryo-mogura/Pantry-Che
37signalsが書くコードの”Service Object”を見てみる
## 挨拶
自称、Ruby on Rails フロントエンドエンジニア🤣のnaofumiです。X [@naofumi](https://x.com/naofumi)では色々勝手なことを書いていますが、最近Qiitaも頑張り始めました。
それでは早速本題です!
## ええっ!!??
37signals商品のRailsコードって見られるの?そう!Ruby on Railsを開発した37signals社が、どのようにこのフレームワークを活用し、どのようなコードを書いているかを見ることができるのだ!
細かい話は省くが、7月3日に37signals社は[Writebookというアプリを新規に公開した](https://world.hey.com/jason/introducing-writebook-e217cae3)。自由にダウンロードでき、自分でサーバ(例えばさくらインターネットのサーバとか)を用意すれば、[簡単にインストール](https://books.37signals.com/2/the-writebook-manual/27/installation)できる。(
[作成中]RSpecについて初学者段階のメモ
※間違いなどございましたらご指摘いただけると幸いです
※随時更新予定# 概要
以下、https://semaphoreci.com/community/tutorials/getting-started-with-rspec より引用
> RSpec is a testing tool for Ruby, created for behavior-driven development (BDD). It is the most frequently used testing library for Ruby in production applications.
「RSpec は、ビヘイビア駆動開発 (BDD) 用に作成された Ruby のテスト ツールです。本番アプリケーションで最も頻繁に使用される Ruby のテスト ライブラリです。」(Google翻訳)– `RSpec`はRailsアプリケーションの開発で利用するテストツール
– Railsに最初から搭載されている”minitest”というテストツールも存在するが、RSpecが実質デファクトスタンダードとされ
Rails + I18n – バリデーションエラーの言語を強制指定する例
# 翻訳設定
てきように用意しておく
以下は英語翻訳で、
– 属性に対しての翻訳
– ひとつのモデルに対してのエラーの種類の翻訳を指定した例
`api/config/locales/activerecord.en.yml`
“`yml
—
en:
activerecord:
attributes:
example:
foo: localed foo
errors:
models:
example:
blank: IS BLANK!
“`# Rails Console で試す
英語指定の場合
“`rb
I18n.locale = :en
“`“`rb
example = Examole.new # 何か不正なデータ状態
example.validate
puts example.errors.full_messages
“`エラーメッセージの例
“`
[“localed foo IS BLANK!”]
“`# Controller で試す
Railsでのバリデーションの実装
# バリデーションとは
バリデーションは、データがアプリケーションの要件に適合していることを確認するための手段です。これにより、不正なデータがデータベースに保存されるのを防ぎます。例えば、ユーザー登録フォームでメールアドレスが正しい形式であることや、パスワードが一定の長さを満たしていることなどを確認するのが一般的です。
# Railsでのバリデーションの設定
Railsでは、モデルでバリデーションを設定するのが一般的です。以下に、Userモデルに対していくつかの基本的なバリデーションを設定する例を示します。
“`ruby
class User < ApplicationRecord validates :name, presence: true validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP } validates :password, length: { minimum: 6 } end ``` * presence: true: