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

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

AWS EC2の「No space left on device」エラーの解決方法

## はじめに
株式会社じげんのrkinseiです。
:airplane: 留学エージェント比較サービス 留学くらベーるの開発を担当しています。

今回はAWS EC2の「No space left on device」エラーの解決方法を紹介します!

苦戦しながら修正したものの、完璧な対応はまだできていないと思いますが、今回実際に試してみた対処法をまとめてみました。
これから同じエラーを解決したい方の参考になれば幸いです。:relaxed:

## エラーの概要
RailsアプリケーションをAWSのEC2インスタンスにデプロイした際に、「no space left on device」とエラーメッセージが表示されます:triumph:

“`
error An unexpected error occurred: “ENOSPC: no space left on device, copyfile ‘/home/ec2-user/.cache/yarn/XXXXXXXXX'”.
rake aborted!
“`

インスタンスにログインすると、以下のようにエラーメッセージが表示さ

元記事を表示

Ruby on Railsの人気のあるデザインパターン

## はじめに
デザインパターンは、ソフトウェア開発の一般的な問題を解決するため、様々なプログラムで再利用できるソリューションのことです。RailsはすでにModel-View-Controller(MVC)というデザインパターンを実装しており、コードをより適切に整理しています。

この記事にデザインパターンの定義、メリットとデメリットについて少し説明したいです。それにRailsによく使われているデザインパターンを紹介し、それぞれの例を検討します。

## デザインパターンとは

デザインパターンは、アプリケーションを開発する際に使用した方がいいベストプラクティスの一部であり、読みやすさを向上させ、将来的にそれをより適切に維持できるようにします。デザインパターンに慣れていない場合は、レシピのようなものです。デザインパターンもよくある間違いを減らすのにも役立ちます。

デザインパターンは具体的なコードではなく、使用すべき概念とプラクティスにすぎないことを理解することが重要です。 この記事、または他のデザインパターンに関するガイドでは、アプリケーションにすぐにプラグインできるコードはありま

元記事を表示

CloudWatchLogsでRailsアプリのログを表示してみた

## はじめに
Railsアプリケーションを運用しているEC2上のログを、CloudWatchで表示するまでの手順をまとめました。
公式ドキュメントをベースに細かい部分も説明していきます。

## CloudWatchLogsのメリット
* 複数のサーバーがあってもログを一箇所に集約して管理できる。一々複数のサーバーにssh接続する必要がない。
* EventBridgeなど他のAWSリソースとの連携が簡単。エラー発生したらSlackに通知することもできる。
* Logs Insightsを使って高度な検索ができる

![スクリーンショット 2021-12-20 15.48.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603209/88f761bd-a0eb-f909-fe76-60314f3f7b8a.png)

## 前提
* AWSアカウント作成済み
* EC2インスタンス作成済み
* OS: CentOS 7.6.1810

## 手順の概要
1. ポリシーとロールを作成
1. EC2に

元記事を表示

ActiveRecordにおける楽観的ロックと悲観的ロックの使い方

# 環境

– Rails 7.0.0
– Ruby 2.7.5
– MySQL 5.7

# 楽観的ロック

`lock_version` というカラムを用意するだけで利用できます。

“`
$ rails g model user name:string lock_version:integer
$ bundle e rails b:migrate
$ bundle e rails c
“`

