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

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

Rails I18nを便利に使おう

アプリケーションを色々な国に展開する場合やメッセージを日本語化する際にI18nを使用すると思います。

下記のようなパターンでは`user_name`をtranslateに渡すと、`”太郎”`が返ってきます。

“`config/locales/ja.yml
ja:
user_name: “太郎”
“`

“`ruby:
> I18n.t(:user_name)
=> “太郎”
“`

しかし、`user`が、`太郎`だけであればこれでも良いのですが、複数いる場合がたいていのパターンだと思います。
これを少し拡張させて、どのuserでも対応できるようにしていきます。

“`config/locales/ja.yml
ja:
user_name: “%{name}”
“`

“`ruby:
> I18n.t(:user_name, name: “太郎”)
=> “太郎”
“`

“`ruby:
> I18n.t(:user_name, name: “次郎”)
=> “次郎”
“`

上記のように変更すると、引数に名前を渡せば、どんな名前でも表示できるように

元記事を表示

PG::ConnectionBad の解決→ sudo だった!かというお話

Railsの勉強中の身で、db、PostgreSQLがどうだという事はまだまだ理解が浅いプログラミング初心者です。
練習中に発生したトラブルで3日間もがき苦しみましたので、備忘録として初Qiita投稿です。誰かのためになると嬉しいです!

#発生状況
作業中、何かのはずみでPCが突然ダウン、自動的に再起動。その後突然 PG::ConnectionBad のエラー表示が出るようになった。
>PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

