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

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

VueなどのSPAを使った際のRESTAPIの設計

# 1.はじめに
バックエンドとフロントエンドのフレームワーク両方学習し終わった皆さん、本格的に両方を用いたWebアプリ制作を始めると思います!その中の道しるべになればいいなと考えているので、ぜひ見ていってください!
今回は組み合わせ方の中で最も有名であるRestfulな通信をするRESTAPIを紹介したいと思います!

# 2.前提
### 2-1.フロントエンド
#### 2-1-1.フロントエンドの知識
フロントエンドを勉強し終わった人は以下の知識があることを前提としています。

– `Vue.js`や`React`の書き方を知っている
– これらにおいてSPAで実装できる
– つまり、Routingができる

まだの人は、学習頑張ってください!

#### 2-1-2.フロントエンド終了後の想定される疑問
`firebase`などのBaaSやSaaSなどを利用しての実装はわかったけど、どうやってバックエンドとつながるのだろう
### 2-2.バックエンド
#### 2-2-1.バックエンドの知識
バックエンドを勉強し終わった人は以下の知識があることを前提としています。

– `

元記事を表示

Turbo 3: Turbo Framesで分解

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://turbo.hotwired.dev/handbook/frames

Turbo Framesを使用すると、ページの事前定義された部分を要求に応じて更新できます。フレーム内のすべてのリンクとフォームがキャプチャされ、レスポンスの受信後にフレームの内容が自動的に更新されます。サーバーが完全なドキュメントを提供するか、要求されたフレームの更新されたバージョンを含むフラグメントのみを提供するかに関係なく、その特定のフレームのみがレスポンスから抽出され、既存のコンテンツが置き換えられます。

フレームは``要素でページのセグメントをラップすることによって作成されます。各要素には一意のIDが必要で、これはサーバーから新しいページをリクエストするときに置き換えられるコンテンツと一致させるために使用されます。1つのページに複数のフレームを含めることができ、それぞれが独自のコンテキストを確立します。

“`h

元記事を表示

Cloud RunのDBマイグレーションどうする問題にCloud Runジョブで対処する

RailsアプリをCloud Runで動かすときにいくつか悩むことがありますが、そのひとつにDBマイグレーションをどうやって実行するかがあると思います。
この問題の解決策としてCloud Runジョブを使ったらうまくはまったのでご紹介します。

# おことわり

Cloud Run自体の説明やCloud Runへのデプロイ方法については省略しています。別途公式ドキュメントや解説記事を参照してください。

また、Cloud Runジョブは現在プレビューとして提供されているので、事前に利用規約などをご確認ください。

https://cloud.google.com/run/docs/create-jobs?hl=ja

# Cloud RunのDBマイグレーションどうする問題とは

RailsアプリのDBマイグレーションは`rails db:migrate`コマンドの実行によって行います。

Cloud RunにデプロイしたRailsアプリで`rails db:migrate`を実行したいと思っても、Cloud Runサービスはリクエストを受けて処理を実行するものなので、リクエストを伴わ

元記事を表示

RailsをRenderでデプロイ ヘルプ集【備忘録】

# 背景
以下の記事でデプロイを進めていく中で、わかりにくいことがあったので
その備忘録です!

https://qiita.com/koki_73/items/60b327a586129d157f38

