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

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

[Rails] VScodeで.erbファイルにHTMLタグをサクサク出せるようにする

これをインストールする
https://marketplace.visualstudio.com/items?itemName=CraigMaslowski.erb

元記事を表示

circleci ビルドができない、、、

## ビルドすることに苦戦しすぎているので、備忘録メモ。まだ完璧に解決できていないが、一歩進んだので投稿

##本題の前に一言
circleciのエラー文って不親切やし、めっちゃ難しい。dockerをちゃんと勉強しろってことなのか。
改めて現役エンジニアを尊敬する。

##参考URL
https://github.com/docker-library/mysql/issues/129#issuecomment-178265632

##登場ファイル
1. .circleci/cofing.yml
2. database.yml
3. docker-comopose.yml

##今回の抱えている問題
・MySQL、コンテナの立ち上げ失敗←今回で解決できていないが、前進した。
・コンテナの立ち上げに失敗しているからdb:createも失敗
・rubocopを実行できていない(db:createをできていないから?)
・/tmp/test-resultsがあるのに、Not Foundになってしまう←今回で解決できていない。

##ファイルの中身(エラー発生時)
“`.circlec

元記事を表示

Mysql2::Error::ConnectionErrorを解決します

## 環境/バージョン
ローカルでやってます
Ruby v2.5.1
Rails v5.2.4
MySQL v8.0.19

## 何が起こった?

railsプロジェクトを作成したあと、`rails s’してみたらこんなエラーに遭遇

“`shell
Mysql2::Error::ConnectionError (Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)):
“`

## どうやって解決した?

エラー文からみてわかる通り「あ、MySQL」かとすぐわかります。

`ConnectionError`とあるので「繋がっていませんね〜」ってすぐわかります。

`database.yml`を調べて見る。

“`yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:

元記事を表示

Rails6のAPI使用でCookieを有効にする

## 概要
RailsでAPIを使用するときに、セッション等でCookieを使いたくなる時があると思います。調べるとけっこう記事が出てくると思いますが、何種類か対応方法があるみたいで、今回はRails6でも上手くいった方法を書きます。

## 対応
### 【application_controller.rbの設定】
* `ActionController::Cookies`を読み込みます。記事は[rails-apiでcookieを使う](https://pocke.hatenablog.com/entry/2016/06/23/193232)を参考にしました。
* CSRFトークンチェックを回避したい場合は`skip_before_action :verify_authenticity_token`で回避してください。`protect_from_forgery with: :null_session`だとCookieが使えなくなります。なお、[[Rails] CSRFトークンチェックでエラーになるのを回避する方法](https://qiita.com/jshimazu/items/d

元記事を表示

gemでインストールしたrailsコマンドがなぜ使えるのか??

はじめに

※windowsのローカル環境下です。※

表題の通り、気になったので調べました。

bin/railsで実行するかrailsで実行するか??

まずは事前知識として、bin/railsで実行するかrailsで実行するか??

結論、どちらを使っても基本問題ないですが、参照元が違います。

binをつけるとプロジェクトディレクトリを参照。

binを付けないとローカル(グローバル)のrailsを参照。

続いて本題。

gemでインストールしたrailsコマンドがなぜ使えるのか??

railsコマンドはローカル環境変数でPath通してるはず。。。

→これはとても浅い勘違い!!

railsは以下のようにgemでインストールして

元記事を表示

☆初投稿:TECH CAMP学習、個人アプリ作成①、駆け出しエンジニア

# TECH CAMPに通い出して
初めて投稿させていただきました。
TECH CAMPの夜間コースに通い出して3ヶ月が経ちました。
カリキュラムではわからないことも沢山あり、その都度Googleで調べたり、メンターさんに質問したりと、苦労も沢山ありました。エラーを繰り返しながらも、無事に動いたときというのは何とも言えない喜びもありました。

諸々、何とかこなし、いよいよ個人アプリ開発となりました。

正直、現在も試行錯誤の連続でありますが、やはり自分のやっていることというのは、時間がたつと忘れてしまうこともありますので、自分が苦労して解決したことなどは記録していった方がよいと考え、投稿させていただきました。

まだまだ不慣れであり、かつ知識も未熟なため、書いてあることが間違っていることもあるかもしれませんが、はっきりいって投稿することに意味があるのだと思いましたので、間違っているところははっきり指摘していただけたら嬉しいです。

個人アプリの作成時、viewを表示させようとしたのですが
まずは以下のエラーがありました。

![image.png](https://qiita-ima

元記事を表示

Railsでdeviseを追加したいのにbundle installができない

dockerで環境構築を行いgemの追加をした際にエラーが発生しましたので
備忘録として情報共有しようと思います!
#開発環境
docker
rails (5.2.0)
ruby (2.7.1)
mysql (5.7)
nginx
puma

※docker-compose buildでgemの更新をしますが時間がかかるので下記の記事を参考に
gemの更新を素早くする設定をしています。
 https://qiita.com/neko-neko/items/abe912eba9c113fd527e

#エラー内容
Gemfileでdeviseのgemを追加し、**docker-compose run –rm rails bundle install**をしたところ以下のエラーが発生

“`
~ RailsApp % docker-compose run –rm rails bundle install
Starting railsapp_db_1 … done
Fetching gem metadata from https://rubygems.o

