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

Rails関連のことを調べてみた2020年12月29日
目次

Circle CI環境構築

# はじめに

本記事ではCircle CI初心者の僕が、Circle CIのクラウド環境での実行(gitでpushするたびにテストを実行する)方法についてまとめていきます。

# Circle CIの環境構築

## 1)GitHubとの連携

Circle CIではGitHubとBitbucketの2つのサービスと連携できますが、GitHubとの連携のほうが多いと思うので、こちらでのやり方を記載していきます。

やり方としては**GitHubにログインした状態**でCircleCIのサイトから連携ボタンを押して、手順に沿って作業を進めてください。

## 2)プロジェクトの追加

GitHubでの認証が完了したらGitHubのプロジェクト(リポジトリ)をCircleCIでも作成します。
個人リポジトリかOrganizationリポジトリか、プライベートリポジトリでプロジェクト追加のやり方が異なるようですが、ここでは、個人+Publicリポジトリでのやり方を記載します。

## 3)CircleCIの実行環境

最終的にはクラウド環境でのCircleCI実行をゴールとします。
その

元記事を表示

scopeとwhere(“LOWER(message) LIKE ?”, “%#{term.downcase}%”)

#なんだこの記述は、、!?
RSpec学習には以下の有名教材があります。
[Everyday Rails – RSpec による Rails テスト入門 テスト駆動開発の習得に向けた実践的アプローチ](https://leanpub.com/everydayrailsrspec-jp)

Aaron Sumnerさんという方が書いた本を日本語訳されています。
翻訳した方々の中にはあの「[プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AERuby%E5%85%A5%E9%96%80-%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%B

元記事を表示

【Rails】deviseとactiveadminをインストール時のエラー解消について

Railsにて管理者画面を作ろうとしていた時にエラーがでました。

## エラー内容

“`:ターミナル
rails g devise install
rails g active_admin:install
“`
を打った所、

`method_missing’: undefined method `devise’ for Install (call ‘Install.connection’ to establish a connection):Class (NoMethodError)

というエラーが出ました。
どうやらdeviseが未定義みたい??

あとあとになって気がついたのですが、
`rails g devise:install`の「:(コロン)」が抜けてました。

## 解決手順

config/routes.rbの内容を一旦消去。
そして、`rails db:rollback`コマンドを実行。
再度、`rails g devise:install`と`rails g active_admin:install`コマンドを実行。
これで無事にdeviseとactive

元記事を表示

【Ruby On Rails】特定のユーザーだけが編集ページに遷移できるようにする記述

備忘録です。

# 前提
MacOS Catalina
ruby 2.6.5p114
Rails 6.0.3.4
deviseを導入済(authenticate_user!というヘルパーメソッドを使用)

# 特定ユーザーだけを編集ページへ遷移させる記述

“`ruby:hoges_controller.rb
class HogesController < ApplicationController before_action :authenticate_user!, only: [:edit] before_action :specified_hoge, only: [:edit, :update] before_action :specified_user, only: [:edit] (中略) def edit end def update if @hoge.update(hoge_params) redirect_to root_path else render :edit end end

元記事を表示

ポートフォリオ作成記録 第5章

## 概要
今回から、手軽に書いて習慣化を目指したいと思いメモ書き程度の出来で投稿を試したいと思い、簡略した内容で記述いたします。
##学習した要点と理解度
・パーシャル
 HTMLのタグを区分けできる機能。
 特定のタグを一まとめにできるなら、それを分割して管理と変更ができる。

・Sass
 CSSの機能を強化版。驚いたのは、変数で管理できるのと、
 ネストで、記述を行ってまとめれること。

・アセットパイプライン
 静的コンテンツの生産性と管理を大幅に強化する

・リンクのテスト(統合テスト)
 新しくページを作成・変更をして移動できるかを確認。
 1.ルートURL (Homeページ) にGETリクエストを送る.
 2.正しいページテンプレートが描画されているかどうか確かめる.
 3.各ページへのリンクが正しく動くか確かめる.
## まとめ
これからは習慣化を目指して、このメモ程度で投稿しようと思います。
目的は習慣化と理解度がどれくらいか目安になり、
復習や理解を深める内容の指標と学習した内容の穴を見つけ出せると思ったからです。

また、作成過程を残す事の最大の利点は、
つまづ

元記事を表示

Faker使ってFactoryBot作ったけど、たまに意図しないパスワードが生成されるから、コンソールで色々条件を変えて検証してみた話

#はじめに
 Fakerを使ってFactoryBotを作成して、テストコード書いていました。しかし、時々すでにテストコードが通っていた場所なのに、「パスワードが不正な値です」というエラーが出てしまいました。ふと、疑問に思い、Fakerについて調べてみました。
 主な内容は、Fakerが提供している、パスワードをランダムに生成する機能の英語を訳したようなものです。

##Fakerとは

[FakerのGitHub](https://github.com/faker-ruby/faker)

 gemとしてインストールすることで、ランダムに色々な値を生成してくれます。名前や住所はもちろん、ポケモンの名前まで…(笑
 しかし、全て英語です…。私は、雰囲気だけで使ってます。

##[Faker::Internet](https://github.com/faker-ruby/faker/blob/master/doc/default/internet.md)

###基本形

“`ruby
Faker::Internet.password
#=>”W9vSoO7oRzE5aNkB”
“`

元記事を表示

本番環境にアニソンのファイルあげて大恥かいた話

## 概要
今年ももうすぐ終わりですね。
「今年の反省は今年のうちに」ということで、今回は**年末に本番でやらかしたお話**を投稿したいと思います。

遡ること2日前、私は現在エンジニアをしているインターンで、**ファイルをアップロードするシステムのバグ修正**を行っていました。
コーディングはすんなりとすすみ、無事デプロイも終了。本番でちゃんとアップロードできるかの軽いテストを行い、その日は退社しました。

翌日、出勤するやいなや、上司に呼び出されました。

上司 *「〇〇くん, ファイルアップロードのシステムさわった?なんか変なファイルが上がってるんだけど…」*
私 *「変なファイル…ですか ?」*

指定されたurlを確認してみると, なんとそこには友人が熱唱している**[私アイドル宣言](https://www.youtube.com/watch?v=m7ddbml_vkY)の音源がアップロードされていました。**
(ちなめっちゃいい曲です 聞いてみてください)

![スクリーンショット 2020-12-28 22.57.07.png](https://qiita-i

元記事を表示

【Rails】redirect_to と render の違いについて調べてみた。

Rails コントローラーの create アクションと update アクションで並んでいる redirect と render ですが、どう違うのかいまいち分からなかったので調べました。学び始めたばかりの頃はあまり気にしていませんでしたが、先日2つの違いを質問されてうまく答えられなかったので。。。

####結論

【render】
controller から指定された view を直接呼び出す。
動き: controller → view
データなどの状態はそのままで画面だけ貼り替える

【redirect_to】
http リクエストを受けた場合と同じ処理
動き: controller → URL → route → controller → view
指定したURLに一からアクセスしてデータをすべて取得し直す

####実際にやってみた
①通常の controller ファイルの create アクションで動きを見てみる

“`tasks_controller.rb
def create
@task = Task.new(task_params)
if @ta

元記事を表示

docker-compose up 実行時エラーが出たときのDockerの停止、再起動方法 【Cannot start service database: driver failed programming external connectivity on endpoint 】

#【Dockerの停止、再起動方法について】

docker-compose upして

“`ruby
Cannot start service database: driver failed programming external connectivity on endpoint
“`

エラーが出た際などに使える、現在立ち上がっているDockerの確認と停止方法です。

##① Dockerの現状確認
“`ruby
docker ps
“`
を実行し現在立ち上がっているDockerの確認をします。

“`ruby
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4db7e2473829 mysql:latest “docker-entrypoint.s…” 8 days ago

元記事を表示

ransackの複数ワード検索、複数モデル検索、複数タグ検索(acts-as-taggable-on)の実装

ransackの複数モデル検索、複数タグ検索に少してこずったので、同じような人の参考になればと思って投稿します。

今回はUserモデル、Articleモデル、Tagモデル(acts-as-taggable-onっていうgemを使用)のケースで実装します。。投稿された記事のarticleのtextカラム、Userのnameカラム、そしてUserに紐づいているtagのnameカラムから(複数ワード)検索を行うというものです。
(今回はtagはUserに紐づいていてarticleには紐づいていません)

はじめにview側ですが、下記のようになります

“`articles/index.html.erb
<%= search_form_for(@search, url: articles_path) do |f| %>
<%= f.search_field :text_or_user_name_cont_all , class:"search_field", placeholder:"検索" %>
<%= f.submit '検索', id:"search_button" %>

元記事を表示

【Rails】bundle install vs bundle update

<はじめに>
Railsで自作アプリを作る過程でgemをインストールした時に、
ふと”bundle install”と”bundle update”の違いが気になりました。
調べてみたので備忘録として投稿します!

“bundle install”も”bundle update”も、
railsアプリにgemをインストールするという点では同じです。
しかし、インストールのされ方が異なるため、しっかり違いを理解したいところです。
※操作を間違えると、エラーが発生してアプリが動かなくなることもあります!

bundle install = bundlerを使ってGemfileからgemをインストールするコマンド

Point:①Gemfile.lockにないgemをGemfileから探し、見つけたgemをinstallする
    ②–pathオプションを使えば、どこにインストールするか指定できる(よくあるのはvendor/bundle)
③アプリの中にインストールすればgemはアプリの中に、もし指定がなければ
~/.rbenv/versions/proj

元記事を表示

collection_check_boxesに表示する条件を設定したい

初学者の初投稿です。
自分が忘れないようにメモで投稿します。

form_withのヘルパーメソッドの
collection_check_boxesを使って、チェックボックスを作成しようとしています。

・実装したい事
ログインしているユーザーが登録したcustomerの名前だけを
チェックボックスにして表示したい
(current_user.id == user.id
のcustomerテーブルのnameをチェックボックスにしたい。)

通常の記載方法
こちらではcustomerテーブル全てのnameがチェックボックスになってしまう。

“`haml

= f.collection_check_boxes :customer_ids, Customer.all, :id, :name
“`

解決策
↓こちらで解決出来ました。

“`haml

= f.collection_check_boxes :customer_ids, Customer.where(user_id: current_user.id), :id, :name
“`

簡単な内容ですが、
ピンポイン

元記事を表示

Rails アプリを Azure App Service に Docker を使い、デプロイ & 継続的デプロイ

この記事は、[求ム!Cloud Nativeアプリケーション開発のTips!【PR】日本マイクロソフト Advent Calendar 2020](https://qiita.com/advent-calendar/2020/azure-cloudnative) の 20 日目です(後から追っかけで書いています)。

—-
本記事では Rails アプリを [Azure App Service](https://azure.microsoft.com/ja-jp/services/app-service/?WT.mc_id=AZ-MVP-5001601) に Docker を使い、デプロイ & 継続的デプロイする方法について、ご紹介したいと思います。

# 手順

手順は以下の通りです。

1. Azure CLI or Portal でログインする
2. Azure CLI or Portal でリソースグループを作成する
3. Azure CLI or Portal で Azure Container Registry(以下ACR) に使用するイメージを登録する
4. Rai

元記事を表示

2回目のHerokuデプロイで訳わからない人必見!

現在Railsチュートリアルを進めており

今回は1回目のデプロイは順調にできたけれども2回目の演習で結局何やったらいいかわからない病にかかってしまい

ググって解決したので同じ状況に陥ってる方がいましたら初心者がわかりやすく説明いたします!
よろしくお願いします!

先ず演習の内容なんですが簡単に説明すると

「今表示されている文字を変えろ的な?ついでにルーティングも変えてな的な」

なんだこの舐めた問題は簡単じゃねーか
と思い実際にルーティングと表示内容を変えてと….

あれこのまま

“`
$ git push heroku
“`
でいいんだっけな

スミマセン舐めてたのは僕でした

はい、必ず失敗します。とゆうかできませんでしたww
では説明に入ります。
先ずはgitに変更をcommitしてpushすることを思い出しましょう。

1. 先ずはアプリの中身を変更します

2. ブランチの状態を確認する

“`
$ git status 
“`

3.commit

“`
$ git commit -a -m “変更内容のコメント”
“`

元記事を表示

rake routes を実行したらエラーが出た。

rails にてルーティングを調べようとしたら以下のエラーが出た。

“`
rake routes
rake aborted!
Gem::LoadError: You have already activated rake 13.0.3, but your Gemfile requires rake 12.3.3.
Prepending `bundle exec` to your command may solve this.
“`

うーん。なんだこれは。。。調べてみるとどうやらrake routesの前にbundle execを付ければ良いみたいだ。

(参考にさせていただきました。ありがとうございます。)
https://qiita.com/ARTS_papa/items/41e2868273dd344cd317

“`
bundle exec rake routes
“`

でやってみたら成功。解決してよかった。

元記事を表示

albのヘルスチェックエラーを解決した話

# はじめに
AWSのECS+EC2でアプリをアプリを動かす際に表題のエラーにハマったのですが、無事解決できたのでその過程を記事に残しておこうと思います。エラーの詳細はこちらになります。

# エラーの原因
原因は二つありました。それぞれ説明していきます。

## ① 環境変数「SECRET_KEY_BASE」を定義していなかったこと
こちらがエラーの原因となったDockerfileになります。

### rails用Dockerfile

“`dockerfile:app/docker/rails/Dockerfile
FROM ruby:2.6.5-alpine

WORKDIR /app

ENV RAILS_ENV=”production”
ENV NODE_ENV=”production”

# 依存パッケージのインストール
COPY Gemfile Gemfile.lock /app/
RUN apk add –no-c

元記事を表示

【備忘録】railsチュートリアル3章のbundle installが出来ないときの対処

【環境】
windowsPC
aws cloud9にて実行

railsチュートリアル3章のbundle install時にエラーが出て詰まったので備忘録的として記録。

【経緯】
bundle install実行時、bundle updateを促すエラーが表示されたため、指示通り実行したところ、下記のエラー表記。

An error occurred while installing pg (1.1.4), and Bundler cannot continue.
Make sure that `gem install pg -v ‘1.1.4’ –source ‘https://rubygems.org/’` succeeds before bundling.

【試したこと】
ググるうちにrailsチュートリアルではpgは使わないとの記述を見つけた(テキストのすぐ下にも書いていた)ため、再度bundle install –without productionを実行。しかしこちらもエラー。

bundle update –without productionと実行してみるも

元記事を表示

502 Bad Gatewayの解決方法

### 環境
* Rails 5.2.3
* Capistrano
* EC2
* Nginx
* puma

### エラー内容
デプロイ後、ブラウザにてアプリを再読み込みしたところ、「502 Bad Gateway」が表示された。

### 解決方法
EC2インスタンスを再起動する事で、解決できました。

手順
1. AWSにログインする。
2. EC2へアクセスする。
3. インスタンス画面へアクセスし、インスタンスを選択する。
4. 「インスタンスの状態」の「インスタンスを再起動」を実行。

以上

元記事を表示

Rails チュートリアル 第9章 備忘録

第9章の備忘録です。
いや、難しいよね。。

##目次
[1 第9章で出てくる語句まとめ](#1-第9章で出てくる語句まとめ)
[2 remember me 機能の実装の流れ](#2-remember-me-機能の実装の流れ)

###1 第9章で出てくる語句まとめ
初めて第9章取り組んだ時に、理解を共わない写経状態だったのだが、改めて取り組んでみると内容が入ってきた。
特にこの章から出てくる語句の意味を把握しておかないと厳しいなと感じたため、初めに語句をまとめてみました。

1. **トークン**
パスワードと同様のもの。
この2つの違いは、パスワードはユーザーが作成・管理
トークンはコンピューターが作成・管理するもの

2. **記憶トークン**
有効期限が設定されたトークンのこと。

3. **ダイジェスト**
まず、ダイジェスト認証が、値をハッシュ化してから送受信し認証を行う方法のこと。
前の章で`password_digest`、今回では`remember_digest`属性を使用していることから、データベースにハッシュ化された情報が入る

###2 remember

元記事を表示

Sidekiq のベストプラクティス、ActiveJobを使っている場合はその限りではなさそうという話

公式があげている [Sidekiq のベストプラクティス](https://github.com/mperham/sidekiq/wiki/Best-Practices#1-make-your-job-parameters-small-and-simple
)によると、perform メソッドにはオブジェクトではなくオブジェクトの id を渡すようにと書かれていますが、Rails の ActiveJob を使っている場合はその限りではないという話です。

> # MISTAKE
“`ruby
quote = Quote.find(quote_id)
SomeWorker.perform_async(quote)
“`

> Complex Ruby objects do not convert to JSON, by default it will convert with to_s and look like #. Even if they did serialize correctly, what happens if you

元記事を表示

OTHERカテゴリの最新記事