“`ruby
irb(main):001:0> User.create!(name: ‘Taro’)
(0.9ms) SELECT sqlite_version(*)
TRANSACTION (0.1ms) begin transaction
User Create (0.5ms) INSERT INTO “users” (“name”, “lock_version”, “created_at”, “updated_at”) VALUES (?, ?, ?, ?) [[“name”, “Taro”], [“lock_version”, 0], [“created

元記事を表示

ソフト開発未経験チームがオンボーディングでWebアプリ作ってみた

この記事は [DENSO アドベントカレンダー 2021](https://qiita.com/advent-calendar/2021/denso) の21日目の記事です。

# はじめに
社内の [リカレント制度](https://www.denso.com/jp/ja/news/newsroom/2021/20210527-01/#:~:text=%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E4%BA%BA%E6%9D%90%E3%81%B8%E3%81%AE%E3%83%AA%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%88%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E6%A7%8B%E7%AF%89%E3%80%81%E9%81%8B%E7%94%A8) (ニュースメディアだと [キャリア転身制度](https://newswitch.jp/p/26996)という表現) でソフト未経験からキャリアチェンジを図り、2021年6月より開発チームにアサインされました

元記事を表示

食べログの内製Pub/Subメッセージング基盤をApache Kafkaにリプレイスした話

この記事は食べログアドベントカレンダー2021の21日目の記事です???

## はじめに
こんにちは。技術部マイクロサービス化チームの @SinceK13 です。

マイクロサービス化チームは、「巨大なモノリシックサービスにおける開発の辛さを解消し、少人数のチームが自律的に意思決定しながら開発するためのシステム基盤を作る」というミッションのもと活動しています。

本エントリではマイクロサービス化チームで取り組んだ、食べログの内製 Pub/Sub メッセージング基盤を Apache Kafka(以下 Kafka)を利用した Pub/Sub メッセージング基盤にリプレイスした話について紹介します。

また、12/14 に同チームの @weakboson が「[食べログのレストラン検索を支える Debezium と Apache Kafka](https://qiita.com/weakboson/items/534e243552731f1cd2f4)」というタイトルで、本エントリとは異なる Kafka の活用事例を紹介していますのでご興味ある方はぜひご覧ください^^

## Pub/Su

元記事を表示

CircleCI × docker-compose をRailsアプリに導入してみた

Railsアプリに`CircleCI`と`docker-compose`を導入してみました。
以下記録も兼ねて残しておきます。

“`.circleci/config.yml
version: 2
jobs:
build:
docker:
– image: circleci/ruby:2.6.8-node-browsers
environment:
– BUNDLER_VERSION: 2.2.33
– RAILS_ENV: test
– POSTGRES_USER: <%= ENV['POSTGRES_USER'] %>
– image: circleci/postgres
environment:
– POSTGRES_USER: <%= ENV['POSTGRES_USER'] %>
– POSTGRES_PASSWORD: <%= ENV['POSTGRES_PASSWORD'] %>

元記事を表示

環境変数の設定方法【Rails】

# dotenv-railsをbundle install

“`:Gemfile
gem ‘dotenv-rails’
“`

# .envファイルを作成し、環境変数を定義する

ルートディレクトリに自分で`.env`ファイルを作成し、環境変数を定義する。
以下の例ではPostgreSQLのパスワードとユーザー名を定義しています。

“`:.env
POSTGRES_PASSWORD = [任意の文字列]
POSTGRES_USER = [任意の文字列]
“`

# .gitgnoreに.envを追加

.gitgnoreに.envファイルを追加してすることによってGitHubに.envファイルをあげないように設定できます。

“`:.gitgnore
…(コード省略)
/.env
“`

# 環境変数が正しく定義されているか確認

`rails c`でコンソールを起動させて環境変数を確認することができます。

“`:コンソール
[1] pry(main)> ENV[‘POSTGRES_PASSWORD’]
=> “任意の文字列”
“`

