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

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

heroku run rails db:migrate ができないエラーの解消方法

【概要】
—————————————-
1.結論

2.なぜ起きるのか

3.どのように解決するのか

4.ここから学んだこと

1.結論
—————————————-
migrateファイルを整理する!

2.なぜ起きるのか
—————————————-
実は、% rails db:rollbackをする前に、
upしているファイルのカラム名を変更してしまったんです。
なので、migrateファイルが噛み合っていなかったんです。

![スクリーンショット 2020-09-08 11.20.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/686400/0d3488b0-41b2-933b-6435-abf2cdf4f467.png)

上記の画像では全て”up”

元記事を表示

link_toの文字列部分にHTMLタグを挿入する方法

文字列部分にfontawesomeを使用したいときなどにすぐ思い出せるように自分用に残しておきます。

“`index.html.erb
 <%= link_to new_user_session_path, class: "new-post__btn" do%>
    ///fontawesomeでコピーしたHTMLタグ
 <%end%>
“`

:warning:無料で使う場合はproとついているフォントは使えない。

元記事を表示

PG::ConnectionBad: could not connect to server: No such file or directory

#PG::ConnectionBad: could not connect to server: No such file or directoryというエラーがでた

##解決法

1,ターミナルでdesktopの前に行く。

2,
“`$ cd /usr/local/var/log/
“`

3,
“`$ cat postgres.log
“`

そうすると以下のようなエラーがでる
“`dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
Referenced from: /usr/local/bin/postgres
“`

4,以下の記事を参考に実行
https://qiita.com/eightfoursix/items/bf11693b085eced95e29

4-1
“`$ brew upgrade
“`

4-2
“`$ brew postgresql-upgrade-database
“`

自分の場合は、これで解決しました。

元記事を表示

【RSpec】 Factory Botを使いこなそう

# FactoryBotの基本のキ

`bin/rails g factory_bot:model user`

のようにFactoryBotでデータを作成するファイルが生成されます。今回は`spec/factories/users.rb`に以下のようなファイルが生成されると思います。

“`spec/factories/users.rb
FactoryBot.define do
factory :user do
end
end
“`

このなかに作りたいデータを詰め込んでいきます。

“`spec/factories/users.rb
FactoryBot.define do
factory :user do
name {“佐藤”}
age {20}
height {170}
end
end
“`

# 実際に使ってみよう。

“`spec/models/user.rb
require ‘rails_helper’

RSpec.describe User, type: :model do
it “is valid with a

元記事を表示

rails tutorial 第6章

#はじめに

独学で[rails tutorial](https://railstutorial.jp/)を進めていく過程を投稿していきます。

進めていく上でわからなかった単語、詰まったエラーなどに触れています。

個人の学習のアウトプットなので間違いなどあればご指摘ください。

初めての投稿なので読みにくいところも多々あるかと思いますがご容赦ください。

#第6章 ユーザーのモデルを作成する
##6.2.2 存在性を検証する
存在性の検証は:presenceで行うようです。
tutorialではよく省略されたコードが示されていますのでしっかり理解するまでは自分でフォローもしておこうかと思います。

“`
validates :name, presence: true
#すべて括弧をつけると
validates(:name, {presence: true}) #第一引数には検証するカラム名を、第二引数には」検証する内容
“`

問題発生!!
リスト6.13のtestを実行すると

“`
RuntimeError: RuntimeError: database is l

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #3 RSpec, FactoryBot導入しpostモデルを作る

