Rails関連のことを調べてみた2020年11月08日

Rails関連のことを調べてみた2020年11月08日

便利❣️Rails開発がスムーズになる機能!

現在私はdocker環境下でRuby on Railsで自社サービスの開発を行っており、
dockerを使用した方ならご理解頂けると思うのですが、、、

_人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人_
> ?docker関連のコマンド反応がめっっっっっっっっっっっちゃ遅い!!!? <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

特に以下のケースを確認する時に時間がかかるとイライラします。。

– コントローラに渡すパラメーターの中身を確認したい。

– 呼び出しているActive Recordの種類。

– render元のファイル。

とまあいろいろあるのですが、とにかく以下から始まるコードはとにかく遅いです。
(この前migrationファイルを作成するのに約10分かかりました。。)

“`
$ docker-compose run ~
“`

元記事を表示

【Rails/AWS】RDSのMySQLに繋がらないエラーの考えられる原因(database.yml)

# はじめに
本記事は、RailsアプリをAWSにデプロイした際に発生する可能性のある
MySQLに繋がらないという事象に対する原因例を紹介します。
原因はかなり初歩的な原因でしたが、筆者はこのエラー原因が特定できずとても苦労したため、
今後同じエラーに遭遇した方の助けになれば幸いです。

# 開発環境
+ Ruby 2.5.1
+ Rails 5.2.4.4
+ AWS(EC2, RDS)
+ MySQL(RDS) 5.6.48

# 前提条件
+ RailsアプリをEC2のWebサーバー上にgitクローン済み。
+ 基本的な設定は完了済みで、rake db:create RAILS_ENV=productionのコマンドを実行する手前の状態。
+ RDSのDBインスタンスを作成済み。
+ Railsのdatabase.ymlは下記の内容です。

“`database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREA

元記事を表示

【RSpec】Shoulda-Matchers で独自に設定したエラーメッセージをテストする方法

shoulda-matchersを使ってカスタムメッセージのバリデーションテストをするとき、書き方がわからなくて少し詰まったのでここに共有させて頂きます。

# shoulda-matchersとは何ぞや?
shoulda-matchersというのは、通常のRSpecで書くと長くなるテストが簡潔にかけるようになるgemです。

例えば以下のようなバリデーションを持ったモデルがあったとします。

“`ruby:user.rb
class User < ApplicationRecord validates :nickname, presence: true, length: { maximum: 30 } end ``` このテストが以下のように一行でかけます。 ```ruby:spec/models/user_spec.rb it { is_expected.to validate_length_of(:nickname).is_at_most(30) } ``` なかなかに便利ですね。 # 独自に設定したエラーメッセージをテストしたい場合 例えば以下のような、独自のエ

元記事を表示

ruby小文字を大文字にする

#Rubyで小文字を大文字にする
半角アルファベットの小文字で構成された長さ t の文字列 y が与えられます。

文字列 y を大文字に変換して出力して下さい。
#入力される値
入力は以下のフォーマットで与えられます。

y
#期待する出力
y を大文字に変換した文字列を出力してください。
#入力例1
qiita
#出力例1
QIITA
#私の答え
“`java:
y = gets
puts y.upcase
“`
#今回のポイント
###1行目のgetsで文字列を取得しています
###2行目で取得した文字列yをupcaseメソッドで出力しています
###upcaseメソッドは小文字→大文字にするメソッドです。ちなみにその逆はdowncaseメソッドです。
“`java:
y = “AAAAA”
puts y.downcase
“`
“`java:出力結果
▶︎ AAAAA
“`
###となります。
###他にも小文字のみ

元記事を表示

Rails Asset Pipeline 基礎のキ

# Asset Pipelineとは
>JavaScriptやCSSのアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワーク
参照: Railsガイド -AssetPipelineについて-
https://railsguides.jp/asset_pipeline.html

この記事は、AssetPipelineの概要を説明しておくことで、RailsガイドのAssetPipeline記事の理解度を深めるためのものです。

そもそもcoffeescript、sass、erbなどは**プログラムを書く・読む人側**にとって生のjs/cssよりも簡単に書けるので嬉しいが、**実行するマシン側**にとっては読み取りづらいもの。これらcoffeescript, sassなどは高級言語と呼ばれるが、これらを .js.coffee→.jsに、 .css.sass→.css に**自動でコンパイルとminify(縮小)**してくれるのが、Asset Pipelineの役目。

ただし、**コンパイルは、開発(development)環境のみ**

元記事を表示

railsのメソッド”redirect_to”がどう定義されているのか読解してみた

railsメソッドの定義を解釈することで、rubyらしい書き方を学ぼう企画第二弾です。
今回のテーマは[redirect_to](https://api.rubyonrails.org/v5.1.7/classes/ActionController/Redirecting.html#method-i-redirect_to)

#redirect_toの定義

“`ruby
# File actionpack/lib/action_controller/metal/redirecting.rb, line 56
def redirect_to(options = {}, response_status = {})
raise ActionControllerError.new(“Cannot redirect to nil!”) unless options
raise AbstractController::DoubleRenderError if response_body

