- 1. Rails7 で TODOアプリを作ろう ⑤ (i18nで日本語化)
- 2. Rails7 で TODOアプリを作ろう ④ (statusをenumへ)
- 3. Everyday RailsでRspecについて学んだこと
- 4. 【Rails】paramsのキーをスネークケースに変換する方法
- 5. GoogleMapsAPIを使用した開発1(地図の表示)
- 6. Railsでコードジャンプしたい
- 7. 【Ruby】begin-end構文
- 8. Next.js,React,TypeScript,Ruby on Rails,RSpec扱った 受託開発の案件に参画した時に学んだこと(実務経験4ヶ月~6ヶ月目)
- 9. DeviseGemでのデフォルトバリデーションをテストしよう
- 10. 【Rails】APIにAlbaを導入する方法
- 11. 【ruby】値オブジェクトを使うと超読みやすくなるケース
- 12. 【個人開発】服好き・カフェ好きのためのショップ検索サービス「服カフェ」をリリースしました
- 13. AWSのS3で本番環境でも画像を保存できるようにしよう。【vol1】
- 14. AWSのS3で本番環境でも画像を保存できるようにしよう。【vol2】
- 15. Ruby on Railsで使える画像処理ツール4選
- 16. AWSのS3で本番環境でも画像を保存できるようにしよう。【vol3】
- 17. 【Rails】routesが難しい…苦戦したのでまとめてみた
- 18. Railsで画像アップロードするときのS3バケットの設定
- 19. 質問が分岐する診断機能
- 20. 【Ruby on Rails】自分だけしか投稿できなくする方法
Rails7 で TODOアプリを作ろう ⑤ (i18nで日本語化)
## はじめに
### 前回は
#### statusをenumへ として
https://qiita.com/tomoaki-kimura/items/94c167b438e0485e2262
– バリデーション
– enumについて学びました。
### 今回は
#### i18nで日本語化 として
– i18n
– enum_helpについて学びます。
では、はじめていきましょう。
## 1. I18nを使って日本語対応をする
### I18n
Railsには `I18n` という翻訳のための情報を別記する機能があり、カラム名や指定した情報等任意の情報に対して、言語切替をする事ができます。
この機能を利用して、例え日本人向けのサービスだとしても、日本語を翻訳ファイルに切り出す事によって、コード内に日本語が入る事を防ぐ事ができたり、 表記ゆれを防ぐ事も出来るので慣れておくと良いでしょう。
### config
翻訳ファイルで一番実装したいものとしては、各種のインフォメーションが英語だという事です。
例えば先程の空投稿のエラーですが
[![Ima
Rails7 で TODOアプリを作ろう ④ (statusをenumへ)
## はじめに
### 前回は
#### TaskのViewにBootstrap5を適用として
https://qiita.com/tomoaki-kimura/items/76279fa062a9d0bc57a8
– bootstrap5
について学びました。
### 今回は
#### statusをEnumへ として
– バリデーション
– enumについて学びます。
では、はじめていきましょう。
## 1. バリデーション
最初に仕込みとなりますが、最低限のバリデーション設定をしておきます。
### バリデーション
バリデーションとはデーターの入力に対して制限を掛ける事で、空入力や多すぎる文字を防いだり、不正な入力を弾く事ができる機能です。
データーの登録前にチェックしようという事ですね。
### SQLのエラー
現在、データーを空投稿しようとすると、
[![Image from Gyazo](https://i.gyazo.com/605139044c452159c93a6113f20aaa84.png)](https://gyazo.co
Everyday RailsでRspecについて学んだこと
## ドキュメント形式での出力
“`.rspec
–format documentation
“`
この設定を適用すると、実行中の各テストケースの名前が出力されるため、どのテストが成功したか、または失敗したかを一目で把握することができます。これにより、テストの結果が直感的に理解しやすくなり、問題の特定と修正が迅速に行えるようになります。
### 設定前
設定を加える前は、テストの進捗が`.`や`F`で表示され、どのテストが失敗したのかすぐにはわかりません。
“`markdown
….F…..
“`### 設定後
`–format documentation`を設定すると、各テストケースの説明が表示されるため、どのテストが成功し、どのテストが失敗したのかが一目でわかります。
“`markdown
計算
二つの数字を加算する
2と2を渡した時
4と等しいこと
-1と-1を渡した時
-2と等しいこと
二つの数字を減算する
2と2を渡した時
0と等しいこと
二つの数字を乗算する
【Rails】paramsのキーをスネークケースに変換する方法
`app/controllers/application_controller.rb`に以下のように記述することでparamsのキーがキャメルケースで送信されてきてもスネークケースに変換されます。
“`app/controllers/application_controller.rb
class ApplicationController < ActionController::API before_action :snakeize_params private def snakeize_params request.parameters.deep_transform_keys!(&:underscore) end end ```
GoogleMapsAPIを使用した開発1(地図の表示)
# 1.はじめに
投稿された情報(緯度経度)からGooleMapsAPIを使用して地図を表示、地点間のルート検索機能、周辺情報の取得を実装したので知識の定着、復習のために記事を書きます。
一度に書くと長くなるので、4回にわけて投稿していきます。
今回はその1回目でMAP表示まで実装します。# 2.環境
Ruby (2.6.4)
Rails (6.1.7)
Maps JavaScript API# 3.前提条件
APIキー取得済み
投稿機能を実装している# 4.実装
### 使用gem
“`ruby:Gemfile
gem ‘geocoder’
gem ‘gon’
“`### テーブル構造
“`ruby:schema.rb
create_table “posts”, force: :cascade do |t|
t.string “address”
t.float “latitude”
t.float “longitude”
end
“`## 1.投稿された住所、地名から緯度経度を保存できるようにする
### 1.gem`ge
Railsでコードジャンプしたい
## 概要
VScodeの拡張機能でどうにかならんかな〜と思っていたところ、
そういった拡張機能はなかったので設定方法だけまとめておきます## Railsでコードジャンプする設定方法
VScodeにある拡張機能のRubyは入れておいてください!1. Command + , で設定を開きます
2. 検索部分に “ruby” と打って検索
3. Intellisenseを false から rubyLocate に変更上記だけで設定が完了します。
VScode を再起動すれば設定が適応されるはずです。
【Ruby】begin-end構文
# 書き方
“`rb
@sample ||= begin
# 処理1
# 処理2# 戻り値
end
“`**begin-end**は例外処理以外にも使用される。
複数の文をグループ化するために使用されるブロック構文。
→`begin`と`end`の間に挟まれた部分は、1つのまとまりとして扱われる。# begin-end構文とメソッドそれぞれのメリット
– begin-end構文
– 複数の処理を1つのまとまりとして扱い、それを直接変数に代入したい場合に便利。
– メソッド
– 再利用性と可読性を高めるために使われ、大きな処理をまとめる際に便利。# サンプルコード
“`rb
class Sample
def execute
# 処理終了:対象会員が存在しない場合
if target_members.blank?
puts ‘対象会員が存在しません。’
exit
end# 更新処理 ※省略
update_members(target_members)
end
Next.js,React,TypeScript,Ruby on Rails,RSpec扱った 受託開発の案件に参画した時に学んだこと(実務経験4ヶ月~6ヶ月目)
# 自己紹介
1. ***実務経験4ヶ月目~(PHPからRubyに切り替える)***
2. ***フロントエンド開発(React,Next.js)に初参画。バックエンドでは初のテスト実装***。
3. ***QiitaでやZenn技術やマインドの記事を発信し、300記事以上投稿***
4. ***未経験時代に共同開発をやっていた時に経験者と未経験がいる中でリーダーを務めた***
5. ***オンラインコミュニティーで勉強会を主催する***# 情報発信
***QiitaやZennに300記事以上投稿***し、アウトプット。https://qiita.com/Hashimoto-Noriaki
https://zenn.dev/norihashimo
# 概要
細かい詳細は都合上書けないのですが、可能な範囲で書いたのでご了承ください。
“`自身2度目の開発案件(株式会社DEPARTURE)“`に参画した。#### 1.“`受講生を管理する教育サービスの開発“`案件。
・人数(***4名)***
・***フロントエンド4名***
***リーダー1名、レビュアー2名
DeviseGemでのデフォルトバリデーションをテストしよう
## DeviseGemでのデフォルトバリデーションをテストしよう
DeviseGemは、Ruby on Railsアプリケーションでユーザー認証を簡単に実装できるツールです。しかし、デフォルトのバリデーションをテストしてアプリケーションのセキュリティとデータ整合性を確保することは非常に重要です。以下に、DeviseGemのデフォルトバリデーションをテストするための7つの具体的なテストコードを示します。
“`ruby
# 1. emailが空でないことをテスト
it ‘validates presence of email’ do
user = User.new(email: nil)
expect(user).not_to be_valid
end# 2. passwordが空でないことをテスト
it ‘validates presence of password’ do
user = User.new(password: nil)
expect(user).not_to be_valid
end# 3. パスワードが5文字以下でないことをテスト
it
【Rails】APIにAlbaを導入する方法
## Albaについて
AlbaはJSONシリアライザーです。https://github.com/okuramasafumi/alba
## 導入方法
以下の手順でRailsのAPIにAlbaを導入できます。
### インストールする
`Gemfile`に以下のように記述して`bundle install`を実行してインストールします。
“`Gemfile
gem ‘alba’
“`“`terminal
bundle install
“`### 設定ファイルを作成する
`config/initializer/alba.rb`を以下の内容で作成します。
“`config/initializer/alba.rb
Alba.backend = :active_support
“`### resourcesディレクトリを作成する
`app/resources`ディレクトリを作成し、`user_resource.rb`を作成します。
“`app/resources/user_resource.rb
class UserResource
inc
【ruby】値オブジェクトを使うと超読みやすくなるケース
# 年月の範囲をDateクラスで扱うのがダルい…
– 2023年1月、2023年2月…と月単位のラベルを持つグラフを作る
– 2023年1月号、2023年2月号…と月単位で提供される雑誌を扱うといった、年月を扱うケースでは、ただのDateクラスではちょっと役不足ですよね。例えば以下のようなコードを考えてみます。
“`ruby
require ‘date’start_year_month = Date.new(2023, 9, 1)
today = Date.today
latest_year_month = Date.new(today.year, today.month, 1)#
# 期間でループしたいとき
#
tmp_month = start_year_month
while tmp_month <= latest_year_month pp tmp_month.strftime('%Y%m') tmp_month = tmp_month.next_month end # => “202309”
# => “2
【個人開発】服好き・カフェ好きのためのショップ検索サービス「服カフェ」をリリースしました
## はじめに
こんにちは、@jinta_02と申します。
この度、服好き・カフェ好きのためのショップ検索サービス「服カフェ」をリリースいたしました!
完全未経験で初めての個人開発だったため苦労する点もありましたが、その中でも工夫した点をお伝えできればと思いますので、技術的な部分で誤りがありましたらコメント等いただけますと幸いです?♂️## サービス名:[「服カフェ」](https://fuku-cafe.com)
[![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600084/e5cb45ea-dc3f-5198-f249-7fd21289d1f8.png)](https://fuku-cafe.com)▼サービスURL:https://fuku-cafe.com
▼Github:https://github.com/jinta-shimo02/fuku_cafe
▼告知ツイート:https://twitter.com/jin_XXX222/status/171853523
AWSのS3で本番環境でも画像を保存できるようにしよう。【vol1】
### 【概要】
—
AWSのS3についてのアウトプット(備忘)、また、これからはじめて触れるよ!って方の参考になればと思います〜。
設定に若干苦戦したのと、他の記事で情報の過不足の部分があったので初めての方でもわかりやすく設定できればと思います!!
(画面は2023年11月時点のものとなります。)### 【対象】
—
・S3でクラウド環境に画像を保存したい。
・renderでdeployをしたい。(Herokuなどでも可ですが、環境ヘ変数の設定が少し異なります。)
・.envファイルで管理したい。(credentialファイルでも設定可ですが、今回は.envで管理します。)### 【環境】
—
・Rails7系
・Ruby3.2.2
・CarrierWave導入済。(carrierwaveについては省略します。)
・Docker ver3
・render### 【前提条件】
—
・[・AWSのS3で本番環境でも画像を保存できるようにしよう。【vol1】 ](https://qiita.com/iijima-naoya-45b/items/0bdf75bde
AWSのS3で本番環境でも画像を保存できるようにしよう。【vol2】
### 【概要】
—
AWSのS3についてのアウトプット(備忘)、また、これからはじめて触れるよ!って方の参考になればと思います〜。
設定に若干苦戦したのと、他の記事で情報の過不足の部分があったので初めての方でもわかりやすく設定できればと思います!!
(画面は2023年11月時点のものとなります。)### 【対象】
—
・S3でクラウド環境に画像を保存したい。
・renderでdeployをしたい。(Herokuなどでも可ですが、環境ヘ変数の設定が少し異なります。)
・.envファイルで管理したい。(credentialファイルでも設定可ですが、今回は.envで管理します。)### 【環境】
—
・Rails7系
・Ruby3.2.2
・CarrierWave導入済。(carrierwaveについては省略します。)
・Docker ver3
・render### 【前提条件】
—
・[・AWSのS3で本番環境でも画像を保存できるようにしよう。【vol1】 ](https://qiita.com/iijima-naoya-45b/items/0bdf75bde
Ruby on Railsで使える画像処理ツール4選
# Ruby on Railsで使える画像処理ツールまとめ
Ruby on Railsのウェブアプリケーションで画像アップロードと処理が必要な場合、Active Storage、ImageMagick、MiniMagick、およびImageProcessingなどのツールが非常に役立ちます。この記事では、これらのツールについて詳しく説明し、どのようにプロジェクトに統合できるかについて説明します。
## 1. Active Storage
Active Storageは、Ruby on Railsの標準ライブラリで、ファイルのアップロードと管理を簡単に行うためのものです。これは、主に画像やファイルのアップロードをサポートし、アクティブレコードモデルと緊密に統合できます。これにより、データベース内のリンク、クラウドストレージプロバイダー(例: Amazon S3)、またはローカルファイルシステムなど、複数のストレージバックエンドとの連携が容易に行えます。
## 2. ImageMagick
ImageMagickは、画像の作成、編集、変換、表示に使用されるオープンソースのソフトウ
AWSのS3で本番環境でも画像を保存できるようにしよう。【vol3】
### 【概要】
—
AWSのS3についてのアウトプット(備忘)、また、これからはじめて触れるよ!って方の参考になればと思います〜。
設定に若干苦戦したのと、他の記事で情報の過不足の部分があったので初めての方でもわかりやすく設定できればと思います!!
(画面は2023年11月時点のものとなります。)### 【対象】
—
・S3でクラウド環境に画像を保存したい。
・renderでdeployをしたい。(Herokuなどでも可ですが、環境ヘ変数の設定が少し異なります。)
・.envファイルで管理したい。(credentialファイルでも設定可ですが、今回は.envで管理します。)### 【環境】
—
・Rails7系
・Ruby3.2.2
・CarrierWave導入済。(carrierwaveについては省略します。)
・Docker ver3
・render### 【前提条件】
—
・[・AWSのS3で本番環境でも画像を保存できるようにしよう。【vol1】 ](https://qiita.com/iijima-naoya-45b/items/0bdf75bd
【Rails】routesが難しい…苦戦したのでまとめてみた
# はじめに
こんにちは、エンジニア2年目の嶋田です。
まずは、この記事を開いていただきありがとうございます!Railsのルーティング(routes)は、WebアプリケーションのURLとコントローラーアクションのマッピングを定義する重要な要素です。
しかし、私自身かなり理解に苦戦しました…
少し勉強したので、この記事では、Railsのルーティングについて初心者向けに説明してみようと思います。
少し長いですが、ぜひ最後までお付き合いください。# 概要
この記事は、Railsのルーティングに焦点を当てており、以下の内容が含まれています。– Railsのルーティングとは何かについての説明。
– ルーティングの基本的な概念、config/routes.rbファイルの基本、デフォルトのルーティング設定、ルーティングの設定方法についての解説。
R- ESTfulルーティングについての説明と基本的な原則。
– 名前付きルートの利点と基本的な設定方法。
– ルートヘルパーの説明と主要なルートヘルパーの紹介。
– エラーページのカスタムルーティングについての説明と設定例。
– ルート情報の確
Railsで画像アップロードするときのS3バケットの設定
## はじめに
Railsで画像アップロードするときのS3バケットの設定方法を紹介します。
必要最低限の権限だけ付与するようにしようと思います。RailsからAWSへアクセスするためにはアプリケーション用のIAMユーザーを作成して、アクセスキーとシークレットアクセスキーを使います。
作成したIAMユーザーにS3へのアクセス権をつけることでRailsからS3へアクセスできます。
## 環境
`Rails 6.1.6`
`ruby 3.0.6`## S3バケットの設定
バケットのアクセス許可の設定はブロックパブリックアクセス、バケットポリシー、オブジェクト所有者で行います。### ブロックパブリックアクセス
チェックボックスが4つ並んでいるUIのところです。
今回のユースケースでは`新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする`と`任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックす
質問が分岐する診断機能
## はじめに
この記事では質問が分岐する診断機能の実装をします。
以下イメージ画像のように、回答次第で次の質問内容が変わるように実装していこうと思います。
![joukenbun_22599-600×600.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3581319/ff6b3c08-a713-f7d4-abdc-b2d2022dd7f2.jpeg)この機能を使って作成したサイト
https://huter.onrender.com
## 1.コントローラー設計
コントローラーを分岐させたい質問の数ー1個作ります(一つ目の質問の分岐だけnew.htmlとshow.htmlに書けるため)
今回は質問の分岐の数が4つだった場合を想定して実装していきます。
“`ruby:cmd
$ rails g controller topics
$ rails g controller topic2s
$ rails g controller topic3s
“`
“`ruby:topics_con
【Ruby on Rails】自分だけしか投稿できなくする方法
## はじめに
この記事では自分以外に投稿をさせないための簡単な条件文を紹介します。
前提として、投稿機能、ログイン機能ができてからの条件になっています。
## viewページ
“`ruby:index.html.erb
<% if current_user.id == 1 %>
<%= link_to "新規投稿ページへ", コントローラー名_new_path %>
<% end %>
“`
## 解説
この条件式 `<% if current_user.id == 1 %>` はcurrent_user.id が1である場合の時に “新規投稿へ” というリンクを表示することができます。
“`ruby:index.html.erb
<% if current_user.id == 1 %>
user.id が1の時のみに表示される部分
<% end %>
“`
1番最初に登録した自分以外には新規投稿ページのリンクを表示させないように制限することで、自分以外投稿できないようにする方法になってます。