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

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

rails newでコケたときの備忘 m1 mac macOS 12.1

#書いた理由

備忘のため。
ググってもダイレクトに出てこなかったので、同じところで詰まっている人の参考になれば。

#起こったこと

`rails new`
を叩いたら以下のメッセージでコケた

“`
/Users/hoge/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require’:
dlopen(/Users/hoge/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/bootsnap.bundle, 0x0009):
tried: ‘/Users/hoge/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/bootsnap.bundle’ (mach-o file, b

元記事を表示

{Rails}uninitialized constant * (NameError)と出た場合の対処法

①やりたいこと
rails cでレコードを確認&作成したいが、uninitialized constant User (NameError)と出てしまう。※Userはモデル名です。

②エラー内容

“`
% rails c
Running via Spring preloader in process 18643
Loading development environment (Rails 6.1.4.4)
irb(main):001:0> User.all
(irb):1:in `

‘: uninitialized constant User (NameError)
“`

③原因
uninitialized constant * (NameError)は、Rubyで「定数やclassが定義されていない」ことを意味しています。
ファイル名の記述間違いなどで、呼びたいクラス名を記述できていない場合などで発生します。
この場合はコントローラー名が間違っていたみたいです。

④解決策
ターミナルを遡ってみると、コントローラーを作成しているとこ

元記事を表示

【個人開発】海とサーフィンが好きすぎて、海のように見え方が変わるサーフィン日記共有サービスを作ってみた。

# **はじめに**

天気が雪の日は雪が降ります。

