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

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

#Rails / ActiveRecord / 複数形の validates メソッドと 単数形の validate メソッドの違いは? 前者が標準のvalidatorで後者がカスタムのvalidator。

びっくりするぐらい分かりにくいが、きっと命名的に苦慮の末だったのだろう。

# validates (標準)

おなじみのやつ。

![image](https://user-images.githubusercontent.com/13635059/77970201-91c85c00-7326-11ea-86e2-25e2c63c85b0.png)

# validate (カスタム)

こちらは自分でModelにメソッドを作って、ちっちゃなカスタムバリデーターを作る。

[Active Record Validations — Ruby on Rails Guides](https://guides.rubyonrails.org/active_record_validations.html#custom-methods)

![image](https://user-images.githubusercontent.com/13635059/77970138-647bae00-7326-11ea-888e-62d589810171.png)

# Original by Gi

元記事を表示

Library not loaded: libssl.1.1.dylib (LoadError) 発生時の解決方法

#状況

macOS catalina で railsアプリの開発環境を整え終わって、
Windows10環境で開発してたWebアプリをクローンし、いざ`rails server`実行だ!
と意気込んでいたら、見た事のないエラーに困惑…

解決はできたものの、いろいろと調べたら闇が深そうだったので、
自分用にメモを残しておきます。

ついでに同じエラーに悩む方の助けになれば幸いです!

###エラー内容
“`zsh:zsh
dlopen(/Users/kirimaro/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle, 9): Library not loaded: libssl.1.1.dylib (LoadError)
Referenced from: /Users/kirimaro/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle
R

元記事を表示

【Rails】HerokuでAWS s3に画像をアップロードしようとしたらAccess Denied

#事前準備
[Railsでcarrierwaveを使ってAWS S3に画像をアップロードする手順を画像付きで説明する](https://qiita.com/junara/items/1899f23c091bcee3b058#iam%E8%A8%AD%E5%AE%9A)

概要についてはこちらの記事がとても分かりやすかったので参考にさせていただきました。

ただしこのまま`$ git push`すると、アクセスキーがアップロードされてしまうので注意です。
アクセスキーの隠し方については、`heroku 環境変数`とか`gem ‘dotenv-rails’`、`$ heroku config:set ACCESS_KEY=aaaaaa`とか調べると出てくると思います。

#この記事を読むべき人

1. https://myapp.herokuapp.com で画像をs3にアップロードしようとしてもうまくいかない
1. `$ heroku logs`したら`Access Denied`って言われる

この状況の人にはお役に立てるかもしれません。

#手順

元記事を表示

deviseに新しいカラムを追加したけどviewsに表示されない

deviseで作ったusersテーブルに新しくnameカラムを追加、新規登録画面にnameを入れるフィールドを作ったが、なぜかviewsで表示されない問題が解決したので備忘録も兼ねて記事に致します。この記事で少しでも参考になれば幸いです。

結論から申し上げますと、i18nを使うためにはi18n化されたviewsファイルでなきゃ駄目なようです

①自分はdeviseのviewsファイルを作成する際に以下コマンドで作成しました。
“rails g devise:views users“

②そして日本語化もしたかったのでlocaleファイルも作成
“`rails g devise:i18n:locale ja“`

①のコマンドではviewsファイルがi18n化されておらず②と噛み合っていなかったことで、nameフィールドがviewsに表示されなかったと思われます。なので①のファイルを作り直しました。

“rails g devise:i18n:views users“

以後、無事にviewsに表示されてめでたしめでたし。

元記事を表示

docker上でRailsアプリを動かす際に、localhostでアクセスするためのオプション

# はじめに

学習環境を用意するにおいて、コンテナ上に開発環境が用意できることで、

・ホストPCを汚すことなく環境を構築できる
・異なるPC間で同じ環境を使いまわせる
・格好いいと感じる

といった理由からRailsアプリをコンテナ上で作って動かしてみましたが、ホストからの動作確認で引っかかったのでメモします。
※動かしたのはscaffoldレベルのアプリです

# 先にまとめ

先に問題と解決をまとめて書いておきます

– 問題
– コンテナ内で起動したRailsアプリにホストからアクセスできない
– 解決方法
– Railsアプリを立ち上げる際に、`-b 0.0.0.0`をオプションとしてつける

## 以下、やったこと

まとめにたどり着くまでの状況をつらつらと

### 準備

ポートフォワードの設定をしてコンテナを立ち上げる

“`
(ホスト)$ docker container run -it -p 30000:3000 /bin/bash
“`

コンテナ内でアプリを作る

“`
(コンテナ)# rails new scaffold_sample
(コ

元記事を表示

dockerでGemfile(gem追加)更新したら後、データベースが消えた、gemが反映しない

サーバーを再起動してますか????

#dockerではない通常開発の場合

“`:dockerなし
control c でサーバー終了
rails s
“`
これでgem反映します。

ということはdockerもサーバーを再起動しなければいけない。

“`:dockerあり
$ docker-compose restart
“`
これで反映されます。

元記事を表示

仮想環境でRails API × Nuxt.jsのアプリケーション開発をしたいが、まずブラウザに表示されない!

## 自己紹介
– 現在プログラミングの学習中の者です
– 言い回しや知識に関して、諸所間違い等あるかと思います
– その際は、ご指摘いただけますと幸いです

## やりたいこと
RailsをAPIとして使用し、Nuxt.jsをフロント側に使用する開発において、
それらを**仮想環境で**開発を開始すること。

具体的には、@saongtx7様が書いてくださった
こちらの記事を仮想環境で進めたいと思ったことがきっかけです。

**[入門]Rails API × Nuxt SPA × Firebase Authで作る Todo Appチュートリアル**
https://qiita.com/saongtx7/items/d97ef5aec393e704fd3f

本当に素晴らしいチュートリアルでした。
この場を借りて感謝申し上げます。

## 問題点
私の場合このような問題が起こりました。
#
– Rails側でポート指定をしてもブラウザに表在されない(rails s -b 5000)
– Rails側でポートを指定せずに起動した場合、Nuxt.jsとポート番号が競合する

## 結論

元記事を表示

Railsでテストアカウントでの簡単ログインの実装方法

#はじめに

ポートフォリオで実装必須な、「テストアカウントでの簡単ログイン」
ポートフォリオくらいでしか使用しないため、記事が少なく、deviseのコントローラ作成方法、エラーの対処法についても、いろんな記事に散らばっていたので、まとめていきます。

どなたかの参考になれば幸いです!

また、私自身、参考記事を元に手探りで実装したので、
誤っている部分があればご指摘いただけますと幸いです:hatched_chick:

#開発環境
– Ruby 2.5.1
– Rails 5.0.7.2

#もくじ
1. devise用コントローラーの作成
  (1)コントローラ作成コマンド
  (2)作成したコントローラの確認
  (3)ルーティング の設定
2. SessionsControllerの編集
  (1)Userモデルにクラスメソッドguestメソッドを作成
  (2)コントローラにnew_guestアクションを定義
  (3)ハマりポイントを解説
3. 参考記事

#1.devise用コントローラーの作成

ログインするためのメソッドを記載するコントローラが必要なので、作成

元記事を表示

railsのルーティングからOpenAPI(V3)ドキュメントを自動生成・管理するツールを作成し、10ヶ月間会社で運用した話(下期編)

前回、[railsのルーティングからOpenAPI(V3)ドキュメントを自動生成・管理するツールを作成し、4ヶ月間会社で運用した話(開発秘話もあるよ)
](https://qiita.com/yukihirop/items/670e843a1cdf50621ca8)という記事で下期の進捗も報告すると書いたのでその記事になります。

## 使用したツール

自分で作った[r2-oas](https://rubygems.org/gems/r2-oas)です。

## 4ヶ月の実績

※会社の許可をとりデータを載せております。

## 全体の実績

赤線が目標ライン。目標は、5個/週 です。

![スクリーンショット 2020-03-30 11.04.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113181/548231cd-3c35-270c-f988-d55023af9376.png)

## 各週の実績

10月の中旬に進捗がないのは、他のプロジェクトを引き継ぐために必死だったからです。
着手

元記事を表示

Rails ウィザード形式導入について 1

#はじめに
Qiitaサボっておりましたが、学習は継続してしっかりやっております!
むしろチーム開発を通じて、アプリ開発が楽しくてたまらない状態です!
しかし、サボりっぱなしは気持ちよくないので、リスタートさせてください(泣)

上述の通り、チーム開発でフリマサイトを開発致しました。
その際、ユーザーの新規登録画面でウィザード形式を導入致しましたので、内容を整理します。
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご教授願います。

#ウィザード形式とは
– 世に出ているアプリ等でも見かける画面が切り替わりながらユーザー等の登録を行うもの
– ウィザード形式とは、対話するように順番に操作が進んでいくインターフェースのこと

#なぜウィザード形式が必要なのか
– 使いやすくなる
– UXのクオリティが高まる

私自身も「使いやすい」、「何がどこにあるのか」が分かり易いアプリは、いい印象です。
え? そんなところをクリックできたのか!
マイページに飛んで、また入力か。

それらを回避できるイメージです!

#前提条件
– 今回はuser情報に併せて、destination(住所)情報

元記事を表示

everydayrailsで Selenium::WebDriver::Error::WebDriverError: がでた (geckodrive)

macosです。

追記: すいません。この記事ではfirefoxを使えるようにしたのですが、chromeを使うべきだそうです。
# 「ドライバのダウンロード」

Unable to find Mozilla geckodriver. 
というエラー文が出ていたので、(実際に出たエラー文cpし忘れたのでこれじゃないかもしれませんがほぼこれです) **geckodriver** をダウンロードする。

ダウンロードは
https://github.com/mozilla/geckodriver/releases
このURLからした。

macos,linux,winなどいくつか種類があるので自分のPCにあったのを選ぶ。

# 「ドライバをPATHに置く」

とりあえず初心者でPATHの設定が初めてだったのでディレクトリをDesktopに作成し、そこにブラウザでダウンロードしたgeckodriveを入れといた。

実際にPATHを通す

ターミナルで一応
`$ echo $PATH`
でPATHを確認(しなくていいけど)すると

`/いつも通り出てくるデフォルトのPATH/`
になってる

元記事を表示

【Rails6, heroku】初めてのデプロイ(MySQL使用)

せっかく開発したならデプロイして世間に公開したくなるのが世の常ですね(?)
AWSは個人開発で使うには複雑で、ランニングコストも馬鹿にならん。けど、管理もデプロイも簡単にしたいなーってなったらherokuでデプロイしてみましょう。

#対象読者
・初めてherokuでデプロイする人
・herokuでMySQLを使いたい人
・楽にデプロイしたい人

#参考記事
[railsアプリをgithubとherokuにpush](https://qiita.com/naoge/items/295ed2cb4279d86f7dae)
[【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39)
[Herokuへのデプロイ方法【Heroku+Rails+MySQL】](https://qiita.com/murakami-mm/items/9587e21fc0ed57c803d0)
[Railsアプリでherokuを使うときのDBをMySQLに変更

元記事を表示

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

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

解決

“`
brew install postgresql
“`

## 参考

https://qiita.com/masanarih0ri/items/5ad2f7e11c8c94170d6b

元記事を表示

Vagrant環境で、rails db:dropでエラーになるトラブルシューティング

# 環境
Vagrant + Ubuntu 16.04.5 LTS
Rails 5.2.4.2
ruby 2.5.1p57

# はじめに
rails db:createした後に、rails db:dropをすると、下記のエラーが出た時のトラブルシューティング

“`
$ rails db:drop
Text file busy @ apply2files – /vagrant/test03/db/development.sqlite3
Couldn’t drop database ‘db/development.sqlite3’
rails aborted!
Errno::ETXTBSY: Text file busy @ apply2files – /vagrant/test03/db/development.sqlite3
/vagrant/test03/bin/rails:9:in `
/vagrant/test03/bin/spring:15:in `
bin/rails:3:in `load’
bin/r

元記事を表示

Rails 404エラー画面を設定した時にrefileで設定した画像が表示されなくなる

# 概要

備忘録代わりに書かせていただきます

Railsでroutesの最下行に

“`ruby:routes.rb
get ‘*path’, to: ‘application#render_404’,
“`

でどのパスにもいかなかった場合に404エラーを独自で出力するように設定した場合に、
Refile等で指定されたattachment_image_tagの画像が表示されない。

# 原因

ログを見たらすぐに分かるんですけど、attachment_image_tagでURLを生成して、GETを送ってRoutesを通る時にrefileではroutesの設定が無いので、当てはまるパスがなく404のgetを返してしまうという話。

#解決法
もっと綺麗なやり方があるのかもしれないですけど、とりあえずRoutesのconstraintsを使ってrequestオブジェクトのurlに”attachments/”が含まれている場合は404の行を通らないようにして回避しました。

もっといい方法100%あるような気がするので、よかったらコメントで教えていただけると嬉しいです。

“`

元記事を表示

モデル使わず指定位置を簡単にGoogleMapで表示(複数地点可)

## はじめに
初投稿です、プログラミング歴は半年弱ほどなので、誤りがあるかもしれません。
ご指摘いただけると幸いです。
今後は、gmaps4railsを用いた現在地取得機能や、ジオコーディング機能(位置情報を入力すると緯度と経度に変換する)についても書いていこうと思っています。

記事制作の励みになりますので、いいと思ったらLGTMしてもらえると嬉しいです。

## 対象者
– 時間がない人
– ポートフォリオに地図を組み込んでオリジナリティを出したい人
– 決まった位置を地図で表示させたい人
– 指定する位置が決まっており、データベースを使う必要がない人

## 環境
Rails 5.1.6

## この記事を読んで何ができるか
1. こんな感じの地図が作れます。
完成した地図

2. このように複数地点表示

元記事を表示

コーディング未経験のPO/PdMのためのRails on Dockerハンズオン、Rails on Dockerハンズオン vol.13 – TDDでPost機能をコーディング part2 –

# はじめに
こんにちは!
今回は前回のPost機能のコーディングの続きです。ユーザー詳細ページでそのユーザーが投稿したポストに絞って表示させる機能をコーディングします。

# 前回のソースコード
前回のソースコードはこちらに格納してます。今回のハンズオンからやりたい場合はこちらからダウンロードしてください。

– https://github.com/at946/rails_on_docker_handson/tree/vol.12

# 前回の残り
まずは前回やり残したテストシナリオをもう一度確認しておきましょう。

1. ポストページでポスト未入力のユーザーが、「ポストする」ボタンをクリックしたとき、ポスト投稿は失敗しポスト未入力のエラーメッセージを確認できること
– ポストページでポストを141文字以上入力したユーザーが、「ポストする」ボタンをクリックしたとき、ポスト投稿は失敗しポスト文字数超過のエラーメッセージを確認できること
– ポストページでポストを正しく入力したユーザーが、「ポストする」ボタンをクリックしたとき、ポスト投稿が成功しポスト入力フィールドがクリアされ、ポスト

元記事を表示

あなたの日本語をRails語に翻訳する辞書 データベース編

#はじめに
TECH CAMPというプログラミング教室に40日ほど通った添野です。
本日はRailsで重要な概念「**データベース**」という概念を説明していきます。

皆さんはRailsにおける「**データベース**」が何なのか説明できるでしょうか?
この記事を読めば、**かなり具体的**に説明できるようになります。

※MySQLの使用を前提に記事を書いています

#結論
データベースとは「**配列に入った配列に入ったハッシュ**」です。
わかりやすく説明するため、**徐々に進化**させて説明していきます。

**値**
雑魚敵。ドラクエでいう「スライム」です。
最終的に**ビューで表示したい**のはこいつです。

“`
りんご
“`

**配列**
雑魚敵の集合体です。ドラクエでいう「キングスライム」です。

“`
[りんご , ゴリラ , ラッパ]

簡略化すると:
[A,B,C]
“`

**配列に入った配列**
キングスライムの集合体です。キングスライムって進化すんの・・・?
Rubyというゲームの場合は無限に進化します。

“`
[ [りんご ,

元記事を表示

VS codeの初期設定とRuby on Railsの環境設定

初期設定につまづくとかなり時間をロスするので、まとめることにしました
# VSCodeの初期設定
## VSCode(Visual Studio Code)をインストール
1. [VSCodeダウンロードページを開く](https://code.visualstudio.com/)
![スクリーンショット 2020-03-31 5.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/676793f7-9452-c1e2-879b-3cbe7ea9c825.png)
2. Download for Macをクリックして、ダウンロードを完了します

## VS Codeに拡張機能を追加

### 追加する拡張機能

– Japanese Language Pack for Visual Studio Code →日本語表記にします。

![スクリーンショット 2020-03-31 5.56.45.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

[devise]現在ログインしているユーザ名が表示されない場合の解決策

#環境
| |バージョン|
|:—————-:|:—————–:|
|ruby |2.6.5|
|rails |5.2.4.2|
|devise |4.7.1|

# 目標
現在ログインしているユーザの名前を表示させたい。

# 問題
[@yasuno0327](https://qiita.com/yasuno0327)氏が公開していた[devise にusername カラムを追加し、usernameを登録できるようにする。](https://qiita.com/yasuno0327/items/ff17ddb6a4167fc6b471)を参考にして実装したところ以下のようなエラーを吐いた。

“`:Error
undefined method `username’ for nil:NilClass

(意訳)
NilClassのnilオブジェクトに`username`メソッドは定義されてないよ
“`
# 解決策
“`:_current_username.html.erb
<% if us

元記事を表示

OTHERカテゴリの最新記事