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

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

【Rails】scaffoldについて【簡単なアプリケーションがすぐに作れる】

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

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

  _scaffoldについて_
 
 です。 

## 疑問点についての解説

###結論
ターミナルで`rails g scaffold モデル名 カラム名①:データの型① …`を実行することでアプリケーションの雛形を作成することができる。

###使い方の流れ

まず、ターミナルで以下のコマンドを実行し、sample_appを作成する。

““
rails new sample_app
“`

アプリケーションが作成できたら以下のコマンドでsample_appディレクトリへ移動する。

“`
cd sample_app
“`
移動ができたら以下の通り入力。

“`
rails g scaffold Comment t

元記事を表示

【Rails】一定期間でログファイルを削除【手動は卒業】

開発中ってログの容量食いますよね…。
みなさんは、どうしてますでしょうか?

適当なタイミングで削除はしてるのでしょうか?

実のところ私は、開発の際は、pryの方を使うことが多く、正直
ログに関してあまり理解していなかったんですよね…。

ただ、これを機に色々調査してみたので共有いたします!

# rails:ログを削除するコマンド
“`
$ rake log:clear
“`

コンソールで、上記コマンドを実行すればログファイルが消えるかと思います。

ただ、毎回毎回手動で削除するのってかなり面倒ですよね?
そこで、何かいい方法がないか調べてみました。

