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

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

deviseの導入

https://github.com/heartcombo/devise
公式サイトより、Getting startedを参考にしながらdeviseを導入してみました。

gemファイルに追記、bundle installを実行
“`
gem ‘devise’
“`
次に、以下のコードを実行
“`
rails generate devise:install
“`

以下のファイルが作成される
“`
create config/initializers/devise.rb
create config/locales/devise.en.yml
“`

ファイルを作成すると、ターミナルに以下のようなメッセージが表示される。
“`

===============================================================================

Some setup you must do manually if you haven’t yet:

1. Ensure you have defined default ur

元記事を表示

An error occurred while installing pg (1.5.3), and Bundler cannot continue.

# 経緯
bundle installを行ったところ、エラーが発生しました。
“`
bundle install
Fetching gem metadata from https://rubygems.org/……….
Resolving dependencies…..
Using rake 13.0.6
Using racc 1.7.1
Using rack 2.2.7
(省略)
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
(省略)

Gem files will remain installed in

An error occurred while installing pg (1.5.3), and Bundler cannot continue.

In Gemfile:
pg
“`

表示の通りpgをインストールしましたが、上手くいきませんでした。
“`
$ gem install pg
“`

# 結果
下記を行ったところ、解決しました。
“`

元記事を表示

現場で使えるRuby on Rails5速習実践ガイドを読んで感じたこと

Railsの学習に際し、インプット教材にRuby on Rails5速習ガイドを選び今回読み終えたので全体の感想をまとめていきます。

# 初の実践には持ってこいの辞書

一通り読み終えて感じたのは、これは参考書であると同時に辞書引きができるようになっているものであると感じました。

どうしてそう思ったのかは以下の点を感じたからです。

– 開発の全体像を掴むことができる
– アプリケーションの作成から機能追加や削除を一通り学べる
– Rspecでのテスト技法が記載されている
– 概念への理解
– JSへの理解度の追求
– チーム開発の流れ
– バージョンアップへの対応の姿勢

Railsアプリケーションを作るのは簡単ではありませんし、今後ECサイトをHCの課題で制作していくわけですが、根本的な部分の理解度がないとそもそもアプリケーションを作れないでしょう。

どういう手段を用いて開発へ取り組むべきなのか、

またどういったステップで次へ行っているのかを明確にする時、

本書は開発経験がヒヨコな私のような駆け出しには必要な書籍であると感じました。

わからない

元記事を表示

SQLite3::BusyException: database is locked を解決した方法

# 背景
railsチュートリアルをやってる途中で `rails s` でサーバーを起動し、seedファイルの最初のユーザーでログインしようとしたら以下のエラーが発生しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515182/e48be9fd-8722-9dfc-dd92-39b69d6e4a87.png)

# 原因
`rails s` でサーバーを起動する前に `rails c –sandbox` でコンソールを開き、
“`
> user = User.first
“`
と、最初のユーザーに対する操作を行っていたためでした。
sandboxオプションをつけると、操作したレコードにロックがかかってしまうみたいです。
今回はsandboxオプションをつけて開いた、コンソールを閉じずに、サーバーを起動させたため、
最初のユーザーのレコードにロックがかかり、ログイン時にレコードの操作ができなかったのだと思われます。

# 解決方法
`exit`または`quit`でrail

元記事を表示

Railsデプロイ時のエラー:error Command “webpack” not found.

ElasticBeanstalkでRailsをデプロイ時に遭遇したエラーについて記載します。
誰かのお役に立てれば幸いです。

## 環境
– Elastic Beanstalk Ruby 3.6.7@Ruby 3.0 running on 64bit Amazon Linux 2
– Rails 7.0.4.3
– bundler_version: 2.2.33
– rake_version: 13.0.6

## エラー内容

>[INFO] Running command /bin/su webapp -c bundle exec /opt/elasticbeanstalk/config/private/checkforraketask.rb assets:precompile
[INFO] Found assets:precompile task in Rakefile
[INFO] Running command /bin/su webapp -c bundle exec rake assets:precompile
[INFO] Compiling…
Compilati

元記事を表示

rails view <% %> <%= %> 書き方

