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

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

【Ruby on Rails】Missing :controller key on routes definition, please check your routes. (ArgumentError)というエラーを解決した話

#結論

* routes.rbを書き直す

#現状

rails sを実行すると見たことないエラーが

![スクリーンショット 2021-08-17 16.23.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/203ddfc6-cf54-2c03-3984-0c71cb6f0cd8.png)

#解決策

###1.原因

訳すと
「routesのコントローラーキーが見つからないから、routes見てくれ」という感じ。

###2.対策

素直にroutes.rbを見てみたら確かにコントローラーキーがおかしかった

“`routes.rb
get “articles/new” => “articles#new”
““

と変更すればOK!

####投稿者コメント
見たことないエラーだったので記事にまとめてみました。
ちゃんとエラー文を読むこと大事ですね!

####My Profile
プログラミング学習歴3ヶ月目のアカウントです!
プログラミングスクールで学んだ

元記事を表示

bcrypt-rubyのmodule BCryptのソースコードを日本語訳する

Railsチュートリアル9章に出てきたBCrypt::Password.new(remember_digest).is_password?(remember_token)が初見では理解できなかったので、このコードの大元であるmodule BCryptを日本語訳します。

“`ruby
module BCrypt
# A password management class which allows you to safely store users’ passwords and compare them.
#ユーザーのパスワードを安全に保管し、比較することができるパスワード管理クラスです。
#
# Example usage: 使用例:
#
# include BCrypt
#
# # hash a user’s password ユーザーのパスワードのハッシュ化
# @password = Password.create(“my grand secret”)
# @password #=> “$2a$12$C5.FIvVDS9

元記事を表示

zeitwerkとは

#Zeitwerkとは
***Railsのライブラリなどを読み込むための機能です。***

ちなみに
***⚫︎ライブラリとは***
便利な機能を使えるようになるアプリです。

#zeitwerkエラー
***zeitwerkエラー***とうエラーが発生する場合があります。

例えば
ルーティングをapi/v1をエンドポイントにしているのにもかかわらず
全く関係ないconcernフォルダにあってうまく読み込みができない

このように***うまく読み込みができず発生する場合があります。***

元記事を表示

【Rails】定義されているRailsコマンドを確認する。

## 定義されているRailsコマンドを確認する
“`
$ rails -vT
“`
このコマンドを打つと以下のように、定義されているコマンドとその説明が表示される。

“`
rails about # List versions of all Rails frameworks and the environment
rails action_mailbox:ingress:exim # Relay an inbound email from Exim to Action Mailbox (URL and INGRESS_PASSWORD required)
rails action_mailbox:ingress:postfix # Relay an inbound email from Postfix to Action Mailbox (URL and INGRESS_PASSWORD required)
rails action_mailbox:ingress:qmail # Re

元記事を表示

Couldn’t find User with ‘id’=を解決する

# はじめに
本記事では、
`ActiveRecord::RecordNotFound~`の
`Couldn’t find User with ‘id’=`というエラーを解決しましたので、
アウトプットします。

![画像とユーザーのidがリンクしてしまったエラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1768158/2de74b8d-25c0-561b-0100-64cd3340124f.png)

# エラーが出ていたコード
編集(edit)→updateの実装をできるようにしておりましたところエラーが出てしまいました。
無事に編集できれば、マイページに遷移できるようにしようとしています。

先にコードを載せます。

“`users_controller.rb
class UsersController < ApplicationController def show user = User.find(params[:id]) @nickname = user.n

元記事を表示

SQLiteをProductionで使えない!?チューニングしよう!SQLite3::BusyException: database is lockedが出た時の対処法

## SQLiteはProductionで使えない?!

よくSQLiteは遊びだけということ言われますが、実は結構SQLiteだけで行けます。
少なくとも趣味で作るサイトだと、そもそもそんなにトラフィックも来ないですし。

