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

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

Railsでinputにdisabled属性を指定した場合のパラメータ送信に関する注意点

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# はじめに
Railsアプリケーションを開発する際、フォームのinput要素にdisabled属性を指定すると、そのinputからの値はサーバーに正しく送信されないという現象があります。本記事では、この問題に対する対策と回避策について説明します。

# 問題の概要
disabled属性が指定されたinput要素は、ユーザーからの入力を受け付けないようになりますが、それによってその値がフォームからサーバーに正しく送信されなくなります。これは、セキュリティ上の理由からブラウザがこのような挙動を示すためです。

# 対策方法
## readonly属性の利用
disabled属性と同様に、readonly属性もinput要素を読み取り専用にしますが、異なる点としてreadonly属性を指定したinputはフォームから値を正常に送信できます。そのため、readonly属性を使用することで、ユーザーが値を変更できないようにしつつ、値を正しく送信することができます。
“`erb
<%

元記事を表示

【Ruby Gold3.1詰まったシリーズ】includedメソッドについて

# はじめに
今回はincludedに関する内容です。Ruby Goldの試験でincludedに関して自信を持って回答できなかったため、簡単にまとめてみます。

# irbで確認してみた
環境はruby 3.1.4です。
[こちら](https://pikawaka.com/ruby/include)によると、クラスでモジュールがincludeされた際に呼び出されるメソッドらしいです。
実際に、クラスに対してモジュールをincludeし実行
~~~ruby
module Mod
def self.included(base)
p “#{base} include #{self}”
end
end

class Hoge
include Mod
end
~~~
~~~
irb(main):001* module Mod
irb(main):002* def self.included(base)
irb(main):003* p “#{base} include #{self}”
irb(main):004* end

元記事を表示

run_callbacks に翻弄された話

## これは何
Active Record のコールバックに関するテストのレビューをお願いされた時に、見慣れないメソッド にやや翻弄された話をまとめました。

## きっかけとなったテストコード

Userモデルに定義してある、`after_create_commit_test` メソッドがレコード生成時に正しく呼ばれているかをテストするために作られたものです。

“`ruby
describe ‘.create’ do
subject { user.save! }

let(:user) { FactoryBot.create(‘user’) }

before do
allow(user).to receive(:after_create_commit_test)
user.run_callbacks(:commit)
end