self.status = _extract_redirect_to_stat

元記事を表示

Railsを全般的に日本語化する方法

#はじめに
 今作成中のアプリケーションが、なるべく英語で表現したくなかったので、調べてまとめた。

##流れ
1. Gemを記述
2. bundle install
3. ファイル生成
4. 必要に応じてファイルを修正

###1. Gemを記述

“`ruby:Gemfile
gem ‘i18n_generators’
“`
上記のGemを追加

###2. bundle install
例によって、ターミナルで

“`bash
bundle install
“`
を実行する。
###3. ファイル生成
同じくターミナルで、

“`bash
rails g i18n_locale ja
“`
を実行する。
このコマンドによって、
config/locales/ja.yml
が生成される。
###4. 必要に応じてファイルを修正

l(エル)メソッドで時刻を表示する際の時刻表示を変えたい場合は、
204行目に修正を入れると、よい。
また、表示場所によっていつくかのパターンを用意したい場合も、205・206行目でカスタマイズが可能。

##最後に
 日本語の独自の単位をカ

元記事を表示

【実装手順】Railsでsorceryを使ってユーザー認証機能を作る

Railsで認証機能を実装するときに手こずったのでメモ

#作業環境
– Mac
– ruby 2.6.5
– rails 5.2.3
– bootstrap4

