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

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

本番環境での表示に関して

##オリジナルアプリの開発中ですが、本番環境にて不具合が出ているので投稿します。##
###環境###
Ruby 2.6.3
postgresSQL
Rails 6.0.2.2

本番環境の対象画面
https://dry-hollows-95968.herokuapp.com/shops/new

開発環境の対象画面
https://gyazo.com/ce3c05aef67259b2b2057ab08d9d5393

本来は開発環境の様にセレクトボックスから選択できる様に表示したいです。

セレクトボックスの中身は各モデルの初期データから読み込む様に設定したつもりです。

開発環境のデータベースもpgで作成していたので、本番環境で使えない記述の仕方などの線も薄いのかと思ってしまって、時間が取られてしまっています。

原因はどのようなものでしょうか?

お忙しいとは思いますが、ご確認よろしくお願いいたします。

“`new.ehtml.rb

【Rails6, haml】クラス名にindexをつける方法【each_with_indexまたはeach.with_index】

#やりたいこと
eachメソッドで並べるデータそれぞれのクラス名に番号を付けたい。
具体的には
user_name_1
user_name_2
user_name_3
のような感じ。

#開発環境
ruby 2.6.5
rails 6.0.0

#コード例

“`haml:hogehoge.html.haml
– @products.each.with_index do |product, index|
%tr.results__table-row
%td.results__table-row__name
= product.standard_name
%td{class: “results__table-row__price_#{++index}”}
= (product.price).to_s(:delimited)

“`

この部分ですね。

“`haml
%td{class: “results__table-row__price_#{++index}”}
“`

普通、hamlだとクラス名は`.hogehog

元記事を表示

【Rails】マイグレーションファイルの削除

#マイグレーションの削除まで
チーム開発をしていた時に調べて残していたのでついでにQiitaにも残しておきます。
ちなみにロールバックは使いません。
##まず今のマイグレーションファイルの状態を確認する
これめっちゃ大事です。これを確認しないと削除するファイルがどれか、削除できる状態かなどがわかりません。(どっかにあるかも)

“`
bundle exec rake db:migrate:status
“`
これを打ち込んだら確認できます。
その結果が↓
1枚目.png
これからこの一番したの20200409150025_create_as.rbを使って削除していきます。

###ステータスの確認
一番左のステータスがマイグレーションファイルを削除できるかわかる目印なんでここをまず見ましょう。
今upとなっている

元記事を表示

Rails 爆速でtag機能を搭載したtodoアプリを作ってみよう(docker構築有)

# 今日の目標
爆速でtag機能を搭載したミニアプリを制作してみる

まずは基本機能のみのアプリを作り 追加実装を意識した作りをする

## 環境
Ruby 2.5.1
Rails 5.2.4
docker 19.03.8

##今回はdockerで環境構築します。
dockerなんて 訳わからんと言う人はdockerの構築部分は読み飛ばしてください

## githubでリポジトリも作成します
githubなんて知らんわ って人も読み飛ばしてください

## 実装内容
タスク作成時・更新時に、事前に作成したラベルを複数付けられるようにする。
タスクに関連付けられているラベルを表示できるようにする。
タスクをラベルで絞り込みできるようにする。

## dcocker構築
[docker公式](http://docs.docker.jp/)

##
まずディレクトリを作成

“`
$ mkdir todo-tag-app
$ cd todo-tag-app
“`
githubで新しいレポジトリを作成

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

元記事を表示

translation missing〜 エラーについて

## はじめに
作成した個人アプリのテストを行っていた際にエラーが出てテストに失敗しました。
調べて解決出来たので、備忘のために残しておこうと思います。

### エラー内容

Userモデルのバリデーションのテストをしていたら以下のエラーが発生し、テストに失敗しました。

“`
translation missing: ja.activerecord.errors.models.user.attributes.nickname.blank
“`

調べたところ、エラー内容としてはdeviseを日本語訳したファイルがないというエラーのよう。
(gem deviseを使ってユーザー管理機能を実装)

### エラー原因

自作アプリで、ページネーションを日本語表示にするために
config>application.rb に ”config.i18n.default_locale = :ja”と
日本語化する設定をしていたのですが、deviseのエラーメッセージに関しては日本語化していませんでした。
そのため、deviseの日本語のファイルがないよとエラーになってしまった

元記事を表示

-これからポートフォリオを作成する方へ- 設計図の作成方法:前半

ポートフォリオを作成する際に、何から始めれば良いかわからない・・・という方に向けて。
第1歩目として設計図を作成する事を強くオススメします。理由は以下の通りです。
>
・自分が今どの部分を実装しているか把握が容易になるため、迷子にならない![スクリーンショット 2020-04-09 23.08.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553621/f5011286-f054-51fa-7f89-fd66f9bfa52c.png)

・少しずつ目標に近く感覚を可視化でき、モチベーションの維持に繋がる
>

そのためにどのようなツールを使用し、どのような物を作成すれば良いかまとめました。

#●使用ツール
こちらはCacooというサービスをオススメします。
https://cacoo.com/

会員登録から一定期間は無料ですので、無料期間中にさくっと作ってしまいましょう。
またPDF出力が可能なので、作成した設計図をPDFとして保存してしまえば無料期間中だけでも事足ります!

#●作成すべき物

元記事を表示

【Rails】 deviseで新規登録後またはログイン後にroot_path以外のページに飛ばす

#deviseで新規登録したけどroot_path以外のページに飛ばしたい…
今までdevise使ってきたけど新規登録やログインをするとroot_pathのページに勝手に戻ってログインしている状態になってたんですが(いやー便利)、サイト作っている途中にroot_path以外のページに飛ばしたことになりまして調べてみました。
##コントローラーに記述して飛ばす
root_path以外のページ遷移は多分コントローラに書かないと出来ないかも
調べてたらapplication_controller.rbにまとめて書く方やそれぞれの動作に合わせてregistrations_controller.rbやsessions_controller.rbに書く方がいましたが今回はapplication_controller.rbにまとめて書きました。

###その前にrails routesで飛ばしたいpathを確認
3e319ab23a667d951a0ea7f6b885d3ee.pngRails メール自動配信機能をActionMailerとwheneverを使用して実装する

Railsで毎日メールを送るためのバッチ処理を、`ActionMailer`とgemの`whenever`を使用して実装しました。

##手順
1. gem `’whenever’`導入
1. `schedule.rb`にバッチ処理を記述
2. `schedule.rb`の内容を登録
1. メールを送信するメソッドを定義
2. viewに送信するメール本文を作成
3. logファイルを確認して実行されているか確認

##環境
ruby ‘2.5.7’
gem ‘rails’, ‘~> 5.2.4’, ‘>= 5.2.4.1’

##前提
1. Userテーブルにemailカラムがあること
1. `ActionMailer`で送信するサーバーの設定が出来ていること
2. メール送信するために必要な`ApplicationMailer`を継承するクラスを作成していること

※ (`UserMailer`という名前で作成済)

## 1. gem `’whenever’`導入

`’whenever’`って?
自動的にメール送信するなど、バッチ処理を行うためにはcronというものを使ってc

元記事を表示

Rrailsにcsvファイルを簡単に読み込めるgemを作る

# 背景
とあるサービスをrailsで作っていたが、初期データが多くてseedにすべて書くのは大変&エンジニア以外にも手伝ってもらいたかったので、csvファイルでseedデータを作ることにしました。
csvファイルをseed.rbで読み込む方法はすでに存在しますが、csvファイル1つずつ読み込んだり、一括で読み込むものもvalidationを無視するものが多いです。かといって、validationを守りつつcsvファイルを読み込むためには、読み込む順番を制御しなければなりません。
コードを書いてると60行ぐらいになり、rubyのメタプログラミング的手法(カッコイイ)も使ったので、練習も兼ねてgem化することにしました。

# 成果物
https://github.com/aitaro/csv_seeder
(よかったら使ってね)

# 他のcsv読み込み系qiita
無限にあったので[検索結果](https://www.google.com/search?q=rails+seed+csv+qiita)から探してください。

# 準備
[RubyGemsの作り方](https://qii

元記事を表示

Railsのscopeを読む

Railsのscopeのソースコードを読んでいきます。

“`
u = User.new(name: ‘sample name’)
“`

scopeを読んでいくために、上記のようなオブジェクトをサンプルとして作成します。

“`ruby
1: class User < ApplicationRecord 2: 3: binding.pry => 4: scope :recent, -> { order(id: :desc).limit(5) }
5: end
“`

中を読んでいきます。

“`ruby

165: # We are able to call the methods like this:
166: #
167: # Article.published.featured.latest_article
168: # Article.featured.titles
169: def scope(na

元記事を表示

可読性 のある書き方

##モデル
人の年齢を表すカラムに「歳」を加えたり、重さを表すカラムに「キログラム」を加えるメソッドは、ビューでのみ使用される見た目を整えるロジックです。このような見た目に関わるロジックは、ヘルパーかデコレーターに記述します。

“`
# ☓:ビューでしか使用しないメソッドをモデルに定義している

# 例) Userモデルにcreated_atを年, 月, 日の形に変換するメソッドを定義している
class User < ApplicationRecord def adjust_created_at created_at.to_date.strftime("%Y年%m月%d日") end end # ◯:ヘルパーファイルにビューで使用するロジックを定義している module ApplicationHelper def set_created_at(created_at) created_at.to_date.strftime("%Y年%m月%d日") end end # ◎:ビューで使用するロジックのうち、表示フォーマットを整えるものを、Drap

元記事を表示

Windows10でのRailsの導入がうまくいかず、WSLを用いた話

#はじめに
Windows10でRailsの環境構築をしたところ、`rails server`コマンドを実行したときにページをうまく表示できなかったので、WSLを用いることにしたときの備忘録です。

#環境

– Windows10(64bit)
– Surface Pro 4
– Ruby 2.6.5

#Windows10での環境構築(失敗)
結局解決せずに諦めたので、興味がない方は読み飛ばしてください。

まず gem 経由で Rails をインストールします。

“`
$ gem install rails -v 5.0.7.2
“`
Rails プロジェクト用のディレクトリを作成し、そのディレクトリに移動してプロジェクト`new-app`を作成します。

“`
$ mkdir workspace
$ cd workspace
$ rails new new-app
“`
`new-app`ディレクトリに移動して`rails server`を実行したところ、次のエラーが発生しました。

“`
cannot load such file — sqlite3/sqli

元記事を表示

素人がWebサービスを作る備忘録(実装編)①

#はじめに
今回は[前準備編](https://qiita.com/bArUsan1Gou/items/28c60172bb840299cea7)、[設計編](https://qiita.com/bArUsan1Gou/items/a8e86bd31a1e141be47e)の続きです。そちらに筆者のスキルレベルやこの記事の目的などが書いてありますので、先にお読みください。

#実装にあたって
ここから実装に入っていくわけですが、稚拙な設計となっている為、かなりの回数の手戻り作業が発生することが見込まれます。その辺りもうまくいかなかった理由と改善策をまとめつつまとめていきたいと思います。
そして、実装にあたり個人的にまとめておきたいと思った昨日の追加などは別途記事にしてまとめていきたいと思います。(その方があとで見返すのとかも楽だし、、、)

そして差し当たり、
 ・ユーザー管理機能
 ・投稿機能
 ・投稿一覧、投稿詳細機能
 ・画像ファイルアップロード機能
 ・ページネーション機能or無限スクロール機能
 ・DBテーブルのリレーション管理
 ・単体、統合テスト

この辺のrailstu

元記事を表示

Railsでデフォルトのアプリケーションサーバ、Pumaについて

##はじめに
今まではあまり気にしてこなかったのですが、そろそろ $ rails server したときに表示されるpumaについて知っていた方がいいなと思い調べたのでまとめておきます。

筆者は初学者なので間違いがあれば優しく教えていただけると幸いです。
##Pumaとは何か
Pumaとは、webサーバとしての機能もあるアプリケーションサーバです。

と言われて、自分は何言ってるのか分からなかったので1から説明します。

###・webサーバとは
ユーザーからのリクエストを必要に応じてアプリケーションサーバに渡すプログラムです。
有名なものではNginx(エンジンエックス)などがあります。
###・アプリケーションサーバとは
webサーバからのリクエストをrailsアプリケーションに渡す橋渡し的な存在です。
例えばユーザーがなんらかのリクエストをwebページに送ったとします。このリクエストは
#####webサーバ → アプリケーションサーバ(Pumaなど) → Rack → Railsのrouter → controller
という風に受け渡されて、アプリケーションで処理が行われま

元記事を表示

Rails入門5: deviseのユーザー情報を利用しよう

Rails入門5: deviseのユーザー情報を利用しよう

———————————————————————————-

#01:掲示板でユーザー情報を使おう
このレッスンでは、Scaffoldで作成した1行掲示板に、deviseを使ってユーザー認証機能を追加します。まずは、どのような機能を作るのか整理しましょう。

このレッスンで作る掲示板
– deviseで作成したユーザー認証に、1行掲示板を組み合わせる
– ログインしている時だけ投稿できる
– 投稿者名をdeviseのユーザー名にする
– 自分の投稿だけ、編集・削除できる

作成手順
– ログイン時だけ投稿できる掲示板を作る
– 1行掲示板の記事に、Emailを表示する
– Userモデルに、nameカラムを追加する
– Userモデルに、ユーザー名を保存する
– 投稿時にログインユーザー名を保存
– 自分の記事だけを編集・削除

参考になるWebページ
– [ASCII.jp:ユーザー認証でなにができる

元記事を表示

Rails入門4: deviseでユーザー認証してみよう

Rails入門4: deviseでユーザー認証してみよう

#01:ユーザー認証機能を理解しよう
このレッスンでは、Railsのユーザー認証用ライブラリdeviseを使って、Webアプリケーションで必要になるユーザー認証の基本を学習します。
まず初めに、ユーザー認証の概要と、deviseの役割を理解しましょう。

ユーザー認証とは
相手を確認してアクセスを許可する仕組みを「ユーザー認証」と呼びます。

ユーザー認証
– 認証:Authentication 本人かどうか確認する
– 許可:Authorization  認証の結果をあたえ、利用許可

deviseの主な機能
deviseは、ユーザー認証の仕組みをRailsに提供するライブラリです。

– サインアップ:ユーザー情報と暗号化したパスワードをデータベースに保存
– メールによるユーザー確認
– ログイン:メールとパスワードによる認証
– クッキーによるセッション管理
– ユーザー追跡:ログイン回数、日時、IPアドレスなど
– パスワードリセット
– ユーザーのロック
– OmniAuth対応:TwitterやFa

元記事を表示

Rails入門3: Railsサービスを機能アップしてみよう

Rails入門3: Railsサービスを機能アップしてみよう

#01:RailsにBootstrapを導入しよう
このレッスンでは、お勧めのお店を投稿できる「ランチマップ」アプリのデザインを整えて、スマートフォン対応と日本語表示を実現します。

まず初めに、HTMLテンプレートのBootstrapを導入します。

RailsのWebページにアクセスするには
– paizaの場合: New Broweserタブに表示されたアドレスに「:3000」を追加する
例 https://xxx.paiza-app.cloud:3000
– 作成した掲示板にアクセスする:https://xxx.paiza-app.cloud:3000/categories

– 自分のPCでrailsを起動する場合: ブラウザで「http://localhost:3000」にアクセスする

※ xxxには、コンテナ名が入ります

RailsのWebサーバーを停止するには
「CTRL」キー(コントロールキー)を押しながら「C」のキーを押します

RailsにBootstrapを導入する
Gemfileを修

元記事を表示

Rails覚書2: 実用的なRailsサービスを作ろう

Rails入門2: 実用的なRailsサービスを作ろう

#01:プロジェクトとウェルカムページを作ろう
このレッスンでは、お勧めのお店を投稿できる「ランチマップ」アプリをRuby on Railsで作ってみましょう。まず初めに、プロジェクトとウェルカムページを作ります。

今回使ったLinuxコマンド
現在のディレクトリ(フォルダ)の位置を確認する。
$ pwd

ファイルやディレクトリの情報を表示する。
$ ls

lunchmapディレクトリに移動する。
$ cd lunchmap

今回使ったRailsコマンド

lunchmapプロジェクトを作成する。
$ rails new lunchmap

Rails用のWebサーバーを起動する
$ rails s -b 0.0.0.0

ウェルカムページを生成する
rails generate controller welcome index

ウェルカムページを修正する
app/views/welcome/index.html.erb

Lunch Map

Tasty meal on your pla

元記事を表示

[Rails6.0 + Nuxt.js] response.headersにcorsのexpose(access-tokenなど)が入らない

## この記事を書くにいたるまで

現在Rails6.0とNuxt.jsを使って適当にアプリを作っています。(Nuxtの練習です
RailsはAPIモード、認証には`devise_token_auth`を使用しており、
Nuxtからaxios経由でpostしてtoken認証を行うアプリになっています。

今回loginをaxiosで行ったのですが、そのresponse(`response.headers`)の中に
`access-token`や`client`などが格納されていないというトラブルが発生しました。
解決すると「こんなことで…」と思いますが、ほぼ1日ハマってしまったので共有です。

## ぶつかった壁
まずnuxt側ですが、以下のようにloginアクションを実装しています。

“`javascript:login.vue
async login(vuexContext, data) {
await this.$axios.post(“/api/v1/auth/sign_in”, data)
.then(response => {
c

元記事を表示

【Rails】 コントローラー、モデルの削除の仕方

#コントローラーとモデルの削除ってどうするの?
Railsでコントローラーを作ったのはいいけど消す時は?ってなったのでこの機会にいつもお世話になっているQiitaの先人様たちと同様に投稿していこうと思う。初投稿だからダメな所あっても優しくしてクレメンスb
##コントローラー、モデルの作成
まぁコントローラー、モデルを作るのはみんな知っていると思うけど知らない人も見るかもしれないので簡単に

“`
rails g controller コントローラー名
“`

“`
rails g model モデル名
“`

では消す時は?

##コントローラー、モデルの削除
ここからが本題であまり消すことのなかったコントローラーを初めて消したいと思って調べました。
で、一番上に出てきたサイトを参考にやってみました。
参考サイト→[リンク](https://yuu.1000quu.com/delete_the_model_and_controller_in_rails)

“`
rails destroy controller コントローラー名
“`

はい、destroyです。

ただこ

元記事を表示

OTHERカテゴリの最新記事