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

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

投稿した記事に不要な表示されるエラーの解決例

投稿した記事に不要な表示された場合
app/views/user/show.html.erbを確認します。

不要な表記で<%= %>が使用されているか確認します。

<%= %>は、post.nameなど出力したい処理で使用します。
<% %>は、if文など出力したくない処理で使用します。

元記事を表示

【言語・フレームワーク考察】RubyとRuby on Rails

僕は、今後いろんな言語やフレームワークを学びたいと思っています。ですが、言語やフレームワークの種類が多すぎて、どれから学ぶべきか基準がわからず迷っています。

そこで、ひよっこプログラマーなりに持っている感想やイメージをまとめ、他にもネットで調べた特徴をまとめて「言語・フレームワーク考察」をして行きたいと思います。

# 気になっている言語・フレームワーク

**フロントエンド**

– Vue.js
– コンポーネントが便利らしい?
– React
– Vueよりももっと多機能?
– ElmとThe Elm Architecture
– [Medium](https://medium.com/javascript-in-plain-english/here-is-what-you-should-learn-after-javascript-b9dd41950887)で紹介されていた。動作が速く、ランタイムエラーがないらしい。
– CSS
– もっと深く知りたい。

**バックエンド**

– Ruby

Ruby on Rails

– 見た目が綺麗

元記事を表示

【Rails】find_or_create_by!を使ってみた

## 概要

– 参加させていただいている案件で、大変参考になった内容があったため、まとめました。

## 目的

– `rails db:seed`で新しいテストデータを追加した時、差分だけ登録できるようにしたい

## 問題

– `rails db:seed`で登録する時に、データが重複する部分でエラーが発生する
– エラーが発生しないようにするには、その都度データをリセットする必要がある(`rails db:migrate:reset`など)
– 個人であれば問題ないが、複数人で作業している場合、「他のメンバーが追加したテストデータ」を「削除コマンドなし」で導入できるようにしておきたい

## エラーが起こる原因

– seeds.rbに登録されているデータが全て登録されようとする
– 重複部分があるため、エラーが発生する

## 課題

– データが存在しない場合は作成
– データが存在する場合は、作成する処理を実行しないようにしたい

## 解決策

– `find_or_create_by!`を使用する

“`
モデル.find_or_create_by(条件)

#=

元記事を表示

アプリ開発実践入門3 Controllerとview 発展

今日の教科書

##ページ作成を発展させる

###リダイレクトとパラメータ送付
リダイレクト:別のアクションへの処理の転送
`redirect_to action: :アクション名 , params:[ハッシュ]`:
`action:`リダイレクト先のアクションを指定するオプション
他のコントローラのアクションに帰る際は`controller: コントローラ名`
`params:`で必要なパラメータを渡すことができる。
リダイレクトで新しいアクションを作ったら、ルーティングを忘れない。

###フォームの送信
####フォーム用にHTMLテンプレートを編集する。主に入力フィールドと送信ボタンを作る。
[

…… 入力・送信フォームを作る](http://www.htmq.com/html5/form.shtml)

“`
1

2 gitコマンドを使ったブランチ作成からマージまでの流れ(GitHub Desktopとの比較あり)

アプリ開発のバージョン管理に使うGitHubには、GitHub DesktopというGUIで操作できる便利なアプリがあります。

しかし、キーボードによるコマンド入力(CLI)で操作する方がGitHubの操作スピードが上がるため、ブランチ作成からマージまでの一連の流れを、一部GitHub Desktopの操作と比較しながらコマンドを覚えていきます。

注意:Ruby on Railsでの開発を前提としています。

##新しいブランチを作成する・ブランチを切り替える
###git branch
`git branch`は作成済みのブランチを一覧表示します。
現在選択されているbranchは先頭に’*’が付いています。

“`:ターミナル
git branch
first-branch
* master
“`
###git branch ブランチ名
新しいブランチを作成します。

“`:ターミナル
git branch second-branch master //masterブランチからsecond-branchを作成
“`
###git checkout ブランチ名
ブラン

元記事を表示

RailsとVue.jsでメールアドレスが登録済みか判定する方法

こんばんは
アロハな男、やすのりです!

今日は会員制のWebアプリ等でよく見かける『このメールアドレスは登録済みです。』みたいな表示を`Rails`と`Vue.js`を使って実装しちゃいましょう!
やり方さえわかれば、`Vue.js`じゃなくても`Ajax`を使えばできると思います!
※今回はRailsをAPIモードで使用しています。
※全てのコードを記述すると長くなるので、多少変更し必要最低限だけ記載します。

[![Image from Gyazo](https://i.gyazo.com/431906588bf28ae4e5d35af527a55c05.gif)](https://gyazo.com/9c5df29795912effdc40361203a39673)

#結論
Railsのコードが、

“`ruby:routes.rb
namespace :api do
scope :v1 do
post ‘/auth/check_email’, to: ‘users#is_registerd?’
end
end
“`
“`ruby:u

元記事を表示

Herokuでデプロイ

#WHY
デプロイすることも多くなり、手順を覚えるためのアウトプットの一環として書いていきます。
herokuでデプロイするにはまずアカウント作成とクレカ登録が必要ですがそこは省きます。

—–
##CLIのインストール
ターミナルでCLIをインストールしていく。
インストール後に「heroku –version」と打ち込み、バージョンが表示されれば成功。

“`
brew tap heroku/brew && brew install heroku

heroku –version
“`
##ログイン
以下のコードを入力することでログインできる。
指示に従い、アカウント情報を入力する。

“`
heroku login –interactive
=> Enter your Heroku credentials.
=> Email:
=> Password:
“`

##heroku create
デプロイしたディレクトリまで移動し、
Heroku上に公開するためのアプリケーションを作成する。続けてアプリ名を記入し、Heroku

元記事を表示

Docker + Rails(Ruby)をバージョンアップ(アップグレード)したお話

## Docker環境でRails(Ruby)アプリをアップグレードした記事がない!?

### 非Docker環境でRubyとRailsをアップグレードする方法はすぐに見つかりました。
伊藤さんが書かれてる下記の記事が本当にわかりやすいです。

> [永久保存版!?伊藤さん式・Railsアプリのアップグレード手順 – Qiita](https://qiita.com/jnchito/items/0ee47108972a0e302caf)

ちなみに私は`Docker Rails アップデート`、`Docker Rails バージョンアップ`などでググりましたが見つかりませんでした。ワードが違いますもんねw

### 「じゃあDocker環境でRubyとRailsをアップグレードする記事もすぐ見つかるでしょ」
そう思ったのですが

– 思ったよりも見つからない
– Rubyのアップグレード方法がいくつかパターンがあるみたい
– rbenvを利用してアップグレードする方法([docker-composeによるrails5の開発環境構築時のエラーまとめ【公式通りはうまくいかない】

元記事を表示

[Rails] 新規登録画面のめっちゃシンプルなレイアウトテンプレート作ってみた [コード載ってます]

# GOAL
※devise使ってます。
※bootstrap4使ってます。導入方法はこちらをどうぞ。
[![Image from Gyazo](https://i.gyazo.com/4ba33a8e293c71aa835b8ccbd72b71b8.png)](https://gyazo.com/4ba33a8e293c71aa835b8ccbd72b71b8)

Image from Gyazo

#HTML

“`ruby:app/views/devise/registrations/new.html.erb
<%= render 'article

元記事を表示

Redmine パッチ会 #8 に参加しました

# この記事はなに?

[Redmineパッチ会オンライン #8](https://redmine-patch.connpass.com/event/201730/) に参加しました。どんな感じだったのか? を書いていきます。

# きっかけ

今のプロジェクトで、[Bitnami Redmine 4.1.1](https://bitnami.com/stack/redmine) の利用を始めています。運用手順書を書いているうちに、あれっ、これ不具合っぽいな? と思ったことが何度かありました。でも、RubyもRailsも全然触ったことないし、一人でソースコード読んだりパッチ書いたりなんかできそうにない、なにか足がかりがほしいな、と思っていて、えいっと参加してみました。

過去には[trac](trac.edgewall.org/)というチケット管理システムを使っていて、ちょっとした[プラグイン](https://trac-hacks.org/wiki/matobaa)を作ったりしてました。また、6年前になるのですが、[Redmine_LDRize](https://www.redmin

元記事を表示

【Railsチュートリアル】第7章 ユーザー登録①

#第7章 ユーザー登録
##はじめに
###本章の目的
* ユーザー登録機能の追加
* HTML フォームを使ってWebアプリケーションに登録情報を送信
* ユーザーを新規作成して情報をデータベースに保存
* ユーザーを表示するためのページを作成
* 統合テストに対して、 いくつかのテストを追加

##7.1 ユーザーを表示する
本節では、ユーザーの名前とプロフィール写真を表示するためのページを作成していく。
ユーザープロフィールページの最終的な目標は、ユーザーのプロフィール写真と基本ユーザーデータ、そしてマイクロポストの一覧を表示すること。

###7.1.1 デバッグとRails環境
レイアウトにデバッグ情報を追加する。

“`ruby:app/views/layouts/application.html.erb
#もしRails.env.development(development=開発環境)だったらデバッグ情報を表示せよ
<%= debug(params) if Rails.env.development? %>
“`

####演習 1
ブラウザ

元記事を表示

Rails:モデルの命名規則を破ったらエラーが出ました【NameError】【uninitialized constant】

# Rails:モデルの命名規則を破ったらエラーが出ました【NameError】【uninitialized constant】

## エラー画面
![スクリーンショット 2021-02-13 20.56.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1101969/4aa01c8a-fb8e-ad61-ad86-f194dea72b5e.png)

### エラー説明
uninitialized constant:「定義したクラスを読むことができないよ」
(Railsでは定数やclassが定義されていないという意味のエラー)
NameError:「そんな名前は定義されてないよ」
(定義されていないローカル変数やメソッドが呼び出されている場合に、発生するRubyのエラー)

## 原因
classの命名規則が正しくできていなかった

誤:「Deliver_fee」
正:「DeliverFee」

## RailsのDBモデルの命名規則
### 単語が1つの場合
例)モデルの名前が「Deliv

元記事を表示

【Ruby on Rails】返すデータに制限をかけたりかけなかったりするために、七つのアクション以外を定義するのはやめよう…

#なぜ書くか
これまたコードレビューの際にご指摘いただきました。
備忘録と、コツコツとプロの開発者としての思考を身につけるためにアウトプットさせていただきます。

#脱「動けばいい」精神
まず、前提としては、RailsはApiでのやり取り専用のコントローラ。
iOSアプリケーションからリクエストを受け取り、それぞれのリクエストに応じた処理が実行されます。

実際に問題となった機能を実装する前は、コントローラは下記の様な状態でした。(コードは多少変更しています。)

“`ruby
module Api
module V1
class ProductController < ::Api::ApplicationController protect_from_forgery except: [:create] def index render json: Product.trader_filter(params[:trader_id]) end def create render json: P

元記事を表示

ターミナル上でローカルサーバーを動かせなくなったとき

rubyメモ

“Address already in use – bind(2) for “127.0.0.1” port 3000 (Errno::EADDRINUSE)“
というポート3000がすでに使われているというエラーがターミナル上で出現した。

原因はよくわかっていない。

“%lsof -i:3000“
でポート3000を使用しているプロセスを発見。


ruby 61207 nakagawasoma 11u IPv6 0x16e108863b855d9d 0t0 TCP localhost:hbci (LISTEN)
ruby 61207 nakagawasoma 12u IPv4 0x16e108864520de8d 0t0 TCP localhost:hbci (LISTEN)
ruby 61207 nakagawasoma 17u IPv6 0x16e10886446ae3fd 0t0 TCP localhost:hbci->localhost:61780 (CLOSE_WAIT

元記事を表示

[Rails]gretelとパンくず(パンくずリストの作り方)

# 何を書くのか
railsのgem “gretel”を用いたパンくずリストの作り方

## 環境
Rails: 6.0.3.4
Ruby: 2.6.5

## 結論
gretelの力でパンくずを作成し、それをビューで表示する。

## パンくずリストとは
![スクリーンショット 2021-02-13 午後6.34.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/948673/5c2e7b41-7b46-8e9f-df2f-a186b2b20577.png)

こういう風に、ヘッダーなどに「今どこどこにいますよ!」っていう表示を見た事があるでしょうか。これを**パンくずリスト**と言います。今回は、これを作成していきます。

## gretelの導入
今回使うのは、gemのgretelです。
[gretelのGithub](https://github.com/kzkn/gretel)

最初に、gretelの導入を行います。

Gemfileに記述し、bundle installします。

“`

元記事を表示

sourceコマンドによるエラー

## はじめに
オリアプの新規登録やログインなどにSNS認証を用いる実装を行おうとした際に予想外のエラーが発生したので、備忘録として載せておこうと思う。
結論として、今回のエラーは**sourceコマンド**に対しての知識不足が原因だった。

## 1.エラー発生
SNS認証の実装を行う中で、以下のエラーが発生した。
エラー内容としてはclient_idがないよというエラー。

##2.エラー原因と解決
色々なサイトで原因と解決法を調べたが、なかなか解決することが出来なかった。
その中であるサイトに以下のようなことが記載されていた。
**『複数タブを開いており、rails sをしているタブでsourceコマンドを入力していなかったためでした。』**

もしかして、これが原因か?と思い、sourceコマンドで環境変数を設定したタブで

元記事を表示

【Rails】Zeitwork::NameError を解消する

###1.はじめに
railsでアプリを作成し、サーバーを立ち上げ`rails s`を行い、`http://localhost:3000/XX`にアクセスしました。
すると、`Zeitwork::NameError`と表示されました。

###2.使用環境
・mac.os バージョン10.15.6
・Ruby 2.6.6
・Rails 6.0.3.5
・psql (PostgreSQL) 12.6

###3.実際のエラー
Zeitwerk NameError.png

太字に着目するとPostsContrlllerの定義が変という旨が書かれていますね。

###4.結論:スペルミスでした
ということで`Postscontroller`クラスの記述をしている`posts_controller.rb`を確認すると.

元記事を表示

deviseのform_for をform_with に書き換える。

“`erb:form_for
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
“`

“`erb:form_with
<%= form_with(model: resource, scope: resource_name, url: session_path(resource_name)) do |f| %>
“`

早く本家で対応してくれないかしら。

#### 参考
– [【Rails 5】\(新\) form\_with と \(旧\) form\_tag, form\_for の違い \- Qiita](https://qiita.com/hmmrjn/items/24f3b8eade206ace17e2)
– [【Rails】deviseのビューのform\_forをform\_withに置き換える \- Qiita](https://qiita.com/wonder_meet/items/fac07af1edcd79ad102a)

元記事を表示

Deviseのログイン・ログアウト後に転送するURLを変更する

以下のように `after_sign_in_path_for`、`after_sign_out_path_for` をオーバーライドします。
調べてると`applicationController` に追加するという記事ばかりで、複数のアカウントを扱う場合に制御しにくいなと(UserとAdminとか)。
`SessionController`に記述してあげましょう。
`stored_location_for` を書いておくと、フレンドリーフォワーディング(ログイン画面に転送されるまえにリクエストしたページへリダイレクト)にも対応します。

“`rb
class Hoge::SessionsController < Devise::SessionsController # 以下を追加 def after_sign_in_path_for(resource_or_scope) stored_location_for(resource_or_scope) || customized_root_path end def after_sign_out_path_fo

元記事を表示

【Rails】rails s したらAddress already in useのエラーが出たので解消する

###1.はじめに
railsでアプリを作成し、サーバーを立ち上げ`rails s`を行い、動作確認を試みました。
すると、`Address already in use`と表示されました。

私:「`http://localhost:3000`複数立ち上げてないはずだけど…」
複数回このエラーに遭遇したため、備忘録も兼ねてまとめていきます。

###2.使用環境
・mac.os バージョン10.15.6
・Ruby 2.6.6
・Rails 6.0.3.5
・psql (PostgreSQL) 12.6

###3.実際のエラー

“`ターミナル.
1: from /Users/hogehoge/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.7/lib/puma/binder.rb:229:in `new’
/Users/hogehoge/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.7/lib/puma/binder.rb:229:in `ini

元記事を表示

OTHERカテゴリの最新記事