![スクリーンショット 2021-02-23 16.57.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423293/40f550a0-0867-b741-fc9e-

元記事を表示

タグ機能

#参考にしたサイト

https://qiita.com/tobita0000/items/daaf015fb98fb918b6b8

#新しく覚えたこと

“`
add_index(テーブル名,カラム名,オプション) #テーブルにカラムを追加する
unipue: true #一意性制限
“`

https://railsdoc.com/page/add_index

“`
モデル.pluck(カラム名) #指定したカラムのレコードの配列を取得
モデル.find_or_create_by(条件) #指定した条件が存在すれば取得し、なければ作成
“`

https://railsdoc.com/page/model_pluck

https://railsdoc.com/page/find_or_create_by

タグ付け機能のビューにはjQeryのTag-itと使う

https://qiita.com/tyamagu2/items/75eeaa8ef208385aa341

#アソシエーション

[![Image from Gyazo](https://i.gyazo.c

元記事を表示

Ruby 3.x, Rails 6.x, MySQL 8.x のプロジェクトを CircleCI に設定し RSpec と Rubocop を実施する。

# 概要

前回の記事 [Ruby 3.x, Rails 6.x, MySQL 8.x の Docker 環境構築。](https://qiita.com/goya-hideaki/items/2597b39b966cb37ec9e1) を引き継いで、プロジェクトを CircleCI に設定し、GitHub リポジトリへの push 時に RSpec と Rubocop を自動実施するように設定します。

基本的に以下の CircleCI 公式ドキュメントを参考にしていますので、初期設定の方法などはそちらをご確認ください。
大きく違うのは、Ruby on Rails で MySQL に対応した点です。

– [入門ガイド](https://circleci.com/docs/ja/2.0/getting-started/)
– [言語ガイド: Ruby](https://circleci.com/docs/ja/2.0/language-ruby/)
– [データベースの構成例](https://circleci.com/docs/ja/2.0/postgres-config/)

#

元記事を表示

Rspec 結合テストコードにてセレクトボックスがある場合の記述方法

#テックキャンプではカリキュラム外であったために自分で調査
※セレクトボックスの結合テストのみの解説なので、それ以外は省略

# 実行コマンド
# bundle exec rspec spec/system/users_spec.rb
##アプリ名/spec/system/users_spec.rb
“`ruby

require ‘rails_helper’

RSpec.describe ‘ユーザー新規登録’, type: :system do
before do
@user = FactoryBot.build(:user)
end

context ‘ユーザー新規登録ができるとき’ do
it ‘正しい情報を入力すればユーザー新規登録ができてトップページに移動する’ do
fill_in ‘nickname’, with: @user.nickname
#⇐この行———————————————————-
select ‘男性’, from: ‘us

元記事を表示

Railsポートフォリオ #3 herokuにデプロイ

こんにちは:smiley:
今回はherokuへのデプロイを行いました。[(前回記事(#3 DB設計))](https://qiita.com/yanoo/items/ce16d20c1dd046cf4c90)

私は、前職(ホテルの料飲部)における、コミュニケーションの課題を解決するアプリを作っているのですが、今回は、

## herokuへのデプロイを行いました
元々はAWSでデプロイするつもりだったのですが(やったことあったので)、難しすぎて、一旦諦め、herokuで手を打つことにしました。。。

## 感じたこと
+ AWSの勉強不足
Qiita記事等を参考にしながら行ったのですが、知識不足でやってるので、どこで間違ったのかわからん、、、、、
もう少し勉強してから出直そうと思いました。

[こちらの記事(【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法【その1〜ネットワーク,RDS環境設定編〜】)](https://qiita.com/yanoo/items/ce16d20c1dd046cf4c90)とかを参考に行ったのですが

元記事を表示

【Rails】JSが読み込まれない時の対処法

railsアプリにて、JSの書き方は間違っていないはずなんだけど動かない!っていうことがありました。

# 原因
DOMが読み込まれる前に、JSが実行されて探しているDOMが見つからずにエラーとなっていた。

# 方法
実行したい処理を間に書いて下さい。
変数にDOMを指定する処理も全てこの中に書くようにして下さい。
そうすると、DOMが全て読み込まれてから実行されます。

“`javascript
document.addEventListener( ‘DOMContentLoaded’, function(){
// 実行したい処理
}, false );
“`

元記事を表示

[Ruby on Rails] データベースの削除の仕方

色々あってDBを作り直すことになったので、その備忘録を書いていきます。
とても繊細なdatabase.ymlなどを修正する際にも使えるので覚えておこうと思います。
ちなみに**シークエルプロ**と言うデータベースを視覚化できるアプリを使っています。

 

##データベースを削除する方法
database.ymlに記載されている、エンコードの設定やデータベース名を誤った状態でデータベースを作成してしまった場合は、一度データベースを削除してから作り直す必要があります。

手順は以下のとおりです。
 
  

**データベースを削除する**
database.ymlを正しい形に修正する
データベースを再度作成する
 

##①データベースを削除する
データベースを削除するためには**rails db:drop**のコマンドを実行します。

“`
% cd ~/projects/データベースを作り直したいアプリケーションのディレクトリ
“`

ディレクトリ移動後に**rails db:drop**
このコマンドを実行することで、該当するアプリケーションのデータベースを削除すること

元記事を表示

Ruby/Railsの環境構築

# これからRuby/Railsの環境構築を行っていきます。

まずは用語から説明していきます。
ご存知の方は飛ばしてもらって構いません。

# シェルとは?
ターミナルで実行されたコマンドを読み取ってくれるOSの窓口役です
ターミナルから入力されたコマンドを読み取って、OSに対して指示を渡し、結果をターミナルに返して表示や実行などの動作をさせます。
このシェルがターミナルとOSの間に挟まって、コマンドによる命令と実行結果の橋渡しをしています。

シェルにも種類があり、プロンプトやコマンド実行後の出力で挙動が若干異なります。

## zsh
zshはシェルの1つでターミナルで

“`
% echo $SHELL
“`

とコマンドを実行すると現在使用しているシェルはzshであることがわかります。
.zshrcに設定を記述して、PATHにアプリケーションの場所を示すことでコマンドを使用可能にします。

## PATH
PATHとは、「環境変数」と呼ばれるOS用の変数のことです。PATHには、複数の絶対パスの情報が保存されており
コマンドが入力されたときに、シェルはPATHに記述された

元記事を表示

[Rails] CarrierWaveで画像のプレビュー機能の実装方法

#前提
RailsでCarrierWaveを使って画像投稿機能が実装されていること。
[CarrierWaveの実装方法](https://qiita.com/momo1010/items/2d360aa295d91ba99476)

#画像ファイルにidを追加する
Javascriptで処理するときに使うので、画像ファイルにidを追加します。

“`
<%= f.label "ユーザー画像" %>
<%= f.file_field :image, id: :user_img %>
“`

#画像を表示させる

画像を表示させるコードを追記します。こちらも、Javascriptで処理するときに使うので、画像ファイルにidをつけておきましょう。
また、画像を選択している時としていない時の表示をif文で分けます。

“`
<% if @user.image.present? %>
<%= image_tag @user.image, id: :img_prev %>
<% else %>
<%= image_tag "user_default.png", id: :img_

元記事を表示

【 Ruby on Rails 6.0 】 AWS + Nginx + Unicornでデプロイ⑧

# 始めに
Railsアプリを本番環境にデプロイさせる工程は今回の内容で最後になります。
今まではElastic IPアドレスを使ってブラウザに入力していましたが、ドメインを取得してよりわかりやすいURLに変えていきます。

`ドメイン`は有料ですが,こだわらなければ初年度は数百円程度で取得できます。
この記事では**「お名前.com」**というサービスを利用してドメインを取得します。

# 用意するもの

* **クレジットカード**
* **AWSのアカウント**
* **AWSでデプロイ済みのEC2インスタンス**

# 目次

|目次|内容|
|:–:|:–:|
|セクション1|[EC2インスタンス作成](https://qiita.com/anago1030/items/854252bc9b728fe90beb)|
|セクション2|[Linuxサーバー構築](https://qiita.com/anago1030/items/07f7026c0f4c42a63440)|
|セクション3|[データベース設定](https://qiita.com/anago1030/item

元記事を表示

銀行振込を忘れないためのwebアプリ

#はじめに
今はもう使われていない振込券をベースに作りました。
![localhost_3000_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784464/bfb40f13-7514-dade-589b-320050a11d34.png)
#なぜ作ったか
– 実家の会社で振込忘れや伝達ミスなどが多発していた
– 督促状が届き面倒な手続きに時間を取られることが多かった
– そんな状態を改善・解決できるのではないかと思った

#開発環境
– 言語
– ruby
– フレームワーク
– rails
– データベース
– mysql
– その他
– https://bank.teraren.com/
– 銀行名、支店名を入力する際に上記のAPIを利用させていただきました

#基本機能
– 振込チケットの管理
未払いの振込チケットを振込期日順に閲覧することができます。
また、見た目で分かりやすいように、いわゆるメガバンクはロゴの色に合わせてチケットの色を変えていま

元記事を表示

Railsで大量のデータを更新する際はin_batchesを使おう

Ruby on Railsのプロジェクトで、大量のデータを更新しようとしたらメモリ不足でエラーとなったため、解決方法をメモ。

こんな感じで、データを更新しようとしていました。

“`ruby
Hoge.all.map do |hoge|
hoge.update(fuga: hoge.foo)
end
“`

しかしデータが数十万件あり、メモリ不足で余裕で落ちました。

そんなときは [in_batches](https://railsdoc.com/page/in_batches)を使いましょう。
デフォルトでは1000件ずつ読み込んで処理してくれます。

“`ruby
Hoge.in_batches do |hoges|
hoges.map do |hoge|
hoge.update(fuga: hoge.foo)
end
end
“`

無事解決!
どれくらいの量のデータが扱われるかは、常に意識しないといけないですね。

元記事を表示

エラーページを表示させる

###HTTPレスポンスのステータスコードとは

クライアントからのリクエストの結果を返す3桁の整数値のことです。
特定のHTTPリクエストが正常に完了したどうかを示します。
通常はリクエストが成功するとステータスコード200を返します。

###ステータスコードの種類の例

403
アクセス権限がないことを示す。

404
リクエスト先が見つからない、またはページが存在していないためにアクセスができないことを示す。「指定されたページは存在しません」などのエラーページが表示されるケース。

500
webサーバーで何かしらのエラーが発生したことを示す。

503
リクエスト先が一時的にアクセス集中やメンテナンスなどで使用できないことを示す。

一時的に、ソースを変更したら再起動しなくてもリロードされるように設定します。
config/environments/production.rb

“`
config.cache_classes = false
“`

アクションにraiseメソッドを追記してアクセスをすると、強制的に例外の画面が表示されます。
画像はproducti

元記事を表示

Railsの便利メソッド pluckについて調べてみた

# はじめに
Railsでアプリケーションを作成時に、モデルから特定のカラムをリストで抜いてきたい場面が時々あり、なにかいいメソッドはないかと探していたところ、このメソッドにたどり着いた。

`ids`メソッドなどidカラムのリストを取得するメソッドを知っていたが他のカラムは一々、`all`で全取得して、`map`や`select`等を駆使してループ処理を行い、対象のカラムのリストを取得していたので、このメソッドを使用することでかなり簡略化につながる

## pluckメソッドについて
上記でも簡単に説明したように、対象のカラムのみを指定してリストで取得する事ができる

[Railsガイド](https://railsguides.jp/active_record_querying.html#pluck)では以下のように説明されている。

> pluckは、1つのモデルで使用されているテーブルからカラム (1つでも複数でも可) を取得するクエリを送信するのに使用できます。引数としてカラム名のリストを与えると、指定したカラムの値の配列を、対応するデータ型で返します。

## 実際の使

元記事を表示

【Rails】deviseで実装したパスワードリセット機能を使って本番環境でメール送信してみた

# 環境
macOS: Big Sur Ver11.2.1
Rails: 6.1.1
Ruby: 2.6.5
本番環境: Heroku

# 記事の目的
Herokuにデプロイしたアプリケーションでパスワードリセットが正しく動作すること。
パスワードリセット機能はdeviseで導入済み、開発環境で動作確認済みです。
詳しくは、[こちらの記事をどうぞ!](https://qiita.com/4ma9147/items/fc3f9fcf36572596fdf1)

# 実装
今回はアプリケーションがHerokuにデプロイされているからHerokuのアドオンであるMailgunを利用して本番環境でのメール送信を試みます。

### 手順①:アプリの環境設定
[Mailgunの公式ドキュメント](https://devcenter.heroku.com/articles/mailgun)を参考に、以下のようにファイルを編集。
どちらかというと[Railsチュートリアルの11章](https://railstutorial.jp/chapters/account_activation?versi

元記事を表示

Rails+Unicorn+NginxにCapistrano導入

# はじめに
EC2にRails+Unicorn+Nginxの環境を構築した状態で自動デプロイツール`Capistrano`を導入します。

# Capistranoを利用するためのGemをインストール
ローカル環境のGemfileを編集。

“`rb:Gemfile
group :development, :test do
gem ‘capistrano’
gem ‘capistrano-rbenv’
gem ‘capistrano-bundler’
gem ‘capistrano-rails’
gem ‘capistrano3-unicorn’
end
“`
Gemfileを読み込み。
ローカルのターミナルで以下のコマンド。

“`
$ bundle install
$ bundle exec cap install
“`
いくつかファイルが生成されます。
・`Capfile`利用するライブラリを指定するファイル
・`deploy.rb、production.rb、staging.rb`デプロイについての設定を書くファイル

# Capfileを編集

元記事を表示

【超かんたん】Active Hashで投稿ページにプルダウンメニューを作成しよう!

Active Hashを利用して投稿ページにプルダウンメニューを作成します。
超初心者向けにレシピ投稿アプリを例に作成していきます。
#####完成イメージ
![7c1aa72d8269b4942f50794dc40e4b85.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1140333/a691cff2-2720-8a99-1046-0b2e96b42d5b.gif)

## Active Hashとは
Active Hashとは、「基本的に変更されないデータ」をモデルファイルに直接記述し取り扱うことができるGem。[公式ドキュメント](https://github.com/zilkey/active_hash)

##Active Hashの導入
####Active Hashのインストール
Gemfileに下記を記述しbundle installする。

“`:Gemfile
gem ‘active_hash’
“`

####Recipeモデルの作成
今回はレシピ投稿アプリなのでRecip

元記事を表示

初めてのRuby On Rails その2(DB編)

##テーブル作成手順

### 1.データベースに変更を指示するファイルを作成

マイグレーションファイルと呼ばれるデータベースに変更を指示するファイルを作成する

今回はpostsテーブルを作成する例を見てみる
この場合、`Post`と単数形にする

“`terminal:ターミナル
rails g model Post content:text
“`
Post:モデル名
content:カラム名
text:データ型

以下の2ファイルが作成される

##### ツリー構造

 ├ app/
 │ └ models/
 │    └ post.rb
 ├ db/
   └ migrate/
      └ 20210226224717_create_posts.rb

“`ruby:post.rb

class Post < ApplicationRecord end ``` ```ruby:20210226224717_create_posts.rb class CreatePosts < ActiveRecord::Migration[5.0] def chan

元記事を表示

EC2サーバーにRails + Nginx

# はじめに

すでにEC2へ`Rails`を導入し、アプリをデプロイした状態(アプリケーションサーバー構築済)から`Nginx`を導入します。
以下にその手順を記載してます。
[EC2にRails + MySQL環境構築](https://qiita.com/yamato1491038/items/ec343a1bce41d3252473)

# Nginx導入
Nginx1というバージョンを導入。
EC2サーバー上で以下のコマンド。

“`
$ sudo amazon-linux-extras install nginx1
“`

# Nginxの設定ファイルを編集

“`
$ sudo vim /etc/nginx/conf.d/rails.conf
“`

以下のように編集します。
`<アプリケーション名>`、``は書き換えてください。

“`:rails.conf
upstream app_server {
# Unicornと連携させるための設定。アプリケーション名を自身のアプリ名に書き換えることに注意。
server unix:

元記事を表示

OTHERカテゴリの最新記事