#sorceryとは
Railsに認証機能の実装を行うためのライブラリ。
同じように認証機能としてdeviseなどが挙げられるが、sorceryの方がよりシンプルで、カスタマイズ性に富んでいるという特徴を持つ。
[sorcerのgithubはこちら](https://github.com/Sorcery/sorcery)

#実装手順
###sorceryのインストール

“`ruby:Gemfile
gem ‘sorcery’
“`

“`ruby:ターミナル
$ bundle install
“`

###Userモデルとマイグレーションファイルを生成

“`ruby:ターミナル
$ rails g sorcery:install
“`
上記のコマンドを打つことで、userモデルとデーターベースのmigrationファイルが生成される。
・`app/models/user.rb`
・`config/initi

元記事を表示

RailsアプリケーションをAWSにデプロイする方法(記事まとめ)

# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。

# 使用するもの

* Ruby on Rails
* MariaDB
* Unicorn
* Nginx
* GitHub

# 流れ

GitHubにデプロイしたい自身のアプリケーションのリポジトリが存在することを前提に以下の手順でデプロイします。

* AWSにEC2インスタンスの作成を行う

参考)https://qiita.com/daisuke30x/items/91307c94e8f5a702a42f

* EC2インスタンスにRubyをインストールする

参考)https://qiita.com/daisuke30x/items/09d24ceb167d3fcaff5e

* EC2インスタンスにDBサーバーを作成する

参考)https://qiita.com/daisuke30x/items/7501d724a0727ad9f2e4

* EC2インスタンスとGitHubの

元記事を表示

AWSのEC2インスタンスにWebサーバーを作成する方法

# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。

# 今回の流れ

* アプリケーションにNginxをインストール
* Nginxの設定

「AWSのEC2インスタンスにアプリケーションサーバーを作成する方法」(https://qiita.com/daisuke30x/items/4292f96d817805f93d62)
の続きからの説明となります。
つまり、インスタンスにアプリケーションがインストールされていることが前提です。

# EC2インスタンスにNginxをインストール

### Nginxとは
代表的なWebサーバーです。

①自身のアプリケーションにNginxのインストール

“`:ターミナル
インスタンスにログイン
% ssh -i キーペア名.pem ec2-user@<パブリックIP>

Nginxのインストール
[インスタンス]$ sudo amazon-linux-extras install nginx1
=

元記事を表示

【Ruby on Rails5】WorkMailを使って独自ドメインのメールアドレスを設定する。【WorkMail】

## 環境
Ruby 2.5.7
Rails 5.2.4

### gem
gem ‘dotenv-rails’

### 前提
[Qiita – シンプルにお問い合わせ機能を実装する](https://qiita.com/s_rkamot/items/d6d0e9abb43383342fd6)
こちらの記事を参考に書き換えていく流れになります。
事前にGmailアカウントでの実装と動作確認をしてもらってから、今回ご紹介するやり方を実践いただければと思います。

独自ドメインは取得済みです。
AWSは登録済みです。

## 経緯
独自ドメインを取得したので、どうせならお問い合わせからの送信されたメッセージは独自ドメインで取得したメールで受信したいと思って今回の実装に至りました。
しかし、ネットを調べると、Gmailを例にした実装方法ばかりでしたので、今回はそれを応用していきたいと思います。

## 手順
1.独自ドメインを取得する
2.取得した独自ドメインを使って、AWS WorkMailでメールアドレスを取得する
3.WorkMailのSMTP設定を反映させていく(受信メールサーバー

元記事を表示

【Rails】Rubocop実行時の「Use hash rockets syntax」を回避する方法

## 「Use hash rockets syntax」が大量に出てしまう事態

Rubocopを導入し、ターミナルで「rubocop」を実行すると下記のように
**「Use hash rockets syntax」**の指摘が大量に出てきてしまいました。

ググってもあまり記事は出てきませんでしたが、
「hash rockets syntax」は下記の記事でも書いている通り、
[Rubyのハッシュの記法まとめ](https://qiita.com/YusukeHigaki/items/18db85aa9cba3cb42569)

“`ruby
user = { :first_name => “Yusuke”, :last_name => “Higaki” }
“`
⇒こういった、**「key => value 」**の形式のハッシュのことです。

## Rubocop実行時に出てしまった指摘

“`bash
$ rubocop
Inspecting 87 files
….CCCCC.CC….CC.CC……….C.CC.CCCCCC.C…C..CC….

元記事を表示

【Rails】note記事をrssで取得するrakeタスクを作る

### やりたいこと
Rails 環境で、note 記事を rss で取得してDBに保存、自動表示させたい!✨
今回は、note 記事を取得するための rake タスクを作成します。

### 準備
– HTTP クライアントライブラリを`gemfile`に追加

本記事では`httparty`を使用していますが、`faraday`でも動作します。

参考: [Awesome Ruby – Faraday VS httparty](https://ruby.libhunt.com/compare-faraday-vs-httparty)

– RSSフィード解析ライブラリ`feedjira`を`gemfile`に追加

“`ruby:Gemfile
gem ‘httparty’
gem ‘feedjira’
“`
“`console
$ bundle install
“`

### モデルの用意
今回は、特定のマガジンの記事の取得&タイトルと日付の表示が目的なので、シンプルに1つのモデルを作成します。
(複数のマガジンを取得するなら、もう1つモデルが必要そうです)

“`c

元記事を表示

AWSのEC2インスタンスにアプリケーションサーバーを作成する方法

# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。

# 今回の流れ
* アプリケーションにUnicornをインストール
* AWSのEC2で作成したインスタンスにアプリケーションサーバーを作成
* 本番環境の設定
* アプリケーションの起動

インスタンスは作成していることを前提とします。
※インスタンスの作り方が分からない方はこちらを参照ください。
「AWSに仮想サーバーを構築する方法」https://qiita.com/daisuke30x/items/91307c94e8f5a702a42f

# アプリケーションにUnicornをインストール

①自身のアプリケーションにUnicornのインストール

アプリケーション内のGemfileに以下の記述を加える。

“`:Gemfile
group :production do
gem ‘unicorn’, ‘5.4.1’
end
“`
※もし、Herokuでデプロイ済みの場合

元記事を表示

Railsもどきを作ってみよう2(コントローラー編)

# はじめに
この記事は前回の続きです。↓↓↓
https://qiita.com/alex0033/items/73f62ac7e5700ab2b4d6

今回は、コントローラー編ということで、Railsにおけるルーティングを実装していきたいと思います。

目指すべきディレクトリ構成は下記の通りです。

“`
directory
|- app
|- controllers
|- basic_pages_controller
|- views
|- basic_pages
|- home.html.erb # ホームページ
|- next.html.erb # ネクストページ
|- config
|- routes.rb
|- srv.rb
“`
# ポイント
前回まで、次のような状態になっています。

・“`ruby srv.rb“`とターミナルで入力すると、サーバを立てることができる。
・http://localhost:

元記事を表示

CircleCIでRubocopとRSpecを走らせてECSにデプロイする

#この記事で扱うこと
– CircleCIでRubocopとRSpecを使用した自動テスト
– CircleCI orbsを使用したCI/CDパイプラインの構築

#扱わないこと
– CircleCIの初期設定
– RubocopやRSpecの導入方法

#config.ymlの完成形
以下の公式ページを参考にしています
[https://circleci.com/docs/ja/2.0/configuration-reference/#requires](o)

“`
version: 2.1

orbs:
aws-ecr: circleci/aws-ecr@6.12.2
aws-ecs: circleci/aws-ecs@1.3.0

references:
defaults: &defaults
working_directory: ~/myqpp

ruby-docker-image: &ruby-docker-image
#steps共通のプライマリコンテナ
image: circleci/ruby:2.6.4-node-browse

元記事を表示

[Rails 6] Raty.jsを使った星型レビュー

## 1 はじめに
星型レビューを実装するために、ググったけど
##### 「app/assetsの中`javascriptsファイル`が存在しない!!」と嘆いている、そこのアナタ!!!!!

なぜassetsにjavascriptsが無いかというと、

それは
#####開発環境がrails6だからです!
Ruby on Rails 6.0よりJavaScriptの扱いが変わってます!

###この記事はRails 6 (Webpacker標準搭載)環境でRatyを導入し、星評価機能を実装する方法を説明します!

## 2 完成イメージ
評価を星マークで表示する!

![スクリーンショット 2020-11-07 15.50.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/750557/54e10cd6-ec04-e8e0-9849-09823c79b039.png)

ユーザーは星ボタンをクリックすればレビューできる!

![スクリーンショット 2020-11-07 15.57.58.png](

元記事を表示

RailsのRESTfulルーティングを生成するresourcesについて

## RESTfulについて
例としてユーザー登録をしてもらい会員制のサイトを運営しようと思った時の事を考えてみる。

■会員登録画面を表示する(new)
→入力してもらい、データベースに登録する(create)

■登録した情報の編集画面(edit)を表示
→変更があった場合はデータベースを更新する(update)

■会員一覧の表示(index)

■会員詳細ページの表示(show)

■会員が退会した場合、データベースから削除する(destroy)

このような「あるリソース」をCRUD操作できる状態をRESTfulという。

※CRUDとはCreateReadUpdateDeleteの頭文字。

## RESOURCESで生成されるルーティング
RESTfulなルーティングを設定するにはresourcesを使う。

“`routes.rb
resources :xxxs
“`
* xxxsはコントローラ名(複数形)にするのが一般的。
* ORMではURL中にコントローラ名を入れるのが一般的。
* こちらの記述で7つのルートが生成される。

## resourcesで生成

元記事を表示

Rails deviseでマイページの作成

# やりたいこと
railsのgemであるdeviseを使用してマイページの作成を記事にします。

**前提:Rails環境構築済み, devise導入済み**

# routeの設定
マイページを作成するためにshowアクションを作成します。

“`
# routes.rb
resources :user, only: [:show]
“`

# controllerの作成

userコントローラーの作成をする。

“`
$ rails g controller users show
“`

# controllerの編集

users_controllerに、DBであるユーザーを取得します。

“`
# app/controllers/users_controller.rb
# マイページ
def show
@user = User.find(params[:id])
end
“`

# viewの編集

マイページのviewを作成。
userテーブルのニックネームとメールアドレスを表示

“`
# views/users/show.html.ha

元記事を表示

CI/CD環境を作った時に起きたエラー備忘録[Rails + CircleCI +Capistrano +AWS]

#はじめに
作成途中のrailsアプリに自動デプロイ(AWSのEC2へ)は実装できたので、テストも自動化してCircle CIからデプロイまでして欲しいと思ったので(CI/CD環境)実装した。

実装自体は先人方の記事を参考にしてできた。
[【circleCI】rails5.2/Capistrano/CICD環境によるAWSへの自動デプロイ](https://qiita.com/AK4747471/items/882b70f663f4a80ae770)

[CircleCI + Capistrano + AWS(EC2) + Railsで自動デプロイしてみた](https://qiita.com/YK0214/items/98bbdf7ce25c557c77a3)

上記の記事の方ではコードも含めて十分な説明がされているので、ここでは個人的にハマったエラーについて備忘録を残しておく。

#環境
CircleCI 2.0
Capistrano 3.14.1
Ruby 2.6.5
Rails 6.0.0

#① rspec_junit_formatterがないと言われる
テストを走らせ

元記事を表示

OTHERカテゴリの最新記事