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

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

Six Best Courses To Learn Ruby On Rails Today

Ruby on Rails, more popularly called RoR, is a foremost web development model and a prevalent option for new beginners of web development because of its simplicity. Through this, individuals can comprehend the language as it is more straightforward than other frameworks. With uncountable online courses on RoR as well as Ruby programming, it might be hard to identify which one will fit best with your requirements.

We have assembled a listing of the topmost RoR courses established on learning ma

元記事を表示

bundle install で grpcが失敗する

grpcのinstallでエラー

“`sh
14 warnings generated.
linking shared-object grpc/grpc_c.bundle
Undefined symbols for architecture arm64:
“_ruby_abi_version”, referenced from:
-exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [grpc_c.bundle] Error 1

make failed, exit code 2

An error occurred while installing grpc (1.48.0), and Bundler cannot continue.

In Gemfile

元記事を表示

条件分岐が可能な診断機能

## はじめに
当記事は、Ruby on Railsにおいて**分岐が発生する診断機能**を実装したい方へ向けたものです。
[この記事](https://qiita.com/nakamura9atsuya20/items/f6a967c2854f769fc6d4)でも診断機能は実装することが可能ですが、どんな選択肢を選んでも同じ質問を回答することで結果が出る仕組みのため、「1問目で選ぶ選択肢によって、2問目の質問を変えたい…」という場合、活用することが難しくなってしまいます。
主に以上の悩みを抱えている人に向けて、役に立てれば幸いです。

## 実装に使う知識、及び筆者が伝えたいこと
**使う知識は「MVCの基本」**。これだけです。新規ページを作り、遷移を活用して作っていくイメージです。きちんとMVCが理解できていれば、不可解な点はなく実装できると思います。
ここで筆者が伝えたいことは、**基礎的な知識でも、使い方によっては大きなインパクトを発揮できることがプログラミングの面白さだ**ということです。
あくまで個人の感想ですが、難しいことを身に着けることに執着してしまう傾向がある

元記事を表示

【Rails】大量にメール送信してしまった話

# はじめに
以前、とあるシステムの開発でメール一括送信機能を開発する機会がありました。開発終了後本番環境でメール一括送信機能を使ってメール送信されたのですが、なぜが同じ人に対して大量にメール送信されたり、ある人に対してはメール送信されていなかったりしました…今後同じような事態が発生しないように、何が問題だったのか、どう解決したのかまとめていこうと思います。

# 問題点
メール一括送信機能はrailsのdelayed_jobを用いて実装していました。具体的には、「メール一括送信job」の中で全ての対象者全員に対してメール送信する処理を実装していました。

メール一括送信機能を実行すると、実装したdelayed_jobが実行され、一人目二人目とユーザに対してメール送信されるのですが、何らかの理由でn人目のユーザに対してメール送信失敗し、再度delayed_jobがリトライし、また一人目二人目からメール送信が始まりn人目でメール送信失敗し、再度delayed_jobがリトライされるの繰返しが発生していました。

dalayed_jobに関して調査してみると、**delayed_job

元記事を表示

【Rails】OpenWeatherMap APIで特定の都市の気象データを取得してみた

## はじめに
**※この記事は、『[RUNTEQ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/runteq)』の20日目に参加しております。**

今回、個人開発のアプリを作成するにあたり、初めてAPIを叩いてみました。

「[OpenWeatherMap API](https://openweathermap.org/)」を使用して、ローカル開発環境にてAPIお試し用のアプリを作成し、情報を取得するまでの一連の流れについてまとめました。

そもそもAPIとは何なのか?という部分も曖昧だったので、こちらの記事にまとめております。

https://qiita.com/rk2530/private/48d6100a36484e3b1ee1

## 今回のゴール
フォームに都市名を入力し、検索ボタンを押すと気象データが表示されるようにする。

## 注意点
::: note warn
私はプログラミング学習中で、初学者です。
内容に誤りがある場合がございます。
もし間違いがあればご指摘いただけますと幸いです。

元記事を表示

Ruby on Rails ✖️ Docker ✖️ gRPC

# はじめに
メタップスアドベントカレンダー20日目の記事です。

弊社では一部マイクロサービスになっており、その中でRuby on Railsのアプリケーションが動いています。
RailsアプリはクライアントとしてgRPCとProtoBufを使ってgoのサーバーと通信しています。
今回はRails on DockerのサービスにgRPCを導入する大まかな手順と運用をしていく中での知見を2点、紹介します。

#### 注意
– 「gRPCとは何か」や「ProtoBufの書き方」は紹介しません
– RailsアプリがDocker(docker comopse)上で動いているものとします
– コードは全てサンプルなので参考程度にとどめてください

# Rails on Docker へのgRPCの導入
#### protoファイルの作成

“`sample.proto
syntax = “proto3”;
package sample;