# 流れ
今回のヘルプ集は上述の記事の中でフワッと記述されていた部分のみ抜粋します!
1. [マスターキーについて](#マスターキーについて)
1. [Gemfileについて](#gemfileについて)
1. [render-build.shについて](#render-buildshについて)
1. [render.yamlについて](#renderyamlについて)
1. [外部サービスとの連携(APIキーの設定)](#外部サービスとの連携apiキーの設定)

## マスターキーについて
このマスターキーが出現するのは[この部分](https://qiita.com/koki_73/items/60b327a586129d157f38#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E6%89%8B%E9%A0%86-%E3%81%9D%E3%81%A

元記事を表示

【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.

元記事を表示

Turbo 2: Turbo Driveでナビゲーション

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://turbo.hotwired.dev/handbook/drive

Turbo Driveはページレベルのナビゲーションを強化するTurboの一部です。リンクのクリックとフォームの送信を監視し、それらをバックグラウンドで実行して完全なリロードを行わずにページを更新します。これは、以前は[Turbolinks](https://github.com/turbolinks/turbolinks)として知られていたライブラリの進化版です。

# ページナビゲーションの基本

Turbo Driveはページナビゲーションをアクションのある場所(URL)への訪問としてモデル化します。

訪問はクリックからレンダリングまでのナビゲーションライフサイクル全体を表します。これにはブラウザ履歴の変更、ネットワークリクエストの発行、キャッシュからのページのコピーの復元、最終的なレスポンスのレンダリング、スクロール位置の更新が含まれます。

元記事を表示

[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

##

元記事を表示

github actionでdb migrate時にffi周りでLoadErrorが発生した

## 背景
2022/12月になってからgithub actionでdb migrate周りでエラーになり出したので対処の覚書。
(原因を完全に特定しているわけではないのでさっくり)

エラー内容抜粋
“`bash
LoadError: libffi.so.7: cannot open shared object file: No such file or directory – /home/runner/work/appname/vendor/bundle/ruby/3.0.0/gems/ffi-1.15.5/lib/ffi_c.so
/home/runner/work/appname/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require’
/home/runner/work/appname/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.15.0/lib/bootsna

元記事を表示

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

# みんなの戦国武将

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

# 1. 概要

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

![top.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/e478e1ba-ee53-1bc5-8c23-6bee5428e205.gif)

# 2. 開発背景

## 歴史が大好き

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

元記事を表示

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

元記事を表示

【個人開発】プログラミング学習のロードマップ投稿サービス 「ProadMaps」を開発しました!(Rails×Next.js×ECS)

## はじめに
私はもともとSIerで金融インフラの運用管理を4年ほど行なっていましたが、コードが書けるエンジニアになりたいと思い、webエンジニアへの転職に向けて学習をしております!
本記事では、私がプログラミングほぼ未経験から作成した[プログラミング学習のロードマップ/学習記録 作成ツール&共有サービス 「ProadMaps」](https://proadmaps.com/)について、作成までの学習記録、使用技術、サービス概要について紹介させていただきます!
[![logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710784/10364628-c298-694e-110d-717d9036165f.png)](https://proadmaps.com/)
**Githubのリポジトリ**

https://github.com/uyudane/backend-proadmaps

https://github.com/uyudane/frontend_proadmaps

## ポートフ

元記事を表示

【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

元記事を表示

動画の結合処理を実装したくて試行錯誤の末に、MediaConvertで頑張った話。

## ****この記事に期待できること****

複数の動画を結合する処理の流れがわかる
****AWS Elemental MediaConvert****の扱い方がわかる
**AWS Lambda**のメリットと使い所がわかる

## なぜ、「動画の結合」をしたいと思ったか?

実は私、パントマイムのパフォーマー&芝居役者として活動してまして、今は映像制作を仲間と一緒にやっています。こんな感じのチャンネル↓
『アニメOPっポイヤツ』
[https://www.youtube.com/c/Poiyatsu](https://www.youtube.com/c/Poiyatsu)
![ポイヤツ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984421/3cfb4c39-b53b-7757-245b-d6855f1857ea.jpeg)

「映像作りって大変だけど、楽しいなー。視聴者さんとも一緒に作れたら、もっと楽しいのになぁ」と考えていた所、
**ユーザーさんの投稿動画と、私「ハナムラ」の

元記事を表示

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 バージョンの更新も、ついには年貢の納め時というわけです。まだ時間は残されていますので、年内

元記事を表示

Turbo 1: はじめに

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://turbo.hotwired.dev/handbook/introduction

TurboにはJavaScriptをあまり使用せずに高速かつ現代的で漸進的に強化されたWebアプリケーションを作成するためのいくつかの手法がバンドルされています。これはすべてのロジックをフロントエンドに配置してアプリのサーバーサイドをJSON APIくらいにとどめる流行のクライアントサイドフレームワークのより単純な代替手段を提供します。

TurboではサーバーにHTMLを直接配信させることができます。つまり、アクセス許可を確認するためのすべてのロジック、ドメインモデルと直接対話すること、およびアプリケーションのプログラミングに必要なその他すべてのことをお好みのプログラミング言語内で多かれ少なかれ排他的に行うことができます。もうJSON分割の両側でロジックをミラーリングしなくなります。すべてのロジックはサーバー上にあり、ブラウザーは最終的な

元記事を表示

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/

元記事を表示

【実践版】Rails アプリを Cloud Run で動かしてみよう

[【超シンプル版】Rails アプリを Cloud Run で動かしてみよう](https://qiita.com/kato-hiroaki/items/b8abe200b4b653f0e655)で Cloud Run を使って Rails アプリを動かしてみました。
今回はもう少し実践で使えるようにデータベース、環境変数の設定、ログの収集、ビルドの自動化を構築していきたいと思います。

## 前提

以下の構成で作っていきます!
![Untitled-2022-11-29-2139.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322836/c701f2fa-0e28-f558-833c-3212ce6a2d96.png)

## 追加で利用するプロダクト

– Cloud SQL
– Cloud Logging
– Secret Manager

## 構築の流れ

1. Rails アプリ作成
1. Cloud SQL と接続する
1. Secret Manager を利用する
1. Clou

元記事を表示

OTHERカテゴリの最新記事