Ruby関連のことを調べてみた2022年12月03日

Ruby関連のことを調べてみた2022年12月03日
目次

【Rails6】コンソールでアソシエーションを理解しよう②(多対多)

この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿3日目のエントリーです。

2日目の @tomoaki-kimura の投稿、
[【Rails6】コンソールでアソシエーションを理解しよう①(一対多)](https://qiita.com/tomoaki-kimura/items/165fdcf94c179e8e08b4) の続きとなります。

## 環境と前提

– ruby 3.1.1
– Rails 6.1.7
– yarn 1.22.18

前提として、

[【Rails6】コンソールでアソシエーションを理解しよう①(一対多)](https://qiita.com/tomoaki-kimura/items/165fdcf94c179e8e08b4)

こちらの環境が作れていて、手を動かした状態からスタートとなります。

## 多対多のモデル
### 中間テーブルとは

中間テーブルは、今回の `User` と `P

元記事を表示

「位置引数とキーワード引数の分離」の要修正箇所収集するマン

## 0. はじめに

前置きとなる記事は以下 :rolling_eyes:

##### [Ruby 3.0 に含まれる非互換「位置引数とキーワード引数の分離」の乗り越え方](https://qiita.com/m-kubo/private/0cff8efb04390eb32e75)

## 1. 「位置引数とキーワード引数の分離」の要修正箇所を収集するコード

さっそくですが、以下のようなコードを Rails に追加します。

“`ruby:config/initializers/separation_of_positional_and_keyword_arguments.rb
# 「位置引数とキーワード引数の分離」の対応を進めるための補助モジュール
# Warning.warn をオーバーライドし、warning を出力する条件、出力先を制御します。
# 参考:https://docs.ruby-lang.org/ja/2.7.0/class/Warning.html
# https://docs.ruby-lang.org/en/2.7.0/Warning

元記事を表示

eager_load!で失敗した反省文

この記事は「READYFOR Advent Calendar 2022」の3日目の記事です。

# ようするに

Railsアプリケーションでは以下の設定がおすすめ。

“`rb
# config/environments/test.rb
config.eager_load = ENV[“CI”].present?
“`

# `Rails.config.eager_load`とは

アプリケーションは、コードが大きくなればなるほど読み込みに時間がかかってしまいます。

例えば「ちょっと動作確認のためにconsoleを開きたいんだけどな」と考えコンソールを開いたとき、毎回この読み込みが発生すれば開発効率が低下するのは火を見るより明らかです。

そこでRailsではコードの読み込みを最小限にするための遅延読み込みをサポートしています。Ruby定数名からファイルを探し出して読み込む仕組みで、開発用途なら非常に便利な機能ですね。

一方production用途ではリクエストを高速に返したいので、遅延読み込みではなく、Rails起動時にまとめて読み込んでいます。この切り替えを`Rails.

元記事を表示

飲食店の情報をとってきてみよう -ぐるなび編-

## 概要

いつか横断検索みたいなものを作りたいのでその前段階的に飲食店の情報取得をしてみる

## 言語
– Ruby

## 使うライブラリ
– nokogiri

nokogiriは取得したHTMLをパース(解析)するのに使います。
情報の取得部分はrubyの標準ライブラリのnet/httpをつかます。

## 本題
スクレイピングの基本は

– 通信内容の理解
– コードに落とし込む

以上である。

### 1. 通信内容の理解

ぐるなびのページに移動してデベロッパーツールで通信を確認します。
![スクリーンショット 2022-11-30 3.00.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/bfe0c9ac-2363-687a-c3ec-34e68e2f86b8.png)

今回はこのリクエストからrubyのコードを取得します。

通信を右クリックして「Copy as cURL」を選択します
![スクリーンショット 2022-11-30 3.00.40.png](h

元記事を表示

[rails]Googlemap APIを使ってプチ食べログを作りたいのでテスト環境で途中まで実装してみた!(Googlemap表示位置の変更、新規投稿編)

#### 初心者がやりたいことを綺麗にできないのでゴリ押ししてやり通しています。
間違いなく綺麗な書き方ではないので、そういったコードが嫌いな方は本気で見ないことをお勧めします。

## [やりたいこと]
ポートフォリオ用に、食べログのラーメン屋さん専門みたいなのを作ろうかなと
やろうとしている機能は
– [x] 口コミ投稿機能(今回の主軸)
– [ ] Device機能(既に完了済み)
– [x] GooglemapAPI(ちょっとだけ)
– [ ] 多対多(アソシエーション、フォロー機能)
– [ ] AWS(デプロイ済み)
などです。

## [注意]
かなり行き当たりばったりな記事です。
後々、他のgemなどの影響で書き方など変わる可能性があります。ご承知ください。

## [環境]
※使っていない可能性のある環境も記載してます。
Mac M1チップ
rails 6.1.6
ruby 3.0.1
node v16.17.1

## [前回まで]

https://qiita.com/_soratanaka_/items/766cf2fd0d56e538593c

##

元記事を表示

【個人開発】京都観光できっと大活躍!?京都の抹茶スイーツ店と神社仏閣のどちらも検索できるサービスを作った話。⛩【Rails7】

# [始めに?](#始めに?)

突然ですが、皆様**抹茶スイーツ**はお好きでしょうか?
**神社仏閣**を巡って御朱印を貰ったことはありますか?
私は抹茶スイーツと神社仏閣を巡るのが大好きで京都に住んでいるような**変わり者**です。
まあそんな特殊な人はあまりいないと思うのですが。
けれどそのどちらも普段は行わないだろう方も、折角京都に来たのならどっちか、
あわよくばどちらも巡りたいな〜と思ったりしないでしょうか?思いますよね?
抹茶スイーツ何選紹介記事とかはありますし、神社仏閣情報が豊富なサイトは勿論あります。
**しかしそのどちらもが同時に載っているサービスは存在しないのです……**
えっ。。何故。。絶対需要があるのに!
そうだないなら作ろう!私が**ユーザー**だ!
というわけで今回作ったサービスが以下になります。

[サービスURL]

https://www.matcha-to-jinja.com/

[GitHubのURL]

https://github.com/hiiragi17/greentea_temple

# 目次
| 章 | タイトル | 備考 |
|

元記事を表示

Excelを扱うRubyGemまとめ 2022

※本記事は、22/12/02の[Qiita Night~Ruby~](https://increments.connpass.com/event/265957/)のLTでお話したことを記事化したものです。

8年前、[RailsでExcelを扱うGemまとめ](https://qiita.com/Kta-M/items/02a2c41c5624f75498aa)という記事を書きました(RubyではなくRailsと書いているのは若気の至り)。Qiitaに記事を書き始めてから初めてたくさんのいいねをもらった思い出深い記事です。

ですが、投稿から8年も経っているにもかかわらず、「excel gem」と検索するとまだ最初に出てきます。
Excel関連Gem業界にとってはあんまり良くないと思うので、改めてまとめてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39565/2f857727-e9bd-1d7c-d9d1-ade24dd500cf.png)

なお、本記事での検証用コードは

元記事を表示

【徹底解説】プログラミング初心者が2ヶ月かけてRuby on Railsのアプリを開発しました!ぜひ一度ご覧ください!

# みんなの戦国武将

– アプリ → https://sengokubusyou.herokuapp.com/
– Qiita → https://qiita.com/TS1engineer

# 1. 概要

– **200 人以上の豊富な戦国武将の中から、好きな武将を見つけたり、登録することができます。**
– **好きな武将にコメントを投稿することで、気の合う仲間とつながることができるアプリです。**

![index](https://user-images.githubusercontent.com/105146615/204918007-0e2f2fc2-5331-40ba-886a-d6a2aea3f146.gif)

# 2. 開発背景

## 歴史が大好き

**2016 年大河ドラマ「真田丸」をきっかけに歴史に興味をもち、歴史の本を購入したりする中で、実際に現地に行くことが趣味になりました。**
中でも戦国武将について調べることが日課となっていて、特に気になる武将がいれば、ゆかりの地を巡ったりしています。
![haikei1jpg.jpg](https://qi

元記事を表示

Rubyでクラスメソッドを定義する方法を思いつく限り挙げてみた

## 概要

タイトルの通り、Rubyでクラスメソッドを定義する方法に関する記事です。

## 動機

元々はクラスメソッド全般に関する記事だったのですが、調べているうちに書き方を色々思いついてしまったのでそちらをメインにすることにしました。

## レギュレーション

* 文法要素については1つとして扱う
* メソッドを使うものについてはメソッドの名前ごとに1つとして扱う
* eval系の場合、文字列とブロックは同じ扱いになる

## 補足

ちゃんとクラスメソッドや特異クラスについて知りたい方は以下の記事をどうぞ!
https://magazine.rubyist.net/articles/0046/0046-SingletonClassForBeginners.html

## 本編

### 1. クラス名スタイル

実は利用頻度が少ない気がします。

“`ruby
class C
def C.m
puts ‘m’
end
end
“`

### 2. selfスタイル

最も一般的な書き方な気がします。

“`ruby
class C
def

元記事を表示

rails g kaminari:views bootstrap4 でprivate method `themes’ called for Kaminari::Generators::ViewsGenerator:Class (NoMethodError)というエラーが出る

# 実行環境
* Windows 10
* Rails 6.0.3.6
* Ruby 3.1.2

# 実践したこと
* gem ‘kaminari’を追加し、ページネーションを実装しようとしていました。
* gem導入後、bootstrap用のビューテンプレートを作成しようとし、
“`rails g kaminari:views bootstrap4“`のコマンドを実行したところ、
タイトルのようなエラーが発生したため、解決のプロセスをまとめます。
# エラー内容
“`言語:ターミナル
% rails g kaminari:views bootstrap4
C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/kaminari-core-1.2.0/lib/generators/kaminari/views_generator.rb:117:in `initialize’: Invalid argument @ rb_sysopen – https://api.github.com/repos/amatsuda/kaminari_themes

元記事を表示

【Ruby on Rails】プログラミング初心者がオンラインスクールのチームで開発したアプリを公開しました!ぜひ一度ご覧ください!

# 1. 開発したアプリ
– アプリ → https://team-project-64.herokuapp.com/
– GitHub → https://github.com/yanbaru-expert/team_project_64
![index.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/635b4f64-3276-2a42-1adc-4252d4027451.gif)

# 2. 開発環境
## 使用技術
| 項目 | 内容 |
| —————- | ——————– |
| 言語 | Ruby 2.7.6 |
| フレームワーク | Ruby on Rails 6.1.6.1 |
| フロントエンド | HTML/scss/JavaScript |
| データベース | PostgreSQL

元記事を表示

メモ:クラスとインスタンス

* クラス(鋳型・設計図)
* インスタンス(クラスから実体を作り出したもの)
* インスタンス化(クラスからインスタンスを生み出す工程)

# インスタンス化(クラスからインスタンス)
#### newメソッド
インスタンスを作り出すためには、クラス名にnewメソッドを利用することで呼び出せる。
“`new.rb
class Class_name
end

Class_name.new # こいつ。
“`
#### initializeメソッド
newメソッドを呼び出すと自動で呼び出されるメソッド。定義していなければ呼び出されない。
定義は普通のメソッドと同じ方法でできる。

newメソッドに引数(実引数)がある場合、同じ値がinitializeメソッドの引数(仮引数)として呼び出される。
“`initalize.rb
class Class_name
def initialize(hikisu)
print “引数は#{hikisu}です”
end
end

Class_name.new(‘引数’) # こんなふうに引数も入れることができる。

元記事を表示

【Rails API】hash値で検索をかけたい場合

## はじめに
調整さんのようなWebアプリを作成していて、ルーティング・コントローラー内で、イベントをidではなくhash化されたidを使用した時の備忘録

### マイグレーションファイル
“`ruby
class CreateEvents < ActiveRecord::Migration[7.0] def change create_table :events do |t| t.references :user, foreign_key: true, null: false t.references :category, foreign_key: true, null: true t.string :name, null: false t.text :description, null: false t.boolean :is_public, null: false, default: true t.string :hashed_url, null: false t.datetim

元記事を表示

TypeScriptとRubyについて。

Rubyのアドベントカレンダー2022が気づいたら作成されていて、

登録しようと想ったら枠がいっぱいだったので、(いつ作成されたのだろう…)

2枠目に入れました。下のライブラリ、GitHubではスターを2つもらいました。

(1つは自分で入れています。お気に入りのつもりです)

https://github.com/takkii/himekuri_ts

この数日で少し更新したのですが、このようなRubyGemsを登録しました。

このRubyGemsライブラリは[日めくり](https://github.com/takkii/himekuri)のように、

日付や時間などを出力し表示します。

### v1.1.0の例

“`markdown
時刻を表示 : 2022年6月22日 : 14時14分27秒 : 水曜日
来年の1月1日まであと : 192日です
令和4年6月22日 : R04.6.22 : [和風月] → [水無月]
日めくり数え番号 : 1.1.0
“`

処理の内容は、Ruby側のopen3ライブラリでTypeScriptを外部コマンドとして実行し出力結果

元記事を表示

【rails】rails g controllerコマンドでapi/以下にファイルを生成するコマンド

## はじめに
自分はAPIモードを使わずにapi/以下にコントローラーを作っていて、毎度お目当ての情報にたどり着くのに時間がかかっていたのでメモ
### 参考
https://qiita.com/terufumi1122/items/634dac88de01f3f73821

## 環境
“`ruby
OS: macOS Monterey
Ruby: 3.1.2
Rails: 7.0.4
“`

## コマンド
“`console
rails g controller api/v1/posts
“`

元記事を表示

RubyGemsでrust extensionがリリースされたので、Rustでgemを作ってみた

[Ateam Group U-30 のカレンダー](https://qiita.com/advent-calendar/2022/ateam-group-u30)の2日目はQiitaの @kyntk が担当します。

今年、RubyGems 3.3.11でRust extensionsのexperimentalリリースがありました。

https://blog.rubygems.org/2022/04/07/3.3.11-released.html

変更されたPull Requestは↓です。
この変更で`CargoBuilder`が実装され、`Cargo.toml`ファイルを見つけるとcargoでRustのビルドができるようになりました。
今まではRust用にビルドの設定をする必要があったのですが、かんたんにビルドができるようになりました。

https://github.com/rubygems/rubygems/pull/5175

ちょうど、Qiita社でもRustを使う機会がありそうだったので、勉強がてらRustでgemを作成してみました。

:::note wa

元記事を表示

Ruby 3.0 に含まれる非互換「位置引数とキーワード引数の分離」の乗り越え方

## 0. はじめに

“`text
おはよう、Ruby エンジニアの皆さん。2022 年も年の瀬となりましたが、元気にしていますか?

実を言うと Ruby 2.7.x はもうだめです。突然こんなこと言ってごめんね。

でも本当です。今年の 4/12 に Ruby 2.7.6 がリリースされました。

それが終わりの合図です。程なく始まるセキュリティメンテナンスフェーズは 1 年しかないので気をつけて。

それがやんだら、少しだけ間をおいて終わりがきます。
“`

**参考:** [「実を言うと、地球はもうだめです。」](https://alu.jp/series/%E6%9C%80%E7%B5%82%E5%85%B5%E5%99%A8%E5%BD%BC%E5%A5%B3/article/V6fWmBCTyJYu3xZwTCCi)

## 1. 要するに、来年の 4 月で Ruby 2.7.x のサポートが終了します

そんなわけで、見て見ぬ振りをしてきた、あなたのプロジェクトの Ruby バージョンの更新も、ついには年貢の納め時というわけです。まだ時間は残されていますので、年内

元記事を表示

Rails6 を Docker で開発する為に準備する

# 初めに

プロジェクトの技術選定の中で、`Rails6` を検討しており、**「せっかく新規で開発するならDockerで開発したいよね」** という話になったので、`Docker` を使って `Rails` プロジェクトの作成までの手順をまとめておきます。

# 概要

## 事前準備

– Docker for mac のインストール
– base Image の取得 docker pull ruby:2.6.5-alpine3.10
(これにした理由は、Small. Simple. Secure だからです)

## Rails プロジェクトの作成

### 1. Login to docker container

Docker container に入って `Rails` プロジェクトを作成します。
作業ディレクトリで以下のコマンドを実行します。

“`.bash
$ docker run -v $PWD:/usr/src/ –rm -it ruby:2.6.5-alpine3.10 /bin/sh -c /bin/sh
“`

`-v $PWD:/usr/src/

元記事を表示

Ruby と Go それぞれで依存性の注入を書く

## はじめに
これは [株式会社 RetailAI X Advent Calendar 2022](https://qiita.com/advent-calendar/2022/retail-ai-x) の 2 日目の記事です。

昨日は @kametaro さんの記事でした。 [RaftのErlang実装ことはじめ – Qiita](https://qiita.com/kametaro/private/a680d74da572f43ae493)

本日は、「 Ruby と Go それぞれで依存性の注入を書く」です。
Ruby の DI の是非は問いません。

## 環境
Ruby 2.6.1
Go 1.18.2
macOS Monterey ver. 12.3.1 Apple M1

## Ruby
?
“`ruby
class SubmachineA
def sub_process
# …
end
end

class Machine
def main_process
SubmachineA.new().sub_process
end
end

元記事を表示

【Rails6】コンソールでアソシエーションを理解しよう①(一対多)

この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿2日目のエントリーです。

1日目は @Keichan_15 さんで
[Rails I18n(日本語化)を使用する場合の躓きポイント徹底攻略](https://qiita.com/Keichan_15/items/eae011dccea44abda768)
です。「翻訳ファイルあたらね〜」となる事は多いハズなので、初学者の方には嬉しい記事ですね。

## はじめに

最近DMMでメンターをやらせていただいております。 @tomoaki-kimura です。
RailsはRailsが隠しているコードを理解する事で、ぐっと扱いが上手になります。
今回は、今更のアソシエーションをRailsコンソールを使ってRailsのアソシエーションを理解していきましょう。

## 環境と前提

– ruby 3.1.1
– Rails 6.1.7
– yarn 1.22.18

(今回モデルし

元記事を表示

OTHERカテゴリの最新記事