←[Rails 6で認証認可入り掲示板APIを構築する #2 gitとrubocop導入](https://qiita.com/rf_p/items/5ef018bec4ed2f16fc0e)

# RSpec, FactoryBotのインストール

前回の続きから。
テストに使うRSpecとFactoryBotを入れます。

“`diff:Gemfile
group :development, :test do
+ gem “rspec-rails”
+ gem “factory_bot_rails”
end
“`

“`powershell
$ bundle
“`

インストールできたので初期化をします。

“`powershell
$ rails g rspec:install

Running via Spring preloader in process 6770
create .rspec
create spec
create spec/spec_helper.rb
create spec/ra

元記事を表示

Ruby on RailsにおけるServiceクラスのススメ

こんにちは、@hairgaiです。
今回は、賛否両論あるServiceクラスについての自分的な使い方を書いていこうと思います。

## Serviceクラスとは
DDD(ドメイン駆動設計)でのサービスから派生している(と勝手に認識している)、ある一つの機能を記述するクラス郡です。
詳しくは説明している人がたくさんいらっしゃるので割愛しますが、ビジネスロジックをモデルとコントローラーの中間でキレイに書けるので、僕はよく使っています。
今回は(僕の使い方は間違ってるかもしれませんが)、自分的な使い方及びそのメリットと思われる部分を書いていきます。

## 基本的な使い方
まず、基本的な使い方を、コード例と共に紹介しようかなと思います。(これが正解かどうかは正直わかりませんが、見やすいのでいいかなと思ってます)
例えば、SNSなどで「フォローをする」という機能をService層として1ファイルに記述すると、こんな感じにになるかと思います。
**※重ねていいますが、これが正解とかじゃないです。**

“`ruby
class FollowService
attr_reader :user

元記事を表示

【Rails】paranoia(gem)を使ってイベント終了機能(論理削除)を実装する

# そもそも論理削除とは?
>RailsのActiveRecordの削除(delete)は、通常、物理削除になっており、実際にデータがデータベースから削除されます。それに対して、論理削除は実際にはデータを削除せずに、削除されたと見なすフラッグと呼ばれるカラムを設定して、ユーザーには削除しているかのように振る舞い、必要時には元の状態に戻せるものです。「ユーザーが退会した後も、システム上一定期間はユーザーのデータを保持しなければならない。」や「違反等があり、一時的にアカウントを凍結したい」などの場合に、論理削除が使えると思います。
Railsではparanoiaというgemライブラリを利用することで簡単に実装することができます。このgemはacts_as_paranoidというgemを再実装したものです。

引用 (https://remonote.jp/rails-gem-paranoia)

分かりやすい記事があったので引用させて戴きました。通常は上述されている様に管理ユーザーが**違反等があり、一時的にアカウントを凍結したい**などの場合に使われる機能みたいですが僕の場合は**イベ

元記事を表示

windows10,Ruby2.6.6でrails serverコマンドを実行して「cannot load such file — sqlite3/sqlite3_native」がでた

#はじめに
[@shuheyさんの記事](https://qiita.com/shuhey/items/8cd28aed5906fb5fa6ec)の通りにやればほぼ解決します.
Ruby2.6.6でやったときにうまくいかなかったのでメモ程度に…

#環境
windows10 Home
Ruby+Devkit 2.6.6-1 (x64)
Rails 5.1.6

#直したはずなのにエラーが
[Ruby on Railsチュートリアル](https://railstutorial.jp/chapters/beginning.html)と[Rails Girls インストール・レシピ (Windows 用セットアップ(WSLが使えない方向け))](https://railsgirls.jp/install#setup_for_windows_without_wsl)の通りに環境構築をして`rails server`コマンドを実行したところ以下のようなエラーが出ました.([@shuheyさんの記事](https://qiita.com/shuhey/items/8cd28aed5906f

元記事を表示

int型カラム登録で大文字の場合でも半角数字にしたい時

今回はオリジナルアプリを作っている際数字で登録するところをうっかり大文字数字で記入しても勝手に半角数字にしちゃうメソッドを作ったのでまとめたいと思います。

投稿の際に使用するテーブルはこんな感じです。

“`
mysql> show columns from sakes;
+————-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———+—————-+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
|

元記事を表示

git push heroku masterする際のエラー解消方法

【概要】
—————————————-
1.結論

2.どのようなエラーか

3.なぜエラーが起きるのか

4.どのように解決するのか

1.結論
—————————————-
githubの左上メニューでCompare to Blanchを押してmasterにmargeする!

2.どのようなエラーか
—————————————-

“`ruby:ターミナル
% git push heroku master
To https://git.heroku.com/*****.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://git.heroku.com/*****.git’
hint: Up

元記事を表示

Webアプリケーションにおけるセキュリティ

セキュリティ対策をしていないwebアプリケーションの開発は非常に危険です。
セキュリティとは何なのか。
セキュリティ対策をしていないと
・なぜ危険なのか
・どういった事が起こるのか
・どのように対策するのか
について学んだ内容をまとめました。(Rubyでの開発)

“`
前提
プログラミング初学者(1~2ヶ月)が学んだ内容です。
実際の現場で通用しないことや間違った内容が含まれている可能性があります。
間違っている部分や浅い部分については、追記やご指摘いただけると幸いです。
“`

#セキュリティ対策していないとなぜ危険なのか
セキュリティ対策をしていないwebサービスはなぜ危険なのか、何が起こるのか。
**結論**
利用者は個人情報が漏れる。
管理者はwebページを勝手にいじられる。

もう少し細かく見ると、
・個人情報を勝手に閲覧される
・webページの内容が改ざんされる
・webページ自体が利用不可能になる
その結果
・webサービス利用者へ大きな損害
・公開したwebページの社会的信用を失う
#webサービスにおけるセキュリティとは何か
脆弱性があるwebサービスはセキュリ

元記事を表示

CircleCI: parallelismを使うときにSimpleCovの結果をまとめ、Artifactsに置く

CircleCIでparallelismを使ってRspecを並列実行すると、SimpleCovの結果がそれぞれのcoverageディレクトリにばらばらに出力されてしまいます。これを1つにまとめ、さらにCircleCI上で結果のHTMLが見えるようにしたい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308595/e2d13841-be5b-6ec2-4d87-507ab85dd633.png)

参考にしたページ:

– [CircleCI で並列実行したRSpecのカバレッジを Coveralls に送る](https://qiita.com/takeru0757/items/a07222700ece37e0562c)
– [Merging test runs under different execution environments](https://github.com/simplecov-ruby/simplecov#merging-test-runs-under-dif

元記事を表示

railsのハッシュタグ検索の実装

今回は、railsでハッシュタグ機能を実装しました。

Railsのキャプションにハッシュタグ機能を実装する


のサイトを参考にさせていただきました。

完成図
商品を出品する時にタグをつけると

![スクリーンショット 2020-09-07 18.44.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682043/fa5a191a-9cc5-c5e7-56a9-03f09e952ead.png)

リンクが踏めるハッシュタグが投稿詳細の際に確認でき、
![スクリーンショット 2020-09-07 18.45.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682043/fb65e546-02b1-d7e5-9a9d-5b8e0dd72f70.png)

リンクの先には同じタグを持った商品が並ぶ
![スクリーンショット 2020-09-07 18.57.37.png](https://qiita-image-st

元記事を表示

Rails on Dockerの環境構築手順

# 環境
– MacOS Catalina 10.15.6
– Docker 2.3.0.3
– Ruby 2.7.1
– Rails 6.0.3.2
– Bundler 2.1.4
– Gem 3.1.2
– Yarn 1.22.5

# 手順
予め[Docker](https://www.docker.com/get-started)をインストールしておいて下さい。

## Rubyイメージの取得

“`sh
$ docker pull ruby
“`

## Dockerコンテナを起動
``と``は適時変更して下さい。

“`sh
$ docker run -i -t –name -p 3000:3000 -v “$PWD”: /bin/bash
“`

## Railsの導入
作業ディレクトリへ移動します。

“`sh
$ cd
“`

次に、`Gemfile`の生成

“`sh
$ bundle init
“`

生成されていることを確認。

“`s

元記事を表示

preventDefaultはなぜ必要なのか

動作環境
Ruby 2.6.5
Rails 6.0.3.2

JavaScriptにおけるpreventDefaultがどういった働きをしているかをようやく理解することができたので、整理するために投稿してみました。

## preventDefaultの意味
preventDefaultの必要性について話していく前に、そもそもpreventDefaultが何をしているのかを説明します。

###default(デフォルト)の挙動をprevent(妨害)しています。

説明になっていないと思うかもしれませんが、厳密な説明をしようとすると、おそらくかなり長い行数が必要となってしまいますし、具体的な例を提示した方がわかりやすいと思い、端的に説明しました。早速、具体的な例を元に説明していきます。

## preventDefaultの具体例

“` Ruby:index.rb
<%= form_with url: "/posts", method: :post do |form| %>
<%= form.text_field :fuga %>
<%= form.submit '投

元記事を表示

rubyオブジェクトをJSON形式に変換

引数にハッシュ、配列等のrubyオブジェクトを入れJSON形式で返してくれます

## JSON.generate
“`
pry(main)> JSON.generate({“hoge”=>{“fuga”=>1, “fugafuga”=>2}})
=> “{\”hoge\”:{\”fuga\”:1,\”fugafuga\”:2}}”
“`
## JSON.pretty_generate

“`
pry(main)> JSON.pretty_generate({“hoge”=>{“fuga”=>1, “fugafuga”=>2}})
=> “{\n \”hoge\”: {\n \”fuga\”: 1,\n \”fugafuga\”: 2\n }\n}”
“`
JSON.generateに比べて見やすい文字列に返してくれます

人が読むものではない限りgenerateのほうが容量が軽いためgenerateを使用した方がいいとのことでした

元記事を表示

RSpecとminitestのおおまかな違い

#はじめに
railsで最もよく使われるテスティングフレームワークはRSpecという話をよく聞きますが、
ruby標準で使用できるminitestとの違いについてまとめてみました。

#RSpecについて
RSpecを使う理由は「最初からいろんな機能が全部入ってて便利だから」。
ちょっとテストコードのここだけを共通化したい、とか、モックで少し凝ったことをやりたい等、RSpecの標準機能でほとんど完結させる事ができる。

#minitestについて
簡単なRubyプログラムの動作確認をしたりするときに使う。
デフォルトでRubyにインストールされるので、すぐに使えて便利。
RSpec並みに凝ったことをやろうとすると、プラグインをたくさん入れたり、継承、モジュール等を駆使することになるため、業務レベルのテストコードではminitestはあまり使われていない。

#統合テスティング環境としての RSpec
実利的な観点から minitest よりも RSpec のほうが好ましい点がある。
minitestが 「テスティングフレームワーク」であるのに対して、Rspec が「統合テスティン グ環

元記事を表示

enumからセレクトボックスを作る際に、表示する文言を変えたいとき

あまり無いケースだとは思うが、enumからセレクトボックスを作成する際に、文言を変えたい場合の方法をメモしておく。
前提として、gemに `enumerize` と `reform` を使用している。

“`ruby:product_form.rb
extend Enumerize

enumerize :fluit, in: {
apple: 1,
orange: 2,
peach: 3,
strawberry: 4,
cherry: 5,
}, predicates: { prefix: true }

property :fluit
“`

“`ruby:ja.yml
product:
fluit:
apple: りんご
orange: オレンジ
peach: もも
strawberry: いちご
cherry: さくらんぼ
“`

普通に書けば、これで良い。

“`ruby:new.slim
= f.select :fluit, f.object.class.fluit

元記事を表示

Ruby on Railsで現在いるページの判定をする

## current_page?メソッド

viewで使用

“`
# http://hoge.com/fugaかどうか
current_page?(http://hoge.com/fuga)

# /hogehogeかどうか
current_page?(/hogehoge)

# hoge_pathかどうか
current_page?(hoge_path)

# 任意のアクションかどうか
current_page?(action: ‘new’)

# 任意のコントローラ/アクションかどうか
current_page?(controller: ‘hoge’, action: ‘new’)
“`

元記事を表示

OTHERカテゴリの最新記事