service SampleService {
rpc RequestSomething(SampleRequest) returns (Sa

元記事を表示

【Rails】既存の外部DBに接続してデータ取得をしてみた

## はじめに
開発チームのメンバーとともに、Railsを利用して外部DBの絡む案件開発を進めていました

## 問題点
既存の外部DBからActiveRecordを利用してデータ取得を行いたいが、方法が分からないという場面に遭遇しました

## 解決法
### database.ymlへの追記
まず、database.ymlに外部DBについての記述を追加する必要がありました。
今回は「外部DBが、アプリケーションで利用しているDBと同じRDSインスタンス内に存在している」という状況でしたので、以下の記載例のような形で接続情報を共有している状態とします。
また今回はデータ取得のみが目的で、Railsから外部DBを管理したいという意図はなかったため、`database_tasks:false`を設定しました。

“`yml:database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
username: user
password: password
host: host

development:

元記事を表示

趣味の壁を超える挑戦 ~ 「EMBE」一人開発の軌跡

[個人開発のカレンダー|Advent Calendar 2023 – Qiita](https://qiita.com/advent-calendar/2023/personal-developement) に向けた記事です。
今回、初めてアドベントカレンダーに参加します。

https://qiita.com/advent-calendar/2023/personal-developement

12月に個人開発でWebサービスをリリースしたので、どんな事があってどんなことをしたのかをゆるく書いていこうと思います。具体的なプログラミングの話はしません。

## 個人開発の魅力と難しさ

個人開発の魅力の一つに、”気軽さ”があります。開発する人によってそのスタンスは変わると思いますが、開発物の収益性が見込めなかったとしても自身のリソースを使って着手することができます。作りたいものを作る手段が個人開発だと思います。

昨今、ローコード・ノーコードツールの充実やchatgptなどの生成AIの登場により、個人開発のハードルは下がっています。一方で、個人レベルで作る開発物と企業や組織が作る開

元記事を表示

gem ‘debug’ではスコープ内の変数を優先して参照する

最近プロダクトコードの調査をしていたとき、’debug’ gemについて理解していなくて戸惑ったので残しておこうと思います。

### ことの発端
こんな感じのコードを調査中に見かけました。
同名のローカル変数とプライベートメソッドが定義されています。
レコード取得の条件に大きな違いはなさそうで、なぜメソッドのbarを使わないのか意図が分からずにデバッガを挟みました。
“`ruby
class HogesController < ApplicationController def show # debuggerをここに入れた bar = Bar.where(...) end private def bar @bar ||= Bar.where(...) end end ``` 上記の位置で`bar`を実行すると、プライベートメソッドの値が確認できると期待していたのですが、実際に返ってきたのはnilでした。 ```ruby (rdbg) bar nil (rdbg) self.bar [#

元記事を表示

モンキーパッチとは?Rubyモンキーパッチの利点とリスク

## モンキーパッチとは?

モンキーパッチは、プログラミングにおいて既存のコードを変更する技術です。Rubyでは、既存のクラスやモジュールに新しいメソッドを追加したり、既存のメソッドを上書きしたりすることが可能です。これにより、アプリケーションの特定のニーズに合わせてカスタマイズできます。

## モンキーパッチの具体的な利用シナリオ

– 機能の追加: 既存のクラスに足りない機能を追加する。
– バグ修正: ライブラリ内のバグをアプリケーション側で修正する。
– 振る舞いのカスタマイズ: アプリケーション固有の要件に合わせて、既存のメソッドの振る舞いを変更する。

## モンキーパッチの利点

– 柔軟性: 既存のクラスやメソッドをカスタマイズすることで、特定の要件に合わせて振る舞いを調整できます。
– 迅速な開発: 既存のライブラリやフレームワークに手を加えることで、新しい機能を迅速に実装できます。
– 互換性の維持: 古いコードベースを新しいライブラリやフレームワークのバージョンに合わせて修正する際に役立ちます。

## モンキーパッチのリスク

– 保守性の低下: 元のライブ

元記事を表示

RubyのBlock、Proc、Lambdaの違い、分かりやすく解説

Rubyは柔軟性と表現力に富んだプログラミング言語であり、その強力な機能の一つに「クロージャ」があります。クロージャとは、その周囲の環境(スコープ)を「閉じ込める」ことができる関数のことです。Rubyにおけるクロージャには主に3つの形式があります:**Block**、**Proc**、および**Lambda**。これらは似ているようでいて、実は重要な違いがあります。この記事では、これらの違いを明確にし、それぞれの使用例を通じて理解を深めます。

## Blockの基本
BlockはRubyで最もよく使われるクロージャの形式です。Blockは `{}` または `do…end` で定義され、メソッド呼び出しに際して、これを引数として渡すことができます。引数を渡すには、`{}`または`do`の後で引数リストを`|`で囲みます。

**例:**

“`ruby
[1, 2, 3].each { |number| puts number }
“`

この例では、each メソッドにBlockが渡され、配列の各要素が出力されます。

### メソッドにブロックを渡す

ブロックはメソ

元記事を表示

【Rails】マイページのURL末尾を「ユーザー名」にする

Railsを使ったWebアプリの開発中、「マイページのURL末尾を、ユーザーIDじゃなくて"ユーザー名"にできたらかっけぇ…」と思い、実際にその機能をつけました。

マイページ(ユーザー詳細ページ:users/show.html.erb)のURL末尾をユーザーIDから「ユーザー名」に変更することは、とてつもなく重要です。なぜなら、ユーザー情報を共有する/されるときに、ユーザーを一瞬で識別できるようになるからです。実際、X(旧Twitter)やInstagram、そしてQiita、といった超人気WebサービスのマイページURLの末尾は、自身で設定したユーザー名になっています。

しかし、問題点があります。それは「何の追記もないまま(=リソースフルにしたがったまま)usersのshowアクションをルーティングに設定すると、マイページのURL末尾がユーザーIDになってしまう」という問題です。

そこで、「マイページのURL末尾をユーザーIDから"ユーザー名"に変更する」ためのRails実装手順をまとめました。

&em

元記事を表示

デフォルト動作を理解して使ってますか?

この記事は、株式会社ACCESS Advent Calendar 2023 の19日目の記事です。

私個人としては今年はこれ含めてまだ2個しか記事投稿していないことに気づきましたが、去年一昨年が年1個だったのと比べると2倍に増えたとポジティブに捉えることにします。

# はじめに

多くのツールは、設定やパラメーターでその挙動を制御できるとともに、指定しなかった場合のデフォルト動作が存在します。それを理解せずに使うと、思いもしなかった挙動に直面する危険性があります。

私個人やうちのチームが実際に体験した例を(脚色も交えながら)いくつか挙げることで、デフォルト動作を理解して使うことの大切さをこの年末に改めて再認識する機会にしょうと思います。

# 1) RubyのNFKモジュールで半角カナ変換時に文字化け

## やろうとしたこと: 全角カタカナに変換

Rubyで半角カタカナを全角カタカナに変換したいです。
日本語のコード変換というとNKF、という知識から[ドキュメント](https://docs.ruby-lang.org/ja/latest/class/NKF.html)を見る

元記事を表示

【Rails】Helper, Decorator, Presenter

# 1. Rails開発のView周りの実装
## 1.1 共通する悩み
Rails開発において、負債が積み重なり、View周りがしんどくなりがちというのはあるあるかと思います。

– Viewのあちらこちらに似たコードを記載しちゃう問題
– Viewに記載したプレゼンテーションロジックが複雑になりすぎちゃう問題
– Modelにプレゼンテーションロジックを記載しちゃう問題
– 上記により、FatModel、FatViewが発生しちゃう問題
– 結局、ModelとViewのどっちに書けばええねん!と板挟みになっちゃう問題

結果、非DRYで可読性に乏しく、責務の曖昧なコードが出来上がります。私も個人開発でたまにやらかします。以下で具体的なコードを交えて説明していきます。

### 1.1.1 Viewのあちらこちらに似たコードを記載しちゃう問題(非DRY)
いわゆるDRYになっていないコードが存在してしまうケースです。複数人開発で、コードの全容を理解していない、習熟度様々なエンジニアが存在することから、気を抜くとどうしても発生してしまうコードになります。

“`erb

OTHERカテゴリの最新記事