it ‘calls after_create_commit_test’ do
subject
expect(user).to have_received(:after_create_commit_

元記事を表示

社内勉強会開催したった

# はじめに
[Hubble Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hubble)の16日目[^1]です!
[^1]:平日のみの投稿なので22日ですが16日目の記事としています。

Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

[前回はコードレビューの観点](https://qiita.com/power3812/items/5556f5381b5e6de3565a)について投稿しました。

Hubbleのバックエンドチームはありがたいことに業務委託の方を含めて11人います。しかし、大人数になってくると同じ仕様でも各人によってロジックが変わったり変数名が違ったりという課題が出てきます。また、それらを毎回レビューするのは、レビューワーの負担が大きくなります。
そのため、どうにかコードの書き方をある程度統一化できないかと勉強会を開催しました!

## 開催方法
勉強会は、発表者が一方的に話

元記事を表示

「Learn Hotwire and Turbo with a free Rails 7 tutorial」をやってみた

この記事は、[Ruby Advent Calendar 2023 シリーズ1](https://qiita.com/advent-calendar/2023/ruby) の20日目です

昨日は、 @HAZI さんで [「現在開発中の『SpeedLimiter』Gemの紹介」](https://zenn.dev/seibii/articles/20231219_speed_limiter) でした

【本コラムは、30分で読めて、60分くらいでお試しいただけます】

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

普段は、[Elixir/Phoenix/LiveView](https://qiita.com/advent-calendar/2023/elixir)メインで開発してますが、Ruby/Railsも年2本くらい、既存システムのバージョンアップ案件やリプレイス案件をこなしている(実はRails 1系からの付き合いで結構古い)ので、何かと触ってはいるものの、そこまで新しいフィーチャ

元記事を表示

【Rails】whereとscopeの苦手意識を克服するためにまとめてみた

# はじめに

お疲れさまです!
おおくまです!

今回は、“Ruby on Rails“の“whereメソッド“と“scope“についてです!

特に理由があるわけではないですが、なんとなく苦手意識がありました。笑
そんな苦手意識を克服するためにまとめてみました!

# 注意点

:::note warn
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::

# 環境

:::note
Ruby 3.2.2
Rails 7.0.6
:::

# 前提条件

前提条件として、このような“テーブル“と“レコード“があるとします!

# whereメソッドとは

https://railsguides.jp/active_record_querying.html

“Ruby

元記事を表示

Ruby on Railsのnew()メソッドについての詳細解説

#### はじめに

Ruby on Railsでの`new()`メソッドはオブジェクトのインスタンス化に中心的な役割を果たします。この記事では、`new()`メソッドの基本から応用まで、その使い方と重要性を深く掘り下げます。

#### new()メソッドの基本

– **機能**:

– `new()`はRailsのモデルや他のオブジェクトに対して、新しいインスタンスを作成するために使います。
– 例:`User.new(name: “Alice”, email: “alice@example.com”)`は、名前とメールアドレスを持つ新しい`User`インスタンスを生成します。
– **重要性**:

– `new()`によって生成されたインスタンスは、データベースに保存される前にメモリ上に存在します。
– これにより、データベースに保存する前にバリデーションを実行でき、データ整合性を保つことが可能になります。

#### new()メソッドの応用

– **複雑なデータ構造**:

– `new()`は、ネストされ

元記事を表示

Ruby on Railsのnew()メソッドの基礎解説

#### はじめに

Ruby on Railsにおける`new()`メソッドは、オブジェクトのインスタンス化に不可欠なメソッドです。この記事では、`new()`メソッドの基本的な使い方、重要性、および応用例について詳しく解説します。

#### new()メソッドの基本

– **概要**:

– `new()`メソッドは、Railsのモデルや他のオブジェクトを初期化するために使用されます。
– このメソッドは新しいインスタンスを生成し、オプションで属性を初期化することができます。
– **使用法**:

– 例えば、`User`モデルの新しいインスタンスを作成する場合、`User.new(name: “Alice”, email: “alice@example.com”)`のように記述します。
– これにより、名前とメールアドレスが設定された`User`オブジェクトの新しいインスタンスが作成されます。

#### new()メソッドの重要性

– **データ整合性の保持**:

– `new()`メソッドは、データベー

元記事を表示

ActionDispatch等をスタンドアローンで動かしてミニマムなRailsのような何かをDIYしたらRailsともっと仲良くなれた話

# 前置き
Webアプリケーションエンジニアとして働き始めて4年といくらか、そこそこの浮気期間は挟みつつも長らく付き合い続けているRuby on Railsだが、たまに必要に迫られてコードを見るくらいでその中身に関しては正直まるで知らない。

Railsのことをもっと知りたい。いったいどうすれば良いだろう…

![o0300022814160302731.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283780/c4e26d6a-6a27-207b-1687-7679b2c6767e.jpeg)

![スクリーンショット 2023-12-17 11.51.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283780/7e4c2f25-909d-5447-8de2-1b79dcf7a457.png)

もちろんRailsになっちまうのはDHHでもなければ無理なので、Railsのコンポーネント、今回の場合は特にA

元記事を表示

PicoRubyでMatz葉がにロボコンに挑戦

この記事は[mrubyファミリー Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mruby-family)の12/21の記事です。

[しまねOSS協議会](https://www.shimane-oss.org/)の黒谷です。

しまねOSS協議会は、松江高専が主催する「[第1回Matz葉がにロボコン](https://www.shimane-oss.org/kani-robo/)」に共催団体として参画しております。Matz葉がにロボコンとは、スモウルビーや軽量Rubyを活用したこども向けプログラミングコンテストです。かにをモチーフにしたロボットを指定のコースで走行させて競います。詳しくは[公式サイト](https://www.shimane-oss.org/kani-robo/)をご覧ください。

この大会は小学生部門とオープン部門に分かれています。オープン部門は中学生以上の方はどなたでもご参加いただけます。ということで私も挑戦することにしました。そう、PicoRubyで!

この大会で使用するロボットは、

元記事を表示

「rails console」を使ってRedmine上のスケジュールを一括変更する方法

# 「rails console」を使ってRedmine上のスケジュールを一括変更する方法

[Redmine Advent Calendar 2023](https://adventar.org/calendars/8974)の20日目の記事として作成しました。

* * *
## 背景

プロジェクトは長期の工程を扱ったり、不確実性な要素をたくさん含んでいるため、外部や内部の要因でプロジェクトの途中でスケジュールの変更やリソースの変更、予算の変更などが頻繁に発生します。そのため、プロジェクト管理ツールは、プロジェクトの変更に合わせて、柔軟にシステム上でも情報を変更できる必要があります。しかし、残念ながら、Redmineでスケジュールを一括変更させる方法がありません。

Redmineでスケジュール管理をする一般的な方法を確認します。Redmineでスケジュール管理をするためには、チケットに開始日、期日を登録すると、自動的にガントチャートを作成できるので、スケジュールの管理をガントチャートで確認することができます。

![image.png](https://qiita-image

元記事を表示

プログラミングスクールと実務を経て感じたこと

# はじめに
この記事は[WEMEX株式会社 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/wemex) 20日目の記事です

23卒の新卒エンジニアとして入社した私は、6月から10月にかけて、プログラミングスクールでの研修と実務でのOJT(On-the-Job Training)を並行して経験しました。この記事ではプログラミングスクールでの学びと実務経験を基に、新人エンジニアとして感じたことを共有したいと思います。

なんらかの形でみなさまのお役に立てれば幸いです。

# 筆者の開発歴について
背景として私の入社以前の開発歴について述べたいと思います。

私が学生時代に触れていた言語は主にPythonとC++です。

Pythonでは主に研究用のコードを書いていました。
研究室の専攻が自然言語処理だったので、コードとしても自然言語処理や機械学習等の内容がメインでした。

C++は所属の研究室とは別に行っていた、流体シミュレーションソフトのR&Dや可視化ソフトの開発(デスクトップアプリ)に使用していました。

元記事を表示

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が理解できていれば、不可解な点はなく実装できると思います。
ここで筆者が伝えたいことは、**基礎的な知識でも、使い方によっては大きなインパクトを発揮できることがプログラミングの面白さだ**ということです。
あくまで個人の感想ですが、難しいことを身に着けることに執着してしまう傾向がある

元記事を表示

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

元記事を表示

PicoRuby から始めるたのしい電子工作

# PicoRuby から始めるたのしい電子工作

[`大阪Ruby会議03`](https://regional.rubykaigi.org/osaka03/) で [`PicoRuby から始めるたのしい電子工作`](https://speakerdeck.com/ogom/enjoy-ruby-electronic-programming) を発表したときに時間の都合で割愛したコードの紹介と説明です。
また、告知していた PicoRuby Follow-up Osaka は開催することができましたので少し様子を紹介しています。

## 電子工作 のおさらい

電子工作は、電子部品や半導体素子を用いた工作のことです。

– 入力部品:スイッチ(人が操作)、センサー(周囲を調べる)
– 出力部品:LED(人に伝える)、モーター(何かを動かす)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8369/a5dd74ae-59c7-0fde-6565-9eca09deaf83.png)

元記事を表示

さくらのオブジェクトストレージにRubyからaws-sdk-s3を用いてアクセスする

この記事では凡そAWS S3互換であるとされるさくらのオブジェクトストレージに対し、Rubyのaws-sdk-s3パッケージを用いてアクセスする方法を記載します。

どのAPIが互換であるのかは以下の公式マニュアルをご確認下さい。

https://manual.sakura.ad.jp/cloud/objectstorage/api.html

## Gemfile

記事記載時点でのパッケージのバージョンは `1.141` です。

“`bash
gem “aws-sdk-s3”, ‘1.141’
“`

## Clientの初期化

クライアントは `Aws::S3::Client` です。

“`ruby
client = Aws::S3::Client.new(
region: ‘jp-north-1’,
endpoint: “https://s3.isk01.sakurastorage.jp”,
access_key_id: “01234567-89ab-cdef-0123-456789abcdef”,
secret_access_ke

元記事を表示

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では、既存のクラスやモジュールに新しいメソッドを追加したり、既存のメソッドを上書きしたりすることが可能です。これにより、アプリケーションの特定のニーズに合わせてカスタマイズできます。

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

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

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

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

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

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

元記事を表示

OTHERカテゴリの最新記事