![https://i.gyazo.com/8a18102d9f03a7b6e44496ba03032d79.gif](https://i.gyazo.com/8a18102d9f03a7b6e44496ba03032d79.gif)

サーフィンをしたことがありますか?

一度きりの人生、自然と一体になれるこんな素晴らしいスポーツをやってみる事もしないなんて勿体ない事です。

私は海とサーフィンを愛しています。

自身の大好きなものを題材に作品を作って誰かの心に届くものにしたい!そんな想いがあります。

初めまして。りゅうじと申します。

【Twitter】

[https://twitter.com/otokomigakimasu](https://twitter.com/otokomigakimasu)

【今回作ったサービス】

[https://www.namikki.jp](https://www.namikki.jp/)

**私はエンジニアの方は全員海の近くに住んでサーフィンをした方がいいと思っています。**

元記事を表示

railsチュートリアル第十四章 [Follow]のWebインターフェイス 統計と[Follow]フォーム

##[Follow]のWebインターフェイス
この節では、モックアップで示したようにフォロー/フォロー解除の基本的なインターフェイスを実装します。
フォローしているユーザーと、フォロワーにそれぞれ表示用のページを作成します。
ユーザーのステータスフィードを追加して、サンプルアプリケーションを完成させます。

###フォローのサンプルデータ
####サンプルデータにfollowing/followerの関係性を追加する
db/seeds.rb

“`rb
.
.
.
# 以下のリレーションシップを作成する
users = User.all
# 全ユーザー
user = users.first
# 最初のユーザー
following = users[2..50]
# 全体の3(2+1)番目から51(50+1)番目まで呼び出す
followers = users[3..40]
# この場合 4番目から41番目まで呼び出す
following.each { |followed| user.follow(followed) }
# 「each」メソッドは配列や範囲オブジェクトなどで用意されて

元記事を表示

railsチュートリアル第十四章 ステータスフィールド サブセレクト

##ステータスフィールド
現在のユーザーにフォローされているユーザーのマイクロポストの配列を作成し、現在のユーザー自身のマイクロポストと合わせて表示します。
このセクションを通して、複雑さを増したフィードの実装に進んでいきます。
これを実現するためには、RailsとRubyの高度な機能の他に、SQLプログラミングの技術も必要です。

###動機と計画
####ステータスフィードのテスト
test/models/user_test.rb

“`rb
require ‘test_helper’
.
.
.
test “feed should have the right posts” do
michael = users(:michael)
archer = users(:archer)
lana = users(:lana)
# テストユーザー

# フォローしているユーザーの投稿を確認
lana.microposts.each do |post_following|
# フィードを作成する
assert

元記事を表示

【共同開発】欲しいものを買う優先度をランキング形式で提示するサービス「HoshiMe」をリリースしました!

# はじめに
早速ですが質問です。衝動買いをして後悔した経験はありませんか?

私はよく後悔しています。。
ずっと欲しかったものがあったにも関わらず、違うものを衝動買いしてお金を使ってしまい、本当に欲しかったものを買うためのお金がなくなってしまったことがありました。

そんな悩みを解決するために開発したのが、欲しいものを買う優先度をランキング形式で提示するサービス **『HoshiMe』(ほしみぃ)** です。

https://hoshime.herokuapp.com

# 使用技術
**バックエンド**
– Ruby 2.6.6
– Rails 6.1.4

**フロントエンド**
– TailwindCSS
– JavaScript(jQuery)
– Chart.js

# 主なサービス内容
### 欲しいもの登録ページ
ユーザ登録なしで欲しいもの3つ登録できるように実装しました。
three_items【Rails】kaminariとboostrap4を使ってページネーションをする

##ページネーションとは?
ページネーションとは画像の通り、検索した時などの下に出てくる、今は何ページ目…と表記してくれるもの。
[![Image from Gyazo](https://i.gyazo.com/13f2a53b76005bca00bb3f05e9032cce.png)](https://gyazo.com/13f2a53b76005bca00bb3f05e9032cce)

railsでこのページネーションを導入する際には“kaminari“と言うgemを使っていく。

**手順**
①“kaminari“のインストール
②ページネーションデザインのデフォルトの設定ファイルを作成/編集
③コントローラーの編集
④viewの実装

##①“kaminari“のインストール
今回はboostrap4を一緒に使っていくので、“Gemfile“に“kaminari“と“bootstrap4-kaminari-views“を記入し、“bundle install“する。

“`Gemfile.
gem ‘kaminari’
gem ‘bootstr

元記事を表示

DockerでRails 6 + postgresの開発環境構築

DockerでRails6の開発環境を構築するときにやったこと。
# 対象
dockerについてなんとなく知っていて、これからrails,postgreでwebアプリの開発環境を用意しようとしている方向けです。
自分の備忘録も兼ねて書いてみました。

# 環境
ホスト環境
macOS Caterina 10.15.5
Docker version 20.10.2

構築しようとする環境
ruby 2.7
postgresql 10.7
rails 6.1.1

# rails用のDockerfileの作成
Dockerfileの作成します。DockerfileとはDockerイメージを実行する際に実行するコマンドをまとめたものです。

“`
$ touch Dockerfile
“`
上記で作成したDockerfileに以下のコマンドをお好きななエディタで記述していきます。
まずはベースとなるイメージを設定します。ベースはruby2.7のイメージを使用し、nodeのイメージは後ほど使用します。
また、環境変数LANGを設定します。

“`:Dockerfile
FROM node

元記事を表示

【Rails】rails routesの見方

## rails routesの見方

現在のルーティングを確認する際にroutes.rbフォルダを見に行く方法もありますが、以下のコマンドでも確認できます。

“`
$ rails routes
“`
上記コードを入力すると下のような画面がターミナル上で表示されます。

![スクリーンショット 2022-01-15 11.53.56.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581028/3a0c37c0-bfe9-fad1-8858-d64cb7ba51d5.jpeg)

Prefix:URLのニックネームです。(routes.rb内で「as:ニックネーム」で設定したものがここに表示されます)

Verb:HTTPメソッドです。

URI:URL(例 /books)
※(.:format)というのは、/books.htmlとしてもいいよという意味です。htmlがフォーマットです。

Controller#Action:コントローラーとアクションを意味しています。

元記事を表示

Rails+Reactで何か作る(パート1:Rails準備編)

## はじめに

rails と react で何か作ろうと思います。
やったことをメモ&共有します。

railsとreactは別プロジェクトとして作成します。

最終的に
rails app は herokuへデプロイ
react app は firebase hostingへデプロイ
の予定です。

今回は、RailsAppを作成してテスト用のAPIを作成するところまでを行います。

## 環境
| ツール | バージョン |
|:-:|:-:|
| ruby | 3.0.2p107 |
| sqlite3 | 3.36.0 |
| node | v17.3.0 |
| yarn | 1.22.17 |
| rails | 7.0.0 |
| git | 2.26.2 |

## Railsの準備

### Railsをnewする

APIモードでrails アプリを作成する

“`
$ rails new quiz_rails –api
“`

とりあえず、git で first commit しておく

“`
$ cd quiz_rails
$ g

元記事を表示

present?メソッドとnil?メソッドの使い方

#はじめに
 今回はpresent?メソッドとnil?メソッドについてまとめます。どちらも条件分岐の時に便利なメソッドです。条件分岐どうしようと悩んだ時に、このメソッドで解決できたのでまとめます。
この記事は学習備忘録です。

#present?メソッドとnil?メソッドの違い
 present?メソッドとnil?メソッドは、オブジェクトに対してtrueとfalseを返すメソッドです。
使用例としては

present?メソッド→@testsに値が入っている時trueが返される

“`qiitq.rb
@tests.present?
#実行結果
=> true
“`

nil?メソッド→@testsに値が入っていない時trueが返される

“`qiitq.rb
@tests.nil?
#実行結果
=> true
“`

このメソッドを利用して条件分岐を作る事ができます

#present?メソッドとnil?メソッドで条件分岐を作る
 present?メソッドとnil?メソッドを使って、
以下のようにインスタンス変数に中身がある場合は商品を表示させて、中身がない場合は代わりの

元記事を表示

【Rails】RSpecの導入手順(メモ)

# はじめに
チーム開発でテストツールとしてRSpecを導入することになったので調べたことを記録したいと思います。

# 環境
Ruby 3.0.3
Rails 6.1.4
rspec-rails 5.0.2
spring-commands-rspec 1.0.4

## 1. 必要モジュールのインストール
* RSpecをRailsアプリで使用するためには`rspec-rails`というgemが必要です。
* また必須ではありませんが、RSpecのテストをより高速に実行するために`spring-commands-rspec`もインストールしておきます。
* インストールグループとしてtestだけでなくdevelopmentも追加することでテストファイルを作成するgeneratorを使用することができます。

“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘spring-commands-rspec’
end
“`
* bundle installでGemfileに記載したgemをインスト

元記事を表示

【devise_token_auth】認証トークンの保存先について

## はじめに
 本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## 今回の疑問点
 今回の疑問点は、

  _認証トークンの保存先について_
 
 です。 
devise-token-authを用い、認証機能を実装していた際に保存先について疑問を抱き、それぞれのメリット・デメリットについて調べました。

##認証トークン保存先のメリット・デメリット
###local storage
メリット

– 実装が簡単

デメリット

– XSS脆弱性があった場合、トークンを簡単に盗むことができる

###Cookie
メリット

– HttpOnly属性をtrueにすることでJavaScriptからのCookie操作を無効にできる

デメリット

– 実装が手間
– HttpOnly属性をtrueにしても完全に安全というわけではない

###In-Memory
メリット

元記事を表示

Railsチュートリアル(6版)の13章で_form.html.erbを使っていた場合の戸惑い解消

# はじめに
プログラミング初学者の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。

Railsチュートリアル(Rails6版)の13章「13.3.2マイクロポストを作成する」の「リスト 13.43、13.44」で戸惑った部分について共有です。

## 戸惑ったポイント
10章の「10.1.1編集フォーム」の演習2をやった場合、`new.html.erb`と`edit.html.erb`の一部を`_form.html.erb`としてパーシャルにするため、テキストと違いが出て、どの部分を`f.object`にするか戸惑いました。

# 結論
`new.html.erb`と`edit.html.erb`は書き換え不要で、`_form.html.erb`を1箇所変えるとOKです。

“`ruby:_form.html.erb
<%= form_with(model: @user, local: true) do |f| %>
<%= render 'shared/error_messages', object: f.ob

元記事を表示

Ruby 中級者になるために絶対に理解しておかなければならない知識

こんにちは!石田佳介です!

今回の記事では、RoR初心者が中級者になるために絶対に抑えておかなければならないことを記事にします。

それは、オブジェクト、インスタンス、インスタンス変数、クラス

この4つを人に説明できるようになるくらい理解していないと絶対に更なる高みにはいけません。

それはなぜか?理由は、めちゃくちゃ大事な基礎であり、RoRの根幹になるものだからです。いくら多くのメソッドをおぼえても、上の4つを完璧に理解していなければ、実務に入ってもいつか頭打ちがきます。

こんな言っている僕ですが、ぼくも最近理解したので、心配しないでくださいね(笑)

今回使用する言語はrubyを使うので、ご了承ください

それでは本題に入りましょう

そもそもオブジェクトって?

この言葉よく聞くとおもいますが、そんな難しいことを言っているわけではありません。よく「モノ」と表現されます。現実世界でイメージしてみるとよく分かると思いますが、世の中には、モノであるあふれてますよね。スマホ、パソコン、本、等々あげたらキリがありません。

それはわかったけど、プログラミングの話をしてくれよ!っていう

元記事を表示

Railsでコメント機能のajax化

##コメント機能のajax化
[前回のajax化の記事](https://qiita.com/mmaumtjgj/items/ef494de60a36f2e769b1)にてどんなものかある程度理解したので、この記事ではお気に入りボタンの実装を例としてしたが、今回はコメント機能の投稿と削除のajax化の備忘録として記載。

**手順**
①コントローラーの修正
②“remote: true“の追加や“class“、“id“の指定
③“js.erbファイル“の追加

##①コントローラーの修正
“redirect先“を削除

“`修正前comments_controller.rb
class CommentsController < ApplicationController def create comment = current_user.comments.build(comment_params) if comment.save redirect_to board_path(comment.board), success: t('

元記事を表示

【Rails】Routingのカンペ(scope / namespace / module / action / as / コロン / constraintsの意味)

# はじめに

routesの読み方で不安になった時用のカンペです。
scope / namespace / moduleの根本の動作が知りたい方はこちらが参考になります。
https://qiita.com/ryosuketter/items/9240d8c2561b5989f049

# 目次

1. [まとめ](#まとめ)
1. [scope](#scope)
1. [module](#module)
1. [namespace](#namespace)
1. [as](#as)
1. [コロン](#コロン)
1. [constraints](#constraints)



# まとめ

## scope
scopeに指定した文字が**urlにのみ**影響する

## module
moduleに指定した文字が

元記事を表示

docker compose環境のrailsでDB関連のエラーが出たら確認することまとめ

# 環境
docker compose
mysql
rails6
rails初心者が色々迷走しているうちに様々なエラーに出会ったのでまとめてみます。

# エラー
データベースがない時に出るエラーです。

“`error.rb
ActiveRecord::NoDatabaseError: Unknown database
“`
## 対応
データベースがあるかを確認します。

“`checkdb.sh
#execコマンドでrailsコンテナの中に入ります。
$ docker exec -it xxxxxxxxxx bash
#railsコンテナの中からmysqlコンテナに接続しつつmysqlを立ち上げます。
root@xxxxxxxxxx:/app# mysql -u root -p -h db
#ここでmysqlが立ち上がらない場合そもそもdockerコンテナ同士の通信がうまく行っていないので下の「dockerコンテナ間の通信を確認する」を見てください。
#mysqlが立ち上がった場合はshow databasesでデータベースがあるか確認します。データベース名はrailsアプ

元記事を表示

【Rails】メソッド名を付けるときに気をつけること

最近、1つのメソッドで色々なことをしてしまってるメソッドのリファクタリングをしていて、
その過程で処理ごとにメソッドに切り出すことが多く、
メソッド名の付け方で迷うことがあったのでまとめてみる。

###オブジェクトを別の形に変換するメソッド名はto_hogeにする

“`ruby
# hashにして返すメソッド
# 悪くはない例
def convert_to_hash
end

# より良い例
def to_hash
end
“`

###否定形のメソッド名はなるべく作らない
判定が複雑になると可読性が下がってしまうこともある。
否定形のメソッドを作りたくなったときは、逆の意味(肯定)のメソッドを作って“`!hoge“`の形にして使う。

“`ruby
# 良くない例
book.not_published?

# 良い例
!book.published?
“`

###判定形のメソッドの末尾には疑問符?をつける
trueかfalseを返すメソッドの末尾にだけ「?」をつける。それ以外にはつけない。

“`ruby
shop.open?
“`

メソッド名に疑問符をつけら

元記事を表示

{Rails}ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)が出た場合の対処法

①やりたいこと
MySQLにログインしたい。
Modelを作成し、rails db:migrateを実行した後の出来事でした。(この2つは問題なく実行できました)

②エラー内容

“`
% sudo mysql -u root
Password:
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
“`

ちなみにsudo mysql -u rootと打つとEnter password:と出てくるので、パスワードを打った後に出てきたのがこのエラー文です。

③原因

④解決策
下記の記事を参考にしました。
https://ja.getdocs.org/mysql-error-1-45-28-access-denied-for-user-rootlocalhost-using-password-no/

引用すると >ユーザ ‘root’は、MySQLサーバにログインするためのパスワードが必要です。 ** これを解決するには、MySQLサーバーに接続する際

元記事を表示

OTHERカテゴリの最新記事