# ログローテーションとは?
>ログローテーションとは、システムが残す時系列の記録データ(ログ)が際限なく増えることを防ぐために、一定の容量や期間ごとに古いログを削除したり新しいログで上書きすること。また、そのような機能。
[IT用語辞典 e-Words](https://e-words.jp/w/%E3%83%AD%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%86%E3%83%BC%E3%82%

元記事を表示

【Tips】Ruby on Rails 開発

### circleci
>https://hanachin.hateblo.jp/entry/2019/07/10/010613
bundle exec rspec –failure-exit-code=0
bundle exec rspec –only-failures

テストの通過率を上げる

### その他
>https://lgtmoon.herokuapp.com/

LGTMジェネレーター

元記事を表示

Railsのインスタンスメソッドとクラスメソッドの違い

## 概要
Ruby on Railsにおいて__インスタンスメソッド__と__クラスメソッド__についての知識が曖昧だったため
備忘録としてアウトプットします。

## インスタンスメソッドとは
####結論
インスタンスメソッドとは、あるクラスから生成されたインスタンスに対して呼び出すことのできるメソッドです。
#### 使用用途例
例えば、Userクラスにおいて生成されたuserが成年か未成年かを判定したい場合など。
#### コード例

“`ruby
class User
def adult # インスタンスメソッド
self.age >= 20 ? ‘成人’ : ‘未成年’ # 20歳以上なら’adult’, 20歳未満なら’child’を返す処理
end
end

user = User.new(name: ‘田中’, age: 23)
user.adult #=> ‘成人’
“`

## クラスメソッドとは
#### 結論
クラスメソッドとは、クラス全体に対して何か処理を行う場合に使用するメソッドです。
#### 使用用途例
例えば、Userクラ

元記事を表示

【Ruby】自己代入演算子「||=」

“`ruby
hoge ||= 5
“`

「||」演算子の自己代入演算子。**hogeが偽か未定義ならhogeに5を代入する。**
わかりやすく書き直すと↓

“`ruby
hoge = hoge || 5
“`

hogeが**false,nil以外** → 5を返す
hogeが**false** → hogeに5を代入する
hogeが**nil(未定義)** → hogeに5を代入する

##参考

https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html#selfassign

元記事を表示

rails7で`to_s`の引数にシンボルでフォーマットを指定するとDEPRECATION WARNINGが発生する(`DEPRECATION WARNING: Integer#to_s(:currency) is deprecated. Please use Integer#to_formatted_s(:currency) instead.`)理由と対応

# 概要

rails7で`1000.to_s(:currency)`の様に、`to_s`の引数にシンボルでフォーマットを指定するとDEPRECATION WARNINGが発生するようになりました。

“`ruby
DEPRECATION WARNING: Integer#to_s(:currency) is deprecated. Please use Integer#to_formatted_s(:currency) instead.
“`

この変更はこちらのPRで追加されています。

https://github.com/rails/rails/pull/43772

# 理由
ruby3.1で`symbol`, `true`, `false`, `nil`, `0-9`への`to_s`メソッド使用時のパフォーマンスチューニングが行われました。

https://github.com/ruby/ruby/commit/b08dacfea39ad8da3f1fd7fdd0e4538cc892ec44

railsではactivesuportで複数クラスの`to_s`メソッドを

元記事を表示

【Ruby】クラスとモジュールの違いと使い分け

##クラスとモジュールの違い

– クラスはインスタンスが生成でき、モジュールはインスタンスが生成できない
– クラスは継承でき、モジュールは継承できない

##クラスとモジュールの使い分け

moduleをclassにincludeをして使用できるようにする、ミックスインでの例。
モジュールはクラス間でメソッドを共有することができる。
モジュールをクラスに組み込むことで、クラス定義にメソッドをコピー&ペーストしたのと同じようにモジュールのメソッドをクラスで利用できるようになる。
これは、特定のクラスで再利用したいメソッドがあり、かつ、それを一カ所に集めておきたい場合に便利。

“`ruby
module Cream
def cream?
true
end
end

class Cookie
include Cream
end

cookie = Cookie.new
p cookie.cream?
#=> true
“`

##参考

http://ruby-for-beginners.rubymonstas.org/advanced/modules.ht

元記事を表示

[Rails]Webアプリケーションしか作った事ない僕が、ネイティブアプリケーションを作りたい

#はじめに
初学者の私が、2ヶ月でRailsを学びWebアプリケーションを作れるようになりました。
IOSでリリースをするに至って
まずどのような知識が必要かをまとめる記事になっています。

##React Native

React Nativeは、iPhoneとAndroidどちらでも動かすことができる開発用フレームワークです。
JavaScriptで開発することができるため、JavaやSwiftが書けないエンジニアでも、React Nativeを使えばアプリ開発ができます。
React Nativeの開発言語は、JavaScriptです。そのため、JavaScriptのコードを書ければAndroidとiOSの両方で開発が可能になるフレームワーク

“`
Reactに慣れている人にとっては学習コストの低いReact Native
ネイティブエンジニアには、逆に学習コストが高くなると考えられます。
“`
##Flutter

FlutterはGoogleが作ったモバイルアプリ用のフレームワーク。
「Dart」という言語を使って開発をしていきます。

“`
モバイルアプリ開発

元記事を表示

Rails7+devise+omniauthでCORS policyで怒られた時

## 問題

“`erb
<%= button_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path %>
“`

こうしたら、こうなりました。

“`
Access to fetch at ‘xxx’ (redirected from ‘http://localhost:3000/users/auth/google_oauth2’) from origin ‘http://localhost:3000’ has been blocked by CORS policy
“`

## 解決法

https://github.com/hotwired/turbo/issues/288

に習い、`data: { turbo: false }`をつけてTurboを無効にしましょう。

“`erb
<%= button_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path, data: { turbo: false }

元記事を表示

Rails 7 のアプリケーション設定のnew_framework_defaults_7_0項目を適当に調査

2021年12月16日に公式 Twitter からもアナウンスされたように Ruby on Rails の新しいメジャーバージョンである `7.0` がリリースされたので、アップグレードする時の参考記事として書いてみました。アップグレードの手順と、Rails 7 へ完全対応するための `new_framework_defaults_7_0.rb` の調査をしてみたたので需要あれば良いなと。

なお、たまたまこの記事を公開する時に [Ruby on Rails Advent Calendar 2021](https://qiita.com/adv

元記事を表示

【Rails】画像アップロード機能の実装

##手順
①gem “carrierwave“と“mini_magick“をインストール
②uploaders/image_uploader.rbを作成
③uploadersとモデルの紐付けやデフォルト画像の設定、ファイル指定などの細かい設定
④モデルに新たなカラムを追加(例:Postモデルにpost_imageというカラムを新しく追加)
⑤viewの記入
⑥画像アップロードフォーム
⑦画像アップロードに関する日本語化の追加設定

##①gem “carrierwave“と“mini_magick“をインストール
###Carrierwaveとは
Carrierwaveとは、ファイルアップロード用のgem。
Ruby on Railsの画像投稿の仕組みで、よく使われるgemの1つ。

###MiniMagickとは
MiniMagickとは、画像処理ライブラリで、画像サイズ変更や画像反転などといった様々な画像処理を行うことができる。

前提として、 **MiniMagickを使うにはImageMagickというものをインストールする必要があるので注意。**

“`

元記事を表示

Herokuにデプロイまで流れとつまずいたこと

はじめに

Ruby on Railsチュートリアルを学習していた際、Herokuにデプロイする時にエラーに苦戦し、情報共有できればと思い記事にしました。

自身のスキル

プログラミングの学習をし始めて2ヶ月になります。
現在Ruby on Railsチュートリアルを中心に学習しています。もし違っているところなどございましたら、ご指摘いただければうれしいです。

自身の開発環境

・Ruby 3.0.3
・Rails 6.1.4.4
・エディタ Atom
・m1 mac

Herokuへデプロイを行う流れ

②ステージングエリアへ

“`
$ git add -A
“`

③コミットする

“`
$ git add commit -m”コミットメッセージ”
“`

④Herokuにloginする

“`
$ heroku login
“`

⑤Herokuに新しいアプリケーションを作成する

“`
$ heroku create
$ heroku create アプリ名 ※アプリ名を指定したい時
“`

元記事を表示

【Rails】NO FILEのマイグレーションファイルを削除する方法

## やりたいこと

マイグレーションファイルを確認したところ、完全に削除されていないマイグレーションファイルファイル(NO FILE)がたくさんあることに気づいた。
NO FILE状態のマイグレーションファイルを完全に削除したい。

## 解決方法
ターミナルで以下を実行

“`
rails db:migrate:status
“`
マイグレーションファイル一覧が表示される。
今回は一番上のマイグレーションファイルを削除することにする。(マイグレーションIDが20211112062400のファイル)

“`
Status Migration ID Migration Name
————————————————–
up 20211112062400 ********** NO FILE **********
up 20211112141152 ********** NO FILE **********
up 20211113070815 *********

元記事を表示

Railsでmysql2 gemのbundler installに失敗した時の対処法。LibreSSL→OpenSSLで解決

##経緯
ポートフォリオ用Railsアプリの作成のため、rubyとRailsおよびMySQLのインストールを終えてbundle installしようとしたところ下記のエラーが出て失敗。

“`
(中略)

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. mysql2

(中略)

Don’t know how to set rpath on your system, if MySQL libraries are not in path mysql2
may not load
—–
—–
Setting libpath to /usr/local/Cellar/mysql/8.0.27_1/lib

(中略)

1 warning generated.
linking shared-object mysql2/mysql2.bundle
ld: warning: directory not found for option ‘-L/usr/local/opt/openssl/lib’
ld

元記事を表示

Railsのget formでパラメータを送信してもURLに表示されない

## やりたいこと
検索のパラメータをURLに表示させたい。

## やること
### formの作成
[Rails ガイド](https://railsguides.jp/form_helpers.html#%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E6%A4%9C%E7%B4%A2%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0)の通りにformを作成する

“`
<%= form_with url: "/search", method: :get do |form| %>
<%= form.label :query, "Search for:" %>
<%= form.text_field :query %>
<%= form.submit "Search" %>
<% end %>
“`

このままだとコントローラの `params[:query]` でデータを取れるがURLには何も表示されない。

### local: true オプションの追加

“`
<%= form_with url: "/sea

元記事を表示

rails7から`ActiveRecord::RecordNotFound`のメッセージでモデル名に加えてSQLも出力される様になった

# メモ

`ActiveRecord::RecordNotFound`は`ActiveRecord::Base.find`メソッドなど参照したデータが存在しない時に発生する例外です。

“`ruby
User.find(1)
“`

このエラーが発生したときに出力されるメッセージがrails7から変更されていました。

“`ruby
# Before
$ User.find(1)
=> ActiveRecord::RecordNotFound: Couldn’t find User with ‘id’=100
Caused by ActiveRecord::RecordNotFound: Couldn’t find User

# After
$ User.find(1)
=> ActiveRecord::RecordNotFound: Couldn’t find User with ‘id’=100
Caused by ActiveRecord::RecordNotFound: Couldn’t find User with [WHERE `users`.`id` IS NU

元記事を表示

データベース設計においてのインデックスの仕組み

# 結論

“`
「テーブルとは別に検索ように最適化された状態のデータ」
“`

データベースの性能を向上させる方法の一つです。

「探すレコードを識別するデータの項目」
「対象レコードの格納位置を示すポインタ」
で構成されており、これを利用してデータの格納位置を特定し、その位置を直接アクセスする事で、表の検索速度を上げることができます。

###Rubyにはindexメソッドがあります。

##indexメソッドの使い方

“`
オブジェクト.index(“検索したい部分文字列”)
配列の場合は、配列.index(“検索したい配列の要素”)
両者とも見つからない場合はnilが返す。
“`

## 終わりに
初学者です。理解しておくべき事と思い記録しました。
実際に使ったことがないので浅い知識だと思いますが、
また使ってみて、わかりやすく説明できたらと思います。

元記事を表示

【Rails】特定のカラムのデータを配列で取得する方法【初学者の疑問点を簡潔に解説】

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

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

  _データベースから特定のカラムを取得して、all?メソッドで判定する方法_
 
 です。 

## 疑問点についての解説

###結論
pluckメソッドを使用して配列でデータを取得し、all?メソッドで判定する。

###具体例

“`sample_app.rb

@Taro = User.where(name: “太郎”).pluck(‘age’)
@Taro.all?{ |w| w == ’20’ }

“`

上記のように記載することで、
`where`でnameカラムが太郎であるレコードを全て取得し、`pluck`でさらにageカラムのみに絞り、配列で取得します。
そして、`@Taro.all?{ |w| w == ’20

元記事を表示

類似gemを教えてくれるサイト

gemの選定時に知りたい情報No.1といえば、類似gemの一覧です(当社調べ(調べてない(当社もない)))。

しかしrubyに限らず類似ライブラリの検索というのは意外と難しく、GitHubで検索しようにもキーワードに上手く引っかからないケースが多いです。

導入後に、より要件にフィットする類似ライブラリを見つけたことのある人の割合はなんと三人に五人です(当社調べ(調べてない(当社もない)))。

検索してたら偶然こんなサイトを見つけ、共有したく、この記事を書きました。

(私以外の全人類が知っている情報でしたらすみません)

https://ruby.libhunt.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188872/844d7da3-e87e-b026-a101-766a3a3d8421.png)

類似gemの一覧、及び大雑把な比較情報を出してくれるサイトです。

例えばみんな大好き`Ruby on Rails`ですと、こういう情報が出てきます。

![imag

元記事を表示

2021年の振り返り@RailsGirls

この記事は、[Rails Girls アドベントカレンダー2021](https://qiita.com/advent-calendar/2021/railsgirlsjapan) 最終日の記事です。
Ruby3.1、リリースされましたね!

そして毎年、このアドベントカレンダーで、私自身のRails Girlsに関する振り返りを書いていますが、今年もいつもどおり、振り返ることとします。

## いちおう自己紹介
* Rails Girls Nagoya 1st〜5th オーガナイザー
* Rails Girls JPメンバー
* Rails Girls Nagoya、Naganoに出没。
* クマ好き。特にくまモンが好き。
* 最近自作キーボードに再び手を出し始めた・・・。

# 2021年のRails Girlsふりかえり
今年もCOVID-19の影響で、オフライン開催はなし。
来年こそは、できるといいなあ・・・

## Rails Girls Gathering Japan 2021 @ 2021.8.28
昨年に引き続き、オンラインイベントとして開催。
去年よりも参加人数も増

元記事を表示

OTHERカテゴリの最新記事