# 参考
[【Rai

元記事を表示

RubyMineを使い続けている理由

## はじめに

[この記事はiCARE Dev Advent Calendar 2021(レーン2)の20日目の記事です。](https://qiita.com/advent-calendar/2021/icaredev)

弊社のサービス(Carely)ではサーバサイドの開発言語でRuby On Railsを使っています。
そこで私自身がRubyMineというIDEを使用しているのでRubyMineを使っている理由を記載したいと思います。

## 使い始めた理由
そもそも使い始めた理由ですが前前職で周りのエンジニアが使っておりオススメされたからです。
その時は会社でライセンスを購入してくれたというのも使うきっかけになりました。

## 使い続けている理由
前前職で使い始めて現在も使い続けている理由は以下の点で優秀だからです。

### 1. コードジャンプが強力
これは社内でRubyMineを使っている方に聞いた結果、まず最初に返ってきた理由です。自分もそうです、むしろこれだけにお金出しても良いレベルです。

コードジャンプが強力な点は**gemのソースまで追っていける(rubyの

元記事を表示

turbolinksとは

# 記事の対象者

・右も左もわからない初学者で、progateはやってますよくらいの方

# turbolinksとは

JSのライブラリ。なのでJavaScriptの話です。

rubyではgemになっている。rails4以降はデフォルトでついてくる。

aタグをクリックした時の画面遷移を高速化するためのもの。

リンクをクリックするときにターボして高速移動する、みたいなイメージ。

# どうやって処理を速くしているのか?

参考
[https://techtechmedia.com/turbolinks-rails/](https://techtechmedia.com/turbolinks-rails/) 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1766018/e753bd8e-18ea-6e8f-95dc-f319e19069a4.png)

headとbodyを見てほしい。

headタグは変更なしで、bodyだけ、遷移の前後で違う。

turbolinksを

元記事を表示

Rubyでnull文字を正規表現でひっかけたいとき

個人的に結構ハマってしまったのでメモ

“`
# null文字の定義
null_string = “\0”
=> “\u0000”

# null文字を引っ掛ける
null_string.match(/\0/)
=> #
“`

元記事を表示

【Rails】フラッシュメッセージの設定(bootstrap)

##設定内容
・共通のファイルを作成し、application.html.erbで読み込みが出来るようにする
・コントローラーにflash内容を記載

##共通ファイル作成
views/shared配下に、_flash_message.html.erbを作成し、flash用の部分テンプレートを作る。

“`
<% flash.each do |message_type, message| %>
  

【Rails】マイグレーションのGeneratorから学ぶ命名規則

# はじめに

マグレーションファイルは以下のようにGeneratorで生成することができます。

`$ rails generate migration AddPartNumberToProducts`

参考: https://railsguides.jp/active_record_migrations.html

このGeneratorは特定のファイル名が与えられたとき、よしなにテンプレートファイルを出力します。
ここでは、Railsが用意しているパターンを調査し、マイグレーションファイルにどのような名前をつけるのがRails Wayに沿っているかを調査します。

## add_X_to_Y

カラムやインデックスなどを追加するマイグレーションファイルを生成します。

“`
$ rails g migration add_token_to_user auth_token:token
“`

“`ruby
class AddTokenToUser < ActiveRecord::Migration[7.0] def change add_column :u

元記事を表示

migrationのrollbackの注意点(dafault値の取り扱い)

# TL;DR
migrate後のmigrationファイルを書き換えると、データの値が荒れがち。
rubocopに「直したほうが良い」と言われようとも、migrationファイルは書き換えないのが基本。
(自戒の念を込めて記事化)

# 状況
rubocopで静的解析をかけた時のお話。
こんな表示が出ました。

“`ruby:rubocop実行画面
db/migrate/20210827131348_add_activations_to_users.rb:9:5:
C: Rails/BulkChangeTable:
You can use change_table :relationships, bulk: true to combine alter queries.
“`

「add_columnを何度も重ねずに、add_tableで一括変更してくれ」とのことなので、
そのように変更。

# やったこと

“rails db:migrate:status” => ID確認。
“rails db:migrate:down VERSION=xxxxxxx” => downに

元記事を表示

【Rails】GETでリクエストボディを利用しない方がよい理由

# はじめに

Web APIを開発する場合、必要なパラメータを取得する方法はいくつか存在します。

1. URLパラメータ
1. リクエストヘッダ
1. リクエストボディ

> リクエストの最後の部分が本文です。本文が存在しないリクエストもあります。リソースを取り込むリクエストである GET, HEAD, DELETE, OPTIONS は通常、本文は不要です。サーバー内のデータを更新するためにデータを送信するリクエストもあり、 POST リクエストでよくあります (HTML フォームのデータを持つ)。

参考: https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#body

# GETでリクエストボディを利用したらどうなるか

そもそもGETメソッドはリソースを取り込むリクエストであるため、リクエストボディを用いなくても要件を実現できるはずですが、実装次第ではリクエストボディを用いることができてしまいます。
ここでは、GETメソッドでリクエストボディを利用した場合のケースを解説します。

## 実例

実際の開発現場で書か

元記事を表示

【個人開発】居酒屋で「すいませーん」という声が通るかを、文字起こしAPIで判定する

# はじめに
居酒屋で店員さんを呼ぶ声が通らず、恥ずかしい思いをしたという経験はありませんか?
そんな日常の悩みを解消するため、自宅にいながら店員さんを呼ぶ練習ができるアプリを開発しました。

本記事では、「騒音の中で声が通るかどうかを判定する技術」について解説します。


# 1. サービス紹介
– タイトル: 『すいませんチェッカー』
– URL: https://suimasen.jp/
– ソースコード: https://github.com/masa-oh/suimasen/

※現在はPCのみ対応しており、スマートフォンは非対応です。
![suimasen_ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/780389/b8a96122-6c41-eff1-1746-afd88ba94e2a.png)

– 遊び方
– 初めにステージを選びます。
– マイクボタンを押して、「すいませーん」と店員さんを呼びます。
– 判定結果が表示さ

元記事を表示

RubyMineをさらに便利にするプラグインたち:2021年版

# はじめに
[Ateam Commerce Tech Inc. Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ateam-commerce-tech)の20日分です。
本日は@hibiheionが担当します。
業務では主に自転車ECサイト[cyma](https://cyclemarket.jp)のバックエンドの機能をRailsで書いています。

# RubyMineとのかかわり
RubyMineはJetBrainsが提供しているRubyが得意なIDEです。
cymaのバックエンドは数年前にRailsへリプレースしたのですが、その頃から愛用しています。
最近はTypeScriptやReactといったフロントエンド系の開発への関わりも出てきてRubyMineではつらいのではないかという懸念もあったのですが、そういったものに対してもコード補完などは効いて問題なく開発できました。
このあたりは多彩なIDEを作っているJetBrainsの面目躍如といったところかもしれません。

# RubyMineのプラグイン

元記事を表示

環境構築の素人がRailsの環境をWIndows11PCに作ってみた

この記事はエイチーム引越し侍 / エイチームコネクトの社員による、[Ateam Hikkoshi samurai Inc.× Ateam Connect Inc. Advent Calendar 2021](https://qiita.com/advent-calendar/2021/hikkoshizamurai-connect) 20日目の記事です。

# はじめに
僕は環境構築が素人なphperです。
そんな僕がそろそろRuby on Railsでも覚えようかなと思い立ち、環境を用意した中で、環境構築をよくわかっていない素人だからこそ簡単な事にハマってしまいました。
そんな悲しみを1人でも減らすため、僕と同じような素人が何となく環境を作る事ができるようにお手伝いできたら幸いです。

# 調べるにあたっての不安
まず環境構築をしようと調べる中で、Windows11での環境構築に関する記事はあまり見つからないのではないでしょうか?
リリースされてから、まだそれほど期間もたっていないので当然といえば当然ですね。
でも安心してください!
僕がやってみた所感なのですが、先人がWindows

元記事を表示

Windows11とWSL2で始めるWebシステム開発

## はじめに

こんにちは。ディップ株式会社ではたらいてる@Payayayayaです。

Web系システム開発といえばMacみたいなイメージがあると思いますが(偏見)、
Windows11でより進化したWSL2を使えばWindowsでのWeb系システム開発も結構イケる感じなので紹介します。

**Windows11 + WSL2環境でDocker使ってRailsアプリを作成してHerokuにデプロイ**してみます。

### 必要なPC要件

– Windows11がインストールされている([バージョン確認方法](https://support.microsoft.com/ja-jp/windows/%E4%BD%BF%E7%94%A8%E4%B8%AD%E3%81%AE-windows-%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%8

元記事を表示

Rails 6.1 の Renderable objects で薄い View をお手軽に脱 ERB する

こんにちは。 Qiita Team の開発に参画している @tomoasleep です。
巷では、Rails 7 で盛り上がってますが、今回は Rails 6.1 で導入された Renderable objects についての紹介と、開発での応用例について話していきたいと思います。

## Rails 6.1 で `render` に `#render_in` を実装したオブジェクトを渡せるようになった

Rails 6.1 では以下のように、View や Controller の render メソッドに `render_in` を実装したオブジェクト (Renderable object) を渡すことができるようになりました。

“`erb

Header

<%= render HelloComponent.new %>
“`

“`ruby
class HelloComponent
def render_in(view_context)
# view_context を介して helper method などの view で使える method

元記事を表示

OTHERカテゴリの最新記事