今ちょっとしたRailsのジョブバックエンドのGemを作っていて([Belated](https://rubygems.org/gems/belated)), そしてこのGemはSQLiteで使えて、かつRedisなくても簡単に誰でも使えるようにしようとしています。

ですが、今簡単な負荷テストをやっていて、そこで
`ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked`
というエラーが発生してしまいました。これはライトしている時にリードしようとしたからです。

しょうがない、PostgreSQLにするか・・・とも思ってしまいがちですが、実はSQLiteは同時にライトとリードを可能にするWALモードがあります。別ファイルに先にコミットされる内容を書いて、またそこからD

元記事を表示

ページごとにturbolinksをON/OFFする【Rails】

## 問題
CSSフレームワークを使ってたり、JSによるDOM操作がCSSに依存するようなコードを書いてるとturbolinksのせいでレイアウトがステートレスじゃなくなってバグる。

## 解決策
headタグ内に

“`applictaion.html.haml
%meta{name: “turbolinks-visit-control”, content: “reload”}
“`
を追加するとフルリロードされ、window.onload, turbolinks:load’も両方発火する。

これをページ毎に設定するには

““applictaion.html.haml
– pages = {“users”=> [“new”, “edit”], “items”=> [“new”]}
– if pages.map {|c, a| true if (c == contoller.conroller_name && a.include?(controller.action_name)).include?(true)
%meta{name: “turbolinks-visit

元記事を表示

[React×Rails]APIモードでの開発の流れ

# はじめに
最近はフロントエンド技術が盛り上がってきたことで、フロントエンドとバックエンドを分離して開発する事が増えました。そこでRailsではAPIモードを使用して必要な情報を渡すのですが、何しろモダンなやり方なので参考資料が少ないです。そこで、備忘録的にまとめておこうと思います。

# 注意点
あくまで開発をしていく上での流れを掴めればいいと思うので、細かいことは省いているのでご了承ください。

## Rails側の実装の流れ

1.APIモードでプロジェクトを立ち上げる。

“`bash
$ rails new アプリ名 –api
“`

2.モデルの設定(migrationやseed、バリデーションなど)を行う。

3.ルーティングの設定を行う。
※namespaceを用いることで理解しやすくなります。

“`routes.rb
Rails.application.routes.draw do
# namespaceを利用することで、理解しやすくなる
namespace :api do
        # 開発途中でAPIの仕様を変更する場合に備えURLにバー

元記事を表示

【PostgreSQL】起動と停止

###1.背景
Ruby on Railsを主に学習しています。
PostgreSQLはアプリを作成して`-d` でデータベース指定しておく、という認識でした。
(自動で作成してもらえるので仕組みを理解できていなかったです…)

“`ruby
cd XX # 作成したいフォルダに移動
rails new sample_app -d postgresql # データベースを指定
rails db:create  # データベースを作成
“`
現在Rubyでアプリ作成をしており、PostgreSQLについて学習しているので備忘録としてまとめます。

###2.環境
– mac.os バージョン10.15.6
– Ruby 2.7.3
– Rails 6.1.3.1
– psql (PostgreSQL) 12.6

###3.手順
####①導入

“`
brew install postgresql
brew services start postgresql
“`

####②起動と停止
#####その1

“`sql
hogehoge@hogenoMacBook-Air

元記事を表示

ActiveRecordのhook(after_create / after_create_commit)とtransaction

## 気になったこと
ActiveRecordのhookはかなり便利で、レコードのCRUDに合わせてさまざまな処理を入れることができます。
hookした処理内でエラーが発生した時のレコード操作はrollbackされるのかちょっと気になったので確認しました。

## 結論
after_create
=> hook内でエラーが発生した時にはレコード操作がrollbackされる

after_create_commit
=> hook内でエラーが発生してもレコード操作はcommitされている(それはそうですよね)

## 前提
ActiveRecordをテストするので何もないテーブルを作成。

“`rb
create_table :tests do |t|
t.string :hoge
end
“`

## after_create

“`rb
class Test < ActiveRecord::Base after_create :raise_error def raise_error raise 'after create error' end end

元記事を表示

ActiveRecord::ConnectionNotEstablishedの解決方法

下記のようなエラー文が出たので、一つづつ紐解いて対処していく。

“`
ActiveRecord::ConnectionNotEstablished (could not connect to server: No such file or directory

Is the server running locally and accepting

connections on Unix domain socket “/tmp/.s.PGSQL.5432”?
“`

> ActiveRecord::ConnectionNotEstablished

dbとの接続がうまくいっていないという意味らしい。

> Is the server running locally

local環境でサーバーは動いているか

> and accepting connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

もしくはUnixドメインソケットの.s.PGSQL.5432に繋がっているか?

## **環境**

– macOS Big S

元記事を表示

Ubuntu14.04にffmpegインストールするには

railsで動画変換の機能を作った時に必要でした。
macのローカル環境では`brew install ffmpeg`をしたらインストールできましたが、Ubuntu14.04ではこのような記述が必要です。

“`
sudo apt-get -y install software-properties-common
sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get -y install ffmpeg
“`

元記事を表示

[Rails]searchアクションの定義方法について

# はじめに
本記事では、7つのアクション以外である
`searchアクション`について記述します。

本日オリジナルアプリで実装したためアウトプットいたします。

# 結論
いきなりですが、コードを載せます。
私のオリジナルアプリは食べ物に関係したものです。

foodsをsearchするという理解でお願いします。

記述の順番としては、
ルーティング→モデル→コントローラーが良いのかなと思っています。

“`routes.rb
Rails.application.routes.draw do

devise_for :users
root to: ‘foods#index’
resources :foods do
collection do #ここから下3行です!!
get :search
end
end
resources :users, only: :show

end
“`

“`food.rb
class Food < ApplicationRecord belongs_to :user has_one_a

元記事を表示

#7 Rails × Vue.jsで動的なページをSPA化させる

[前回の続き](https://qiita.com/divclass123/items/9cf3fe9415d564ce2253)

前回、railsのviewからjson形式でデータをvue.jsの方に送るといった新技を身につけたので、
それを利用して、drinks/show.html.erbにおける現在のuserのidと投稿のidを
取得できたのでそれらを利用していいね機能を実装していきたい。

# vue.jsを記述

likeButton.vueを記述していきます!

async function()という見慣れないものがあったので調べると、
非同期関数と呼ばれるもの。そもそもjs自体なんか非同期っぽい感じするので訳わからないのですが、
https://knowledge.sakura.ad.jp/24888/
複数の処理を実行できる的な感じですかね。。。
https://qiita.com/kiyodori/items/da434d169755cbb20447

>例えばサーバーと通信を行った際に、リクエストが返ってくるまでに数秒以上もかかると困ります。そこで、「ある関数が呼

元記事を表示

Ruby , Ruby on Rails学習 一日目(条件分岐と繰り返し表現)

お疲れさまです!takumiです!
一日目なのは変わりませんが引き続きRubyの勉強頑張っていきましょう!!!

#IF文

〇〇の場合は□□するという条件分岐。

基本の型

“`Ruby
if 条件 then
#条件
end
“`

具体例をみてみます。
基本的にはBoolean値(true or false)を判定して出力するか、しないかを判定しています。

“`Ruby
score = 78

if score < 90 then puts "#{score}は90より小さい" end if score <= 78 then puts "#{score}は78以下です" end if score >= 78 then
puts “#{score}は78以上です”
end

if score == 78 then
puts “#{score}はぴったりです”
end

if score != 77 then
puts “#{score}は77ではない”
end
“`

また、文字を入力したらそれだけでtrue判定することも覚えておくといいかも。

元記事を表示

インクリメンタルサーチ rails ajax

インクリメンタルサーチを実装する!

インクリメンタルサーチとは・・逐次検索です!

完成イメージ

あるワード「コロナ」を入れると、、そのワードがタイトル、コンテンツ内に含まれてる記事が出てきます。
さらに、「コロナ」から「コロナウイルス」にうち進めると…
さらに絞り込まれていきます。
ちなみに下に出てくる記事のタイトルは、リンクにしてるので
押したらそのまま、記事に飛べます。

これが、ベストなインクリメンタルサーチではないですが・・・
頑張って実装したのでまとめていきます:fist:

![スクリーンショット 2021-08-20 20.49.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/a6f5040a-bc90-691b-a797-488f0f4a7e47.png)
![スクリーンショット 2021-08-20 20.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

本番環境でCSSだけが反映されていない

##はじめに
DockerとCircleCIを用いた本番環境で、修正を加えてデプロイすると、CSSだけが反映されていないことに気づきました。

CSS全く機能していないのではなく、修正した箇所が反映されていないという事象です。
完全な解決ではないですが、とりあえず反映させることはできましたので残しておきます。

##解決策

まず疑ったのは、キャッシュが残っているのではないかと思いました。
スーパーリロードとシークレットウィンドウで本番環境を試しましたが、効果なし。

また、HTMLの変更点は反映されているため、コンパイルが怪しいと思いました。
(dockerとcircleciを導入する際にかなりてこずったところでもあったので、特に怪しいと感じました。)

取り急ぎ解決策としては

ターミナルからデプロイしているEC2へ行き、自分のアプリに移動して一度precompileしたものをを削除します。

“`terminal
$ docker-compose run web bundle exec rails assets:clobber RAILS_ENV=production
“`

元記事を表示

Ruby , Ruby on Rails学習 一日目(変数とメソッド)

#webアプリケーション開発、頑張るやで。

今日からデイトラで学んだことをどんどんアウトプットしていこうと思います。

フロントエンドエンジニアを目指していたのですが、正直バックエンドの知識も
ないとぶっちゃけ頭がこんがらがってわからなくなるときがあります。。。。
なので学んだことをどんどんQiitaにアップロードしていこうと思います!

#Rubyってなんぞや

今まで学習してきたHTML,CSS,JavaScriptと違ってRubyはサーバーサイド言語と
呼ばれるもの。
機能としては
・ロジックをつくるんだよー
・データを保存したり取り出したりできるんだよー

そしてこの言語は日本人よって作られたらしい。地味にすごすぎワロタ。
そしてこのRubyとRuby on Railsというものを使うと爆速でWebアプリケーションが作れるみたい。
フロントでいうところのVue.jsとかReactみたいなもんなんかね。

この便利なRailsですが、実務ベースで使用していくには生のRubyをちゃんと知らないと
だめだよということなのでしっかり基礎学習していこうと思います!!

#文字の表示

元記事を表示

AWS構成図を作成し、サーバー周りについて初心者なりにまとめてみました・・・。

AWS構成図

今回AWS構成図というものを作ってみました。
ポートフォリオをデプロイしてみたものの、正直何をやってるのか・・・・
「私は今一体何を立ち上げているのか・・・」状態だったので、
基本を勉強しつつ、以下の表が何なのかわかるように、
まとめていきたいと思います。
サーバー周りはとても難しく感じます。:fearful:

![スクリーンショット 2021-08-20 17.05.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/0ef6c701-e78f-0dce-3d60-eb9aa5bd5adc.png)

まずは基礎知識の確認 

サーバーについて

:fist:サーバーって何?

サービスを提供するコンピュータのこと

:fist:WEBアプリケーションで必要になるサーバーは?

WEBサーバー、APサーバー、DBサーバー

:fist:WEBサーバーって何?

WEBクライアントのリクエストを受け取り、静的コン

元記事を表示

Rails アソシエーション作成時のFK自動付与について

model作成を行い、アソシエーションで関連付けを行うと、自動的にFK(外部キー)が付与される。
この規則について考える

User モデルとPostモデルを作成しUserモデルとPostモデルは一対多の関係にあるとする

(userモデルに対するpostモデルのFKはuser_id)
(postモデルに対するuserモデルのFKはuserモデルのPK(主キー))

![Screenshot from 2021-08-20 18-44-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/512448/22587b3e-5986-f7f2-de80-4c31683870cf.png)

画像汚くてすみません。

以下 コード例

“`user.rb
has_many :posts
“`

“`post.rb
belongs_to :user
“`

postモデルのbelongs_to :user から考えると、belongs_to でpostの1レコードに対し必ずuserモデルの主キーは存在

元記事を表示

OTHERカテゴリの最新記事