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

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

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

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

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

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

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

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

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

元記事を表示

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が渡され、配列の各要素が出力されます。

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

ブロックはメソ

元記事を表示

製造メーカーからIT業界を歩いてみて

## イントロダクション
工作機械といった業界をご存知でしょうか?
工作機械とは金属や他の素材を加工して製品を作るための機械装置の総称です。
車のパーツや工具、電化製品などの一部を工作機械によって作られています。

私は前職で工作機械メーカーの電気設計に担当する仕事に携わっていました。
約3年前にITエンジニアとして仕事を変え、Webアプリケーション開発やスマホアプリ開発等の業務に携わっています。

この記事では主に前職の工作機械業界との違いや、生活の変化を私の経験を通して共有していきます。

## 働きやすさ
働きやすさで大きく変化がありました。

今の会社はフルリモートであり、基本的に出社は本人の任意によるところが多いです。
前職は製造メーカーであったので、現場での作業を強いられる為、リモート出社等は出来ませんでした。

リモートワークでは自分の時間をより自由に使えることが嬉しいです。出社時間がないことで、日常生活の様々なことが柔軟に行えるようになりました。また、電話対応や雑務が少ないため、仕事に集中しやすい環境です。

前職の場合、通常の設計作業以外に営業や製造管理、現場、品質保

元記事を表示

AlmaLinux9環境にrbenv・ruby3をインストールする

## 環境
* AlmaLinux 9.3
* rbenv 1.2.0-83
* ruby 3.2.2

個人占有の開発環境のため、各アプリのユーザーが共用できるようにシステムワイドにインストールします。rbenv、rubyともにインストール・アップデートなどはrootユーザーで操作する想定です。

## rbenvインストール
“`
# git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv
“`
git cloneで最新のrbenvをインストールします。

“`
# echo ‘export RBENV_ROOT=/usr/local/rbenv
export PATH=”$PATH:$RBENV_ROOT/bin”
eval “$(rbenv init -)”‘ > /etc/profile.d/rbenv.sh
# source /etc/profile
# rbenv –version
> rbenv 1.2.0-83-g325abac
“`
パスを通すなどの必要な処理を記述しますが、全ユーザーに一

元記事を表示

【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カテゴリの最新記事