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

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

【Rails】システムスペックで日本語のファイル名をダウンロードするとファイル名が “download” になってしまう場合の対処法

## 発生した問題
Railsのシステムスペックでファイルダウンロードの機能をテストしようとしたが、ファイル名がなぜか “download” になってしまう。

“`
# 期待するpath
/path/to/downloaded_files/ほげほげ.txt

# 実際のpath
/path/to/downloaded_files/download
“`

以下は失敗するテストコード(ヘッドレスChromeを利用するシステムスペック)の例。

“`ruby
click_link ‘ダウンロード’

# wait_and_find_download_file は自作のヘルパーメソッド、という想定
download_path = wait_and_find_download_file

expect(download_path).to end_with “ほげほげ.txt”
#=> Failure/Error: expect(download_path).to end_with “ほげほげ.txt”
#=> expected `”/path/to/downloaded_file

元記事を表示

mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘arm64e’)

## エラー内容
`rails new`しようとしたところ次のエラーが発生。
“`
$ rails new .
:148:in `require’: dlopen(/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle, 0x0009): tried: ‘/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle’ (mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘arm64e’)), ‘/usr/local/lib/stringio.bundle’

元記事を表示

Railsでよく使うコマンドをまとめてみた。

本記事では、Railsのよく使うであろうコマンドについてまとめていきます。

# 目次
– [はじめに](#はじめに)
– [開発中よく使う](#開発中よく使う)
– [railsのアプリ起動](#railsのアプリ起動)
– [コンソールの起動](#コンソールの起動)
– [テストの実行](#テストの実行)
– [何かを作りたい](#何かを作りたい)
– [新しいアプリケーション](#新しいアプリケーション)
– [様々な種類のファイル](#様々な種類のファイル)
– [データベース](#データベース)
– [マイグレーション関係](#マイグレーション関係)
– [未実行のマイグレーションファイルの実行](#未実行のマイグレーションファイルの実行)
– [マイグレーションの状況を確認](#マイグレーションの状況を確認)
– [テーブルの初期化](#テーブルの初期化)
– [データベースに初期データを入れる](#データベースに初期データを入れる)

# はじめに
私は、言語をはじめたてでコマンドを覚えてい

元記事を表示

既存のrailsアプリをdockerを用いてコンテナ化する

# ゴール

既存のrailsアプリを
docker,docker-composeがインストールされているPCであれば、
**個人PCの環境に左右されることなく**[ローカル](http://localhost:3000)にて再現できるようにする。

# 事前準備
* 以下の環境にてローカルで動作確認済みのrailsアプリ
“`ver.
ruby 3.2.2
Rails 7.0.6
postgresql 12
“`

* docker,docker-composeのインストール

https://docs.docker.com/engine/install/

https://docs.docker.jp/v1.12/compose/install.html

# 手順

**1.Dockerfile、doccker-compose.ymlの作成と記述**
**2.database.ymlファイルの編集**
**3.コンテナ生成と実行**
**4.動作確認**

順番に解説していきます。

### 1.Dockerfile、docker-compose.ymlの作成と記述

元記事を表示

Railsのレスポンスに関連するメソッドまとめてみた

# Railsのレスポンス `response` について

Railsにおける`response`オブジェクトの基本的な使い方や特性についてまとめています。

## 目次
– [レスポンスの内容を文字列で取得](#レスポンスの内容を文字列で取得)
– [レスポンスのcharsetを取得](#レスポンスのcharsetを取得)
– [レスポンスクッキーをハッシュに変換して取得](#レスポンスクッキーをハッシュに変換して取得)
– [HTTPステータスコードに対応するメッセージを取得](#HTTPステータスコードに対応するメッセージを取得)
– [コンテントタイプを設定](#コンテントタイプを設定)
– [パスに格納されているファイルをレスポンスボディとして返す](#パスに格納されているファイルをレスポンスボディとして返す)

## 逆引き

## レスポンスの内容を文字列で取得

#### 説明
レスポンスの内容を文字列で取得
#### 使い方
“`ruby
response.body()
“`

## レスポンスのcharsetを取得

#### 説明
レスポンスのcharse

元記事を表示

【Ruby】すでに投稿されているものを投稿できないようにする

# はじめに
大学生限定 プログラミングコミュニティ 『GeekSalon』で活動しているWebメンターの者です!
もし少しでも興味がありましたら、ぜひお話を聞きにきてください!

# 前提
この記事でできることを紹介します!
バリデーションを使い、すでに投稿されているデータは投稿できないようにする機能をつけます

**例)Vaundyについて投稿している人がすでにいる場合、Vaundyについては投稿できないようにする**

**前提:投稿機能の実装が完了していること**

**注意モデルはmusic,カラムはcontentになっているので、各々適切なものに修正してください**

# バリデーションの追加

**そもそもバリデーションとは?**
投稿フォームで何かを投稿するとき、「入力必須項目」というのを目にしたことはないでしょうか?

例えば「名前やメールアドレス、パスワード」などです。このとき、入力必須項目に何も入力しなかった場合、投稿ができないようにしたいですね。

他にもパスワードなどは4文字以上であるとか、すでにデータベースに存在しているメールアドレスで登録できないようにする

元記事を表示

zendeskの記事をコピペする

## やりたかったこと
zendeskのブランドAの記事をブランドBにコピーしたかった。
ブランドAの記事をブランドAの別セクションに保存するということもできると思う。

## 方法
zendeskがAPIを用意してくれているのでそれを使う。
スクリプトはrailsで書いた。

[API を使用してヘルプセンターの記事のコピーを公開および同期する](https://support.zendesk.com/hc/ja/articles/4409408035610-API-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%98%E3%83%AB%E3%83%97%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC%E3%82%92%E5%85%AC%E9%96%8B%E3%81%8A%E3%82%88%E3%81%B3%E5%90%8C%E6%9C%9F%E3%81%99%E3%82%8B)

元記事を表示

【プログラミング初心者の学習方法】自走力を意識したgemの学び方、ReadMeの読み解き方

### はじめに

こんにちは、駆け出しWebエンジニアを目指して学習中の「さば?」[@saba7678pg](https://twitter.com/saba7678pg)と申します。

:::note warn
技術記事の練習も兼ねて、プログラミング勉強中の身で書かせていただきました。
引用元などの情報に注意しながら書かせていただきましたが、
至らぬ点・誤った知識等が記載されている可能性がございます。

何かございましたらお手数ですがご指摘いただけますと幸いです。
:::

### 今回の記事の対象者
– Ruby,Railsについて学習中
– 最低でもProgateは一通り終えている
– Google Chromeを使用している
– あると便利なChatGPT(本家、Bing等なんでも)

### 初学者のプログラミング勉強方法

今回はタイトルに「自走力」というキーワードを入れてあるように、
自分で調べる力を養いつつ技術を学ぶにはどうしたらよいのか、というテーマで、
**自分自身で実践してみながら**今回の記事を書いております。

勉強の仕方については人それぞれという部分もあ

元記事を表示

【Rails】ついついrubocopを通し忘れてしまう全ての方へ!commitと同時に自動でrubocopを通す設定方法!

# はじめに
お疲れさまです!
おおくまです!

以前、私は**rubocop**を現在実装中のアプリに導入しました!
(その際の記事はこちら[【Rails】rubocop導入手順の備忘録](https://qiita.com/kumaryoya/items/e2e12bb503fe56404329))
しかし!
それからというもの、~~いつも~~たま〜にrubocopを通すのを忘れてしまいます!笑
そこで!
commitすると自動でrubocopを通してくれる便利な機能があることを知りました!
今回はその設定方法の備忘録になります!

# 環境
Ruby 3.2.2
Rails 7.0.8

# 注意点
:::note warn
私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。
:::

# 実装
今回使用するツールは、[lefthook](https://github.com/evilmartians/lefthook)というツールです!
これはGitフック管理ツールの1つで、特定のGitイベント(コミット前、プッ

元記事を表示

【Rails】libffi.so.7: cannot open shared object file: 解消法

## 状況
Rails7de`image-processing`を使用して画像処理をしようとしたところ表題のエラーが発生しました。

## 解消法

以下のコマンドを実行することで解消しました。

“`terminal
bundle pristine ffi
“`

## 参考

https://github.com/ffi/ffi/issues/881

元記事を表示

【Rails】Active Storage の役割をざっくりイメージしてみる

# はじめに
はじめまして?
自分は現在プログラミングスクールでRuby on Railsを中心に勉強中の者です。
今回は学習する中で Active Storage が何をしてくれるのかを理解するのに苦労したので、初学者なりにまずは全体のイメージを掴むために整理してみました。
間違いあれば遠慮なくご指摘ください・・?

:::note
今回は全体のイメージ(流れ)をざっくり掴むのが目的なので、読んでて「補足したい・・!」と思われる部分が多くあると思いますが、そこはご了承ください・・・?
:::

# 概要

?Active Storageとは何者?
?Active Storageの導入方法
?Active Storageが提供する3つのテーブルについて(今回のメイン)
?説明しきれなかったこと
?まとめ

# ?Active Recode とは何者?

Railsガイドの説明はこう。

> Active Storageは、Amazon S3、Google Cloud Storage、Microsoft Azure Storageなどのクラウドストレージサービスへのファイルのアップロード

元記事を表示

Rails Tutorial 第11章

## 演習1
>現時点でテストスイートを実行すると green になることを確認してみましょう。

何も問題がなければGREENになるはずです

>表 11.2の名前付きルーティングに_pathではなく_urlを使っている理由を考えてみましょう。(ヒント: 私たちはこれから名前付きルーティングをメールで使います。)

_path は例えば 
user_path
→’/user’
のようにrails 内で使用されているルートであれば_pathを使用できるという事です

_urlは
‘http://www.example.com/user’
のように完全なURLを返してあげる必要があります。
それは_pathと違い外部からのアクセスとなるためです

まあ_pathは家では”花子ちゃん”でも良いけど
_urlは、外に出たら”山田花子さん”と呼びなさいって感じですかね(意味不明)

## 演習2
>本節の変更を加えた後も、テストスイートが引き続き green になることを確認してみましょう。

rails testを行い、GREENになっていたらOKです

>コンソールからUserクラスのイ

元記事を表示

【個人開発】予定決めを急かしてくれるLINEbotアプリを開発してみた

# はじめに
皆さんは友達と予定を立てる時ぎりぎりまで予定が決まらないなんてことはありませんか?
今回、このあるあるに焦点を当てたアプリを開発したのでご紹介いたします!

# 作成したアプリ
アプリ名:そろそろ決め代
サービスURL:https://sorosorokimeyo.com/
Github:https://github.com/ryosuke1212/chousei_boy
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3559534/4ae436ce-6f30-6051-d06e-d6d98ba243bd.png)

# 開発の背景
定期的に会う友達グループがあるのですが、会う日が決まっても何をするのかがなかなか決まらないということがあります。特に、会うことが目的になっていると会って何をするか決めるのは二の次になってしまいます。

回りの友人に聞いてみるとそのような経験をしている人が多く、理由として次のような点が挙げられました。

– 他の人に決めてほしいとどこかで思っている

元記事を表示

elasticsearchのrefreshに関して

## はじめに
elasticsearchには[Refresh API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html)なるものが存在する。
ドキュメントをインデックスしたら即検索できるようになると考えていた自分は、このrefreshを意識せずelasticsearchを使用していたため、elasticsearchの絡むテストを書くときにハマりかけた。今回はrefreshに関する備忘録を残しておく。

## なぜrefreshが必要なのか?
前提として、elasticsearchではドキュメントをインデックスしただけで検索可能な状態になるわけではない。追加されるドキュメントは一旦In-memory bufferという領域に溜め込まれた上で、まとめて検索対象にとして反映されるようになっている。
このIn-memory bufferに溜め込まれたドキュメントを検索対象として反映する処理がrefreshと呼ばれている。

https://www.elastic.co/g

元記事を表示

フォロー機能と同じテーブル構造で複数チェックボックスの管理方法を考えてみた

# 実現したいこと
同じテーブル同士で1つのに対して、複数の同じテーブルのレコードを紐づけてチェックボックスで登録できるようにする。
例えば、
– ユーザーの一括お気に入り機能
– 一括ブロック機能
– アイテムをひとまとめにするアイテム

などが挙げられます。

記事にした経緯として、
– 探しても実装事例が全く見つからなかった
– この発想に至るまでハマって時間を無駄にした

というものからです。

### 開発環境
– Ruby 3.0.2
– Rails 7.0.3.1

### オーソドックスな管理方法
よくある例として車とパーツの関係でテーブル設計をしてみました。
利用例としては、車に対して装着したいカスタムパーツにチェックを入れる想定です。

※ストロングパラメーターの設定は、実装例が多くあるため割愛しております。

### テーブル設計
cars
| カラム名 | 型 |
| —— | —— |
| id | integer |
| name | string |

car_parts
| カラム名 | 型 |
| —— | –

元記事を表示

【Rails】Could not open library ‘libvips.so.42’解消法

## 状況

ActiveStorageで画像処理をしたところ以下のようなエラーが発生しました。

“`terminal
LoadError: Could not open library ‘vips.so.42’: vips.so.42: cannot open shared object file: No such file or directory.
Could not open library ‘libvips.so.42’: libvips.so.42: cannot open shared object file: No such file or directory
“`

## 解決方法

`libvips42`をインストールしたところ解消しました。

“`terminal
apt-get update -qq && apt-get install -y –no-install-recommends libvips42
“`

元記事を表示

Rspecで複数モデルの個数の増減を1つのテストで検証するには

# はじめに
Rspecを追加していて、1つのテスト項目で複数のモデルの個数が増えていること・変化しないことを検証する必要がありました

その時に便利なものを見つけたのでメモで残します

## 背景
userを消したときに紐づくSNSの中間テーブルは削除、紐づくSNSアカウントは削除しないという処理がありました

##### 具体的な例
以下のようなuserテーブルを削除したときのモデルの個数を検証するテストでした

“`models/user.rb
has_many :youtube_certs, dependent: :destroy
has_many :youtube_users, through: :youtube_certs
has_many :instagram_certs, dependent: :destroy
has_many :instagram_users, through: :instagram_certs
has_many :twitter_certs, dependent: :destroy
has_many :twitter_users, throug

元記事を表示

APIとはそもそもなんぞや

# APIとはそもそも何ぞや
APIとは他社が提供するサービス内の情報や機能を扱えるようにする仕組み
リクエスト<=>レスポンス

# RESTful API
RESTful APIとは・・・4つの原則から成り立ってる

– アドレス可能性

バラバラのURIより1意のURI目指そうぜ。
(ご飯、パン、味噌汁じゃなくて、食料みたいな)

– ステートレス可能性

すべてのリクエストが完全に分離してセッション管理など行われていないこと。
(渡されたレスポンスを前提にしない)

– 接続性

情報に「別の情報へのリンク」を含めることができることを指し、リンクを含めることで別の情報に接続することが可能になる。

– 統一インターフェイス

情報の取得、作成、更新、削除といった操作一式はすべてHTTPメソッドを利用。

元記事を表示

Renderデプロイ時の! Unable to load application: ArgumentError: Missing `secret_key_base` エラーの対処法

# 概要
個人開発の際Renderでデプロイしようとしたところ
“`ruby
! Unable to load application: ArgumentError: Missing secret_key_base for ‘production’ environment, set this string with bin/rails credentials:edit`
“`
というエラーが発生し苦戦したので備忘録として残しておきます。
※初学者で知識に乏しいため誤った記述があればコメントいただけると幸いです。
## secret_key_baseとは
Railsのアプリケーションでは、“secret_key_base“というシークレットキーが必要です。これは、暗号化やセッションの検証など、さまざまなセキュリティ関連のタスクで使用されます。production環境で、このキーが設定されていないことが原因で今回のエラーが発生しました。
## 対処方法
対処方法は簡単です。
ローカル環境で、以下のコマンドを実行してRailsのクレデンシャルを編集します。
“`ruby:bash

元記事を表示

文系大学生がスタートアップに新卒入社して半年経ったので振り返る

こんにちは!ジャックです!
外国語大学の23卒として今年の4月に都内のスタートアップに入社し、半年ほど経過したのでどんな業務を行なってきたか振り返ろうと思います。

## 前提
新卒として入社したとはいっても内定者インターンで一年弱働いておりました。
エンジニアとして全くのノースキルで入社したというわけではないのでご承知おきください。入社時のスペックを以下に書いておきます。

* 内定者インターンとしてRailsでAPI開発を担当(1年弱)
* Web制作会社でインターン経験あり(1年強)
* 0→1のMVPまでの新規開発
* Reactで個人開発の経験がはあるが、実務経験はない
* API, DB設計は数回行ったことがある
* インフラはさっぱりわからない
* 実務で使用したことのある技術: Ruby, Rails, Rspec, HTML, CSS, WordPress, jQuery, Git, GitHub

バックエンドの開発はたまに先輩にサポートいただきながらですが、ある程度一人称で開発ができる程度のレベルでした。

API以外にもJobやメーラーの作成などバックエンドのタ

元記事を表示

OTHERカテゴリの最新記事