<% %>の場合は何も表示されないので、変数の定義などに用います。
一方<%= %>の場合では、Rubyコードの中身が表示されるため、変数の値などを実際にページ内に表示したい場合に用います。

### 例
“`
<% post1 = "今日からRailsの勉強するよー!" %>
<% post2 = "投稿一覧ページ作成中!" %>

<%= post1 %>
//今日からRailsの勉強するよー!を表示
<%= post2 %>
//投稿一覧ページ作成中!を表示

“`

元記事を表示

rails command 流れ 随時更新

## railsアプリケーションの準備 例
“`
rails new tweet_app
“`
## サーバー立ち上げ 
“`
rails server
“`
## トップページ自動生成
新しいページを作るコマンド
“`
rails generate controller home top
“`
– 「rails generate controller home top」を実行すると、
viewsフォルダの中に「homeフォルダ」と「top.html.erb」という
ファイルが作成されます。
– localhost:3000/home/top 検索
– Home#top
Find me in app/views/home/top.html.erb
と表示される
– 「home_controller.rb」というコントローラのファイルが作成され、ファイルの中に「topメソッド」が追加されます。
コントローラ内のメソッドを「アクション」と呼びます。
“`
class HomeController < ApplicationController def top

元記事を表示

共同開発 ルーティング nemespace

自分のメモ用程度に作成してます。
### :shamrock:namespaseを使用して顧客と管理者のルーティング作成

:star:**管理者用**
“`routes.rb
devise_for :admin, skip: [:registrations, :passwords], controllers: {
sessions: “admin/sessions”
}
namespace :admin do
get ‘/’ => ‘homes#top’
resources :items, except: [:destroy]
resources :genres, only: [:index, :create, :edit, :update]
resources :customers, only: [:index, :show, :edit, :update]
resources :orders, only: [:show, :update]

元記事を表示

Boolean型カラムをpresence: trueで設定したらfalseで保存出来なかった

# 前提条件

Userテーブルにnullを許容しないBoolean型のhoge_flagというカラムがあるとする。

“`ruby
create_table :users do |t|
t.boolean :hoge_flag, default: true, null: false
end
“`

migration後にuser.rbにvalidatesを追加

“` ruby
validates :hoge_flag, presence: true
“`

# データ保存時にエラーが出る・・・

上記を踏まえて、hoge_flagをfalseにしてみた!

“`
user = User.first
user.hoge_flag = false
user.save!
“`

結果
“`
Translation missing: ja.activerecord.errors.messages.record_invalid (ActiveRecord::RecordInvalid)
“`

あらら・・・

もう少し確認してみると