元記事を表示

dockerでrails+mySQLの環境構築したけどlocalhost:3000にアクセス出来なくて困ってたら驚愕の事実が発覚した話

[こちらの記事](https://qiita.com/azul915/items/5b7063cbc80192343fc0)を参考に、docker-composeでrails+mySQLの環境構築をしてみた。

DBの作成まですんなり行き「docker最高!!!!!!!!」みたいになってたが、localhost:3000にアクセスすると「このページは動作していません。」と返ってくる…

うーわ、最悪

環境構築には嫌な思い出しかない。
一度virtualboxとvagrantで環境構築したとき無限にエラーが出続けて「これはもう神がプログラミングをやめろと言っているのでは???」みたいになって以来、環境構築という単語を聞いただけで寒気がしてくる。

まあプログラミングの学習をする上で避けては通れない道なのでやるしかない。

とりあえずコンテナ内のサーバーが起動しているか確認。

“`コマンド
$ docker exec -it コンテナ名 bash
**** # curl http://localhost:3000/
“`

コンテナの中に入ってlocalhost:3000にアクセス

元記事を表示

Railsでhtml.erbのclassを条件付きで追加する方法

#概容

下記のクラスに「ある条件」の時だけクラスを追加したいとする。

“`ruby

“`

例えば今回は`users_controller`の時だけクラスを追加するとする。
その場合の条件式は下記のようになる。

“`ruby

productionとdevelopmentをなぜ使い分けるのか

## railsになんでわざわざdevelop(開発環境)とproduction(本番環境)を使い分けているのか判明したので記録

相変わらず表面的な知識なので、誰かツッコミを入れてくれると嬉しいです。
それではいってみよーーーーーー!!!!!

###development(開発環境)
– 長所

エラーが発生すれば、詳細を表示してくれたりする。

– 欠点

詳細を表示してまうと、ソースコード情報が外に漏れちゃうからセキュリティ的な脆弱性がある

###production(本番環境)
– 長所

エラーが発生してもコードの詳細を表示しいひんから、安全性・安定性が高い

– 欠点

エラーが起こっても、「何か例外が発生したよ」ぐらいしか教えてくれない
(最初どうやってエラー見るねんって焦った)

###まとめ
セキュリティの観点から、本番デプロイ時には**production**でrailsを動かす必要があるんやね!

元記事を表示

[Rails]form_forを使ったselect-boxの注意点

form_forを使ったselect-boxにはrubyオプションとhtmlオプションが存在する。

双方のオプション記述場所を誤ると実装に反映されないため注意が必要!
オプションの種類に関しては公式ドキュメントを見ると簡単に理解できるであろう。

Ruby公式▼
https://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

html公式▼
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select

参考にしてください!

元記事を表示

Docker&Rails環境で、gemを永続化させる

# 本記事について(お断り)

この記事は、しがないプログラミング初心者がお勉強よろしくプログラミング・技術に触れるべく、行ったことの備忘録として書き綴ったものです。ご了承ください。
ご指摘は甘んじて受け入れます?‍♂️

# 起こったこと

とあるプロダクトでおもむろに`docker-compose up`してたら、

“`bash:

web_1 | Bundler::GemNotFound: Could not find gem ‘rspec-rails’ in any of the gem sources listed in your Gemfile.

myapp_web_1 exited with code 1
“`

と怒って勝手に出て行ってしまった。
おかしい、確かにインストールしたはずのgemがないとは、、、

一度落として、再度`docker-compose build`すると問題なく動いた。
まあこれでもいいんだけど、毎回ビルドしてコンテナ起動するのは面倒だと思う。

調べてみると、volumeの永続化を行うことで、こうした問題が解消されるとの

元記事を表示

form_with を使った検索フォームに初期値 value を設定する方法

筆者はRails6.0ですが、Rails5(Rails4も?)でも動くはずです。またSearchkick(Elasticsearchを簡単にするGem)を使っているので、もしかすると環境依存があるかもしれません。

最新のRailsでは`form_with`を使った記法が推奨されています。しかしこと検索フォームの作成においては、未だに情報が少なく苦戦したのでメモ。

## 正解のコード

“`erb
# index.html.erb

<%= form_with model: @post, method: "get", local: true do %>
<%= text_field_tag :search, params[:search], class: "form-control ds-input", placeholder: "検索‥" %>
<% end %>
“`

初期値valueを入れる場合は`text_field`は使えないようです。form_withを使っているのでURLの指定は不要ですが`method: “get”, local: true`の記述は

元記事を表示

Rails5でECサイトを作る⑤ ~Customerモデル編~

# はじめに
架空のベーカリーで買い物できるECサイトを作るシリーズ、[Rails5でECサイトを作る④](https://qiita.com/GreenFingers_tk/items/58e04fbaf754fe33e294)の続きです。
ようやく機能の実装に入ります。まずは顧客サイトの親モデル周辺機能から順番に……ということで、今回はCustomerモデルのCRUDを中心に作ります。

# ソースコード
[https://github.com/Sn16799/bakeryFUMIZUKI](https://github.com/Sn16799/bakeryFUMIZUKI)

# deviseのコントローラ
deviseで新規登録できず、何でだろうと思ったらコントローラ側にパラメータの許可を与えていなかったためと判明しました。

“`ruby:app/controllers/customers/registrations_controller.rb
class Customers::RegistrationsController < Devise::RegistrationsC

元記事を表示

rails の API doc作成ツール apipie-rails

rails で RESTful APIを作るに当たって、ドキュメンテーションツールを導入してみました

https://github.com/Apipie/apipie-rails

# 背景

rails でフロントとバックエンドと別々の担当者が作業しようとしたときに、フロントから受け渡されるべきパラメーターはなんで、その結果どんな結果がわたるのかどうやってドキュメントしようかなと。。

javadocみたいに定番の書式があるわけではなさそうなので、gem周りで検索してみました。

さらに、世の中の定番としては こんなかんじなのかな
https://qiita.com/jian-feng/items/c79955713e6dd8b5244a

結果としてたどり着いたのが、 apipie-rails です

## 何が出来るのか

1. ソースコード上にDSLを使ってAPIインターフェースを定義できる
2. Webサーバー経由でHtmlドキュメントとして可視化された情報にアクセス出来る
3. 引数のバリデーションをする → ArgumentError exception が上がる

元記事を表示

[Docker][Rails] 新しくGemを導入した後の3コマンド

# これはなに
Railsでアプリ開発中新しくGemを導入した後、若干躓いたので備忘録として残します。
ご指摘等あれば頂けると幸いです。

# 3コマンド

“`
gem bundle install
“`

“`
docker-compose run web bundle install
“`
参考記事
[Docker Compose + Railsでイメージ内でbundle installしているはずなのにgemが無いとエラーがでる。](https://qiita.com/hokita222/items/49f4ca54835e08fdd6b2)

“`
docker-compose restart
“`
参考記事
[dockerの起動、停止、再起動](https://qiita.com/tanakin_prog/items/6e6219a62e7a05eb22c2)

以上です!ありがとうございました!

元記事を表示

Elasticsearchで多対多&階層化されたカテゴリーを検索対象に含める方法

## 前提
以下の前提で、ひとまずローカル環境(`Rails s`)での検索を実現する

– Ruby on Rails で多対多のモデル(例としてPostとCategoryとします)を使っている
– Ancestryを使ってモデルを多階層にしている(Categoryが多階層です)
– Elasticsearch と Kibana がインストール済み
– Searchkick(Elasticsearchを簡単にするGem)を使って検索をしたい
– Postを検索するときに検索対象にCategory.nameを含めたい

`Post`と`Category`が中間テーブルを使って多対多の関係であり、Categoryだけ多階層になっている。ER図を書けたら書く。

### 構築がまだの方へのおすすめ記事

中間テーブル実装後にカテゴリ別ページを表示
https://qiita.com/otterminal/items/a8859a1fad0027a9bc5b

多階層カテゴリでancestryを使ったら便利すぎた
https://qiita.com/Sotq_17/items/1202562

元記事を表示

[Rails]gem ‘ancestry’による多階層カテゴリーの導入[備忘録]

# はじめに
初めて記事を投稿します。
某プログラミングスクールの課題でフリマアプリを作っていて、
gem ‘ancestry’を導入してカテゴリー機能を実装したのでメモしておきます。
以下のようなものを目指します
![FURIMAancestry.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652806/966fbc65-b23c-8a4d-df07-87b1059339bd.gif)

なお、この記事ではデータベースにカテゴリーを入れて表示するところまでを記述します。
# 前提
Productモデル(カテゴリーを追加したいモデル)とCategoryモデルは実装してある。
大丈夫だとは思いますが、’Category’の複数形は’Categories’なので、
使うときは注意しましょう。(周りにそれが原因でエラーを出していた人がいたため。)

# 導入
初めて使うgemのときは公式ドキュメントをまず参照。
https://github.com/stefankroes/ancestry

“`ruby

元記事を表示

Mobile Safari は再起動時に POST リクエストする場合がある

Rails アプリケーションで、iPhone の Safari からのリクエストでだけ `ActionController::InvalidAuthenticityToken` 例外が発生するので調査していたところ、Mobile Safari は再起動後、開いていたタブをロードする際に、POST リクエストで得たページであっても再度リクエストを送信しているらしいことがわかった。

※ iOS 13.5.1 の iPhone 11 で検証

# 検証方法
下記の Ruby スクリプトを作成して `ruby server.rb -o 0.0.0.0` で起動

“`ruby
# gem install sinatra が必要
require “sinatra”

html = <<~HTML



HTML

get “/” do

元記事を表示

エラー:Trying to get property ‘id’ of non-object

# 解決法
このエラーはそのObjectには、idというプロパティはないのに、取得しようとしているという意味なので,idがnullになっている可能性が高い
そのnullに値を入れれば解決するはず、、

元記事を表示

OTHERカテゴリの最新記事