“`
user.valid?
=>

元記事を表示

Railsで’application.css’以外のCSSファイルを作成する手順

## はじめに
#### 実装したこと
レスポンシブ対応のために新しいCSSファイルを作成と適用する手順を記事にします。

#### 動作環境
Ruby 3.1.2
Rails 6.1.7.3

## 手順
1\. まず app/assets/stylesheetsディレクトリ内に、’responsive.css’という名前の新しいCSSファイルを作成します。(ファイル名はなんでも問題ないです)

2\. responsive.cssファイルを開き、メディアクエリなどのレスポンシブデザインに必要なスタイルルールを記述します。例えば、以下のようなコードを追加します。
~~~ responsive.css
/* 例: スマートフォンサイズの場合に適用されるスタイル */
@media screen and (max-width: 520px) {
/* スタイルの定義 */
}

/* 例: タブレットサイズの場合に適用されるスタイル */
@media screen and (min-width: 521px) and (max-width: 960px) {
/* スタイルの定

元記事を表示

MVCを擬人化してみた

# ルーティング、コントローラー、モデル、マイグレーション、ビューの擬人化
## | 思考整理 |
新しいアプリケーションの構造を考える際、どことどこにコントローラーが必要なんだ?
必要なモデルは?と混乱したため、擬人化してみた。

## | 場面設定 | 市役所(アプリケーション)
#### ルーティング:総合受付
役割:リクエストに対応する最適な窓口を案内する
説明:ルーティングは、今日はいかがなさいましたか?とそれぞれのリクエストに対応する最適なコントローラーの窓口(アクション)を案内します。総合受付のような役割を果たしています。
総合受付なので、市役所(アプリケーション)には1つだけで十分です。
#### コントローラー:窓口受付
役割:リクエストに対応する最適な処理を案内する
説明:コントローラーは、受け取ったリクエストに基づいて適切な処理を行います。今日はいかがなさいましたか?とリクエストに応じた書類(ビュー)を渡します。
new/create:住民登録届 edit/update:住所変更届 destroy:転居届 show:住民票の写し発行 など
内容ごとにやることがこと

元記事を表示

【Rails API】エラーハンドリング処理をJSON形式で返す

Rails APIについて学習しています。
今回は、Railsアプリケーションを使い、をAPIによる例外処理(エラーハンドリング)を実装していきます。

# 今回やること

– apiのエラーハンドリング処理を実装する。
– 404, 500のレスポンスを返す処理を実装する。
– apiのエラーをjson形式で返す処理を実装する。

# base_controller.rbに追記する

“`ruby:app/controllers/api/v1/base_controller.rb
module Api
module V1
class BaseController < ApplicationController include Api::ExceptionHandler end end end ``` # このコードの解説 - このコードでは、Ruby on Railsのアプリケーションにおけるコントローラの基底クラス`BaseController`を定義している。 - `module Api` `module V1`の部分で、「Api」

元記事を表示

ngrokを用いたローカル開発環境の公開方法

## はじめに
Rails 7 で `LINE Messaging API`を取り入れたオリジナルプロダクト(ポートフォリオ)の作成中、メッセージの送信テストを行うために公開されたURLが必要になりました。
[ngrok](https://ngrok.com) で簡単に実現できたのでまとめました。

### 開発環境
– OS:macOS Ventura 13.2.1
– Ruby:3.2.2
– Rails:7.0.6
– Homebrew 4.0.28

## ngrokについて

### ngrokとは
読み方:エン・グロック
開発中のローカルサーバーをインターネット上に一時的に公開するためのツール。**無料版**あり!
ローカルホストで動作しているWebアプリケーションやAPIなどを、インターネット上からアクセス可能な状態にすることができます。

もう少し具体的に言うと、`ngrok`は安全なトンネルを作成し、そのトンネルを通じて公開URL(ngrokが提供)からローカルホストへの接続を可能にします。
  
トンネル:ネットワーク間を接続する安全な通り道のこと。ここでいう「ト

元記事を表示

Railsアプリケーションの環境変数を確認する方法

## 手順
### 1. rails console を起動
“`shell_session
$ rails console
“`

### 2. ENV オブジェクトを確認
“`irb
# キーを指定して表示
irb(main):005:0> ENV[‘RAILS_ENV’]
=> “development”
“`

“`irb
# 全て表示
irb(main):001:0> ENV
=>
{“BUNDLER_ORIG_BUNDLER_VERSION”=>”BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL”,
“BUNDLER_ORIG_BUNDLE_BIN_PATH”=>”BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL”,
“BUNDLER_ORIG_BUNDLE_GEMFILE”=>”BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL”,
“BUNDLER_ORIG_GEM_HOME”=>”BUNDLER_ENVIRONMENT

元記事を表示

【rails】ストロングパラメータでmergeメソッドを使う

## RealWorldでエンドポイントを作る
RealWorld という OSS のプロジェクトがある。
RealWorld は実世界と同じ機能を持つプラットフォームを作ることで、学習したいフレームワークの技術を習得することを目的としたプロジェクトのこと。

[RealWorld](https://realworld-docs.netlify.app/docs/specs/backend-specs/api-response-format#single-article )

詳細はリンク先をご覧いただきたいが、
エンドポイントの作成で、次のようなJSONデータを指定URLにPOSTした場合、

`POST /api/articles`

“`
{
“article”: {
“title”: “How to train your dragon”,
“description”: “Ever wonder how?”,
“body”: “You have to believe”
}
}
“`
次のようなJSONデータを返すコードを作成するよう指示されてい

元記事を表示

Rails, Sidekiq, RedisをDockerでセットアップし、指定した時間にジョブを実行する

## はじめに
この記事では、Dockerを使用してRails、Sidekiq、Redisをセットアップし、指定した時間にジョブを実行する方法を紹介する。今回は、ユーザーにリマインダーメールを送信する機能を例とする。

## Sidekiqとは
SidekiqはRubyのバックグラウンドジョブ処理ライブラリで、非同期処理を行うために使用される。Redisをバックエンドとして作成したジョブを管理する。

#### 非同期処理とは
プログラムが複数のタスクを並行して実行すること。重い処理や時間のかかる処理をバックグラウンドで行うことでパフォーマンスを向上させることができる。
メールの送信やデータのバッチ処理など、時間のかかるタスクを非同期に行うことが一般的。

## DockerとDocker Composeの設定
まず、DockerとDocker Composeを使用して、Rails、MySQL、Redis、Sidekiqの各サービスをセットアップをする。以下のDockerfileとdocker-compose.ymlをプロジェクトのルートディレクトリに作成する。

“`Dockerf

元記事を表示

React、RailsのActive StorageでAWS S3を使おう!

## Actvie Storageとは?

Rails5.2から追加されたRailsのストレージ機能です。AWS S3、Google Cloud Storageなどのクラウドストレージサービスにアップロードするのに便利らしいです。

Railsで画像などをアップロードする機能としてCarrier Waveも候補になるかと思います。

:::note info
**viewをReactやVueで書く場合はCarrier Waveを使った方がいいかも?**
[ActiveStorage vs CarrierWave – Qiita](https://qiita.com/w5966qzh/items/510d4c2a3829524b2e64)
:::

しかし、普段Active Storageを使っていたり、SPAでも使用したい人は多いと思いますので私の勉強も含めて、AWS S3のセットアップから行っていきたいと思います。

そこまでrailsやAWSに詳しくないので動いたコードを共有します。セキュリティやコードに改善点があればご指摘お願いします。

## 1.AWSのセットアップ

1.

元記事を表示

Rails7(esbuild + Tailwind + MySQL)をDocker Composeで環境構築する

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

Rails7の環境構築でesbuild,Tailwind, MySQLでの構成の際に、Docker Composeで環境構築する際にハマったところなどをまとめておきました。

# 前提条件
– M1 Mac
– Ruby v3.2(RailsのDockerコンテナの中でのバージョン)
– Rails v7.0.5(RailsのDockerコンテナの中でのバージョン)
– Node v18.16.1(RailsのDockerコンテナの中でのバージョン)
– MySQL v8.0(MySQLコンテナの中でのバージョン)

# Docker Composeを実行する前に作成・変更が必要なファイル

## entrypoint.sh
以下の記述で作成します。

“`sh:entrypoint.sh
#!/bin/bash
set -e

# Re

元記事を表示

共同開発 model作成 カラム追加

モデルの作成は 先頭大文字の単数形で作成します。
### :shamrock:モデルの作成とカラムの追加

“`
【顧客用】
$ rails g devise Customer
【管理者用】
$ rails g devise Admin
“`
“`
rails db:migrate
“`
Deviseというユーザー認証システム用のCustomerモデルが生成されます。モデルファイル、ビューファイル、データベースマイグレーションなど、Deviseを使うために必要なファイルが自動的に作成されます。

:star: cusutomers (顧客)ファイル
“`diff_ruby
create_table :customers do |t|
t.string :last_name, null: false
t.string :first_name, null: false
t.string :kana_last_name, null: false
t.string :kana_first_name, null: false

元記事を表示

Next.jsとRuby on Railsを使ってアプリを作成してみた【フルスタックブログ】

## 1. プロジェクトを作成する(Ruby on Rails)
“`
mkdir <プロジェクト名>
cd <プロジェクト名>
rails new <プロジェクト名> –api -T
cd <プロジェクト名>
rails s
“`
※ Next.jsのローカルホスと競合するので、rails側のサーバーを3001にする
“`
rails s -p 30001
“`

## 2. modelを作成する

“`
//モデル作成コマンド
rails generate model [モデル名] [属性名:データ型 属性名:データ型 …][オプション]

//データベースへへの転送
rails db:migrate
“`

## 3. controllerを作成する

① controllerを作成する
“`
rails generate controller コントローラ名
“`
② config/routes.rbを編集する

“`config/routes.rb
Rails.application.routes.draw do
namespace :api do

元記事を表示

OTHERカテゴリの最新記事