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

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

Githubの新しいgit push 2022

2021年8月からhttpsのlocalでpushできなくなった(パスワードでアクセルできない)ので

変更点と新しいgit pushの仕方を説明します。

先にファイルに入れたアプリを作成しておきます。

githubでレポジトリを作成します。

httpsとsshがありますがhttpsのままで大丈夫です。

次にホーム画面の右上のマイアイコンからsettingを選びます。

developer settingを選び、personal access tokenを選びます。

名前をmytoken20221010などとしておき、

setting optionでrepoだけを選ぶ。

入力が完了したら、generate tokenをクリック

tokenが発行されたらコピーして控えておきます。

それからコマンドラインでcd test-appのようにアプリまで場所を移動して

git init

git add .

git commit -m “first commit”

it remote add origin https://github.com/githubのユーザ名/アプリ

元記事を表示

rails assets:precompile RAILS_ENV=productionでThe engine “node” is incompatible with this module. Expected version “xx.xx.x”. Got “zz.zz.z”とerrorになった時の対処方

“`package.json
“node”: “xx.xx.x”
“`
この”xx.xx.x”をエラー表示の”zz.zz.z"にバージョンを合わせると解決!

元記事を表示

credentials.yml.encをRubyMineで編集する

# 前提環境

“`
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
$ rails -v
Rails 7.0.1
“`
OSはWindows10 64bitです。

# RubyMineの実行ファイルパスを取得する

スタートメニューなどからRubyMineのアイコンを探して、[ 右クリック->(その他)->ファイルの場所を開く ]を`rubymine64.exe`ファイルが出てくるまで行います。

そうしたら、ファイルをコピーしてエクスプローラーのアドレス欄に張り付けて、その文字列をコピーしてください。

# 環境変数を設定する

値の例: `”C:\…\rubymine64.exe –wait”`

– 一時的

“`
set EDITOR=先ほど取ってきたパス –wait
“`

– 恒久的

“`
setx EDITOR 先ほど取ってきたパス –wait
“`

# 編集

“`
rails credentials:edit
“`

元記事を表示

【RuboCop】特定の「ディレクトリ」をチェック対象外とする

# 概要
bundle exec rubocopを実行した際、ルール違反のファイルを指摘してくれるが、
その中で**特定のディレクトリ**をルール適用対象外とする方法についてメモ。

## 環境
ruby 3.0.2
rails 6.1.4
mysql 8.0.26
rubocop 1.23.0
rubocop-rails 2.12.4

### ルール違反の検出
前提:多数のカラムを持つSampleモデルをrails generateで作成した直後とする。

“`terminal:terminal
# チェックの実行
❯❯❯ bundle exec rubocop

# ルール違反箇所の検出
sample-app/.rubocop.yml: Warning: no department given for MethodLength.
Inspecting 63 files
…………………………………………………….C.

Offenses:

db/migrate/20220119115229_crea

元記事を表示

プログラミング言語を簡単にまとめる

##Java
JavaとはC言語ベースに開発された汎用性の高いプログラミング言語。求人需要が多い
WEBサービスから業務システム、組み込み、など多岐に渡り開発現場で採用されている。
フレームワークはspring Framework

##Ruby
Rubyとはオブジェクト指向のプログラミング言語。コードはシンプルに書きやすく読みやすい。
WEBサービスやWEBアプリケーションができる。
フレームワークのRuby on Rails。クックパッドや食べログに使用されている

##PHP
PHPとは動的なWEBページを生成することができるサーバーサイドのスクリプト語。HTMLは静的WEBページ。
他のプログラミング言語と比べると文法が比較的容易なので取得しやすい。
フレームワークはLaravel

## C#
マイクロソフト社が開発したオブジェクト指向のプログラミング言語。Javaと似ている。
GUIアプリケーション、WEBアプリケーション、ゲーム開発ができる
フレームワークはASP.NET

元記事を表示

RailsでMissing helper file helpers/〜〜というエラーが出た時の解決策

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

Railsチュートリアル6版の学習中、14章の「14.2.4[Follow]ボタン(基本編)」の
`$ rails generate controller Relationships`
を実行後に
>Missing helper file helpers/relationships_helper.rb (AbstractController::Helpers::MissingHelperError)

というエラーが出て戸惑ったのですが、解決したため共有です。

# 結論
`$ spring stop`
コマンドで解決しました。

## springとは
「開発効率を上げるためにバックグラウンドで動いてくれているやつ」らしいです!

https://nyakanishi.work/lets-stop-spring-when-the-rails-command-does-not-work-properly/#toc1

## spring

元記事を表示

【RSpec】変数名を付けながら大量のデータ作成したとき

##instance_variable_set

テストで変数名を付けながら大量のデータを作成したいときに便利。

“`ruby
(Date.new(2022, 1, 1)..Date.new(2022, 1, 31)).each_with_index do |date, i|
instance_variable_set(“@date#{i+1}”, date)
end

@date1 #=> Sat, 01 Jan 2022
@date2 #=> Sun, 02 Jan 2022
@date3 #=> Mon, 03 Jan 2022

“`

##参考

https://docs.ruby-lang.org/ja/latest/method/Object/i/instance_variable_set.html

https://qiita.com/yosaprog/items/c008c709e851c9e7c717

元記事を表示

RailsのN + 1問題とは

#N + 1問題
***ループ処理の中でSQLを発行した際にSQLが大量に増えてしまうことです。***
言い換えるとデータベースのアクセス数が増えすぎてしまうことです。

#N + 1問題の具体例
野球選手検索アプリがあると想定します。

チーム(teams)とそれに所属する選手(players)を例に説明します。

teamsテーブル

|id|name|
|—|—–|
|1|巨人|
|2|阪神|
|3|広島|

playersテーブル

|id|team_id|name|
|—|—–|—–|
|1|1|佐藤選手|
|2|1|田中選手|
|3|2|鈴木選手|
|4|2|渡辺選手|
|5|3|高橋選手|
|6|3|山田選手|

1チームに複数の選手が所属しているので1対多の関係です。

“`app/models/team.rb
class Team < ApplicationRecord has_many :players end ``` ```app/models/player.rb class Team < ApplicationRecord

元記事を表示

railsの環境構築

## はじめに
備忘録
PCはMac M1チップ
参考記事を読んでから実装するとわかりやすいと思います。

## 参考にした記事
[【Ruby】Rubyのインストール手順と動作確認](https://info-wcn.com/ruby-install-mac/)
[Ruby on Rails の環境構築構築](https://info-wcn.com/ruby-on-rails-environment-mac/)

[bundlerで非推奨になった –path –binstubs – Qiita](https://qiita.com/devzooiiooz/items/8babd82f780f01812f9d)
[bundle exec はもういやだ – Qiita](https://qiita.com/circled9/items/1a3c6c38ee40de4cf5e3)

## 特質事項
非推奨の`–path vendor/bundle –binstubs=vendor/bin`を使わない方法で実装する

rails 環境構築部の`bundle exec`を省略する設定

元記事を表示

音声ファイルを保存、再生、ダウンロード機能を実装。【Ruby】

# 目的
音声ファイルをアップロードし保存ができ、再生やダウンロードができるように実装します。
以下の画像のようなオーディオプレーヤーが実装されるのがゴールです。
[![Image from Gyazo](https://i.gyazo.com/c7beca78223170f1134c6b610b1f7668.jpg)](https://gyazo.com/c7beca78223170f1134c6b610b1f7668)

# 手順
### オーディオファイルを保存したいモデルにカラムを追加。

“`ターミナル.
% rails generate migration AddFileToモデル名 file:string
“`
“`ターミナル.
% rails db:migrate
“`
### ストロングパラメータの修正

“`songs_controller.rb
# 省略

private

def song_params
params.require(:song).permit(:file, :title)  # permit()の中に:fileを追

元記事を表示

rails 7.0.1 + MySQL/SQLiteの構成だとrails6.0で作成したmigrateファイルの`references`/`belongs_to`定義が動かない

# TL;DR

`MySQL`を使用している`rails`アプリケーションの場合、`rails`バージョンを7.0.1にして、`rails` 6.0で生成したmigrateファイルを使ってdb migrateを行うとエラーが発生します

# 詳細

## 発生するケース

例えば`users`テーブルが存在していて、`users`に紐づく子テーブル`posts`を追加しようとした場合で以下のようなmigrateファイルをrails6.0の作成したとします。

“`ruby
class Posts < ActiveRecord::Migration[6.0] def change create_table :posts do |t| t.references :users, foreign_key: true t.timestamps end end end ``` の後rails7.1にアップグレードを行い`migrate reset`などmigrateを再度実行した場合に以下のエラーが発生します。 ``` Column `us

元記事を表示

【RSpec】ActiveRecordを継承しないクラスでFactoryBotを作成したい

##initialize_with
Rubyの任意のクラスでFactoryBotを作成したいときは“`initialize_with“`を使う。

“`ruby
# user_info.rb
class UserInfo
attr_accessor :hoge

def initialize(hoge)
@hoge = hoge
end
end

# factories.rb
factory :user_info do
hoge { Fuga.new }

initialize_with { new(hoge) }
end

build(:user_info).hoge #Fugaクラスのインスタンスが返る
“`

####注意
**create(:user_info)**すると下記のエラーが出る。

“`
NoMethodError:
undefined method save!
“`

##参考

https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md

元記事を表示

rails s が上手くいかない。rails newが作成できない時。

簡潔に書くと、

**rubyとrailsのバージョンの互換性**

に問題がある場合がある。

その為、下記のURLを確認して見直すことをおすすめする。
もし、互換性がないものであればURL通りにRuby、railsを入れ直してみると解決する可能性がある。
https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/

補足:上記の方法は下記のようにPumaさえも立ち上がらない人向け
“`=> Booting Puma
=> Rails 5.2.6 application starting in development
=> Run `rails server -h` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGH

元記事を表示

[rails]楽天APIの商品検索でエラー(Application ID is not defined)

#はじめに
railsのポートフォリオを作成している際に、楽天APIを用いた商品検索機能を実装しようとした際に、
エラーに引っかかってしまい、時間を食われてしまったので備忘録として残します。

#開発環境
ruby ‘3.0.0’
Rails 6.0.3.4

#参考サイト
以下のサイトを参考にし、楽天API商品検索機能を実装しようと試みました。
https://www.tom08.net/2016-08-29-133539/
https://takoyarosan.hatenablog.com/entry/2018/07/28/211709
https://freesworder.net/rakuten-api-rails/

#エラー内容
![スクリーンショット 2022-01-18 12.07.28(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874224/e9f0ae4f-0dcb-3e55-e77d-8d2f1812d85d.png)

binding.pryで、でバックしたものの、

元記事を表示

RSpecのControllerテストでNoMethodError: undefined method `get’ for xxxx と表示される

# はじめに
RailsでRSpecを使用してcontrollerのテスト時のエラー NoMethodError: undefined method `get’ for xxx について
# 目次

1. [Rspecでのバージョンの違い](#Chapter1)
1. [エラーの原因](#Chapter2)
1. [参考文献](#reference)



# Rspecでのバージョンの違い
Rspec3以降ではデフォルトでファイルの場所から自動的に推測する機能がなくなっています。
Rspec3以降ではcontorollerのテストをする時は指定する必要があるようです。


# エラーの原因
**1.typeを指定していない**(今回の私)

“`rb
# type: :controller または type: :request とする必要あり
RSpec.describe Api::V1::PostsController

元記事を表示

railsにおける.(ドット)の役割

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

僕がインターン生として実務に入っていて、一つ気になったことがあったのです。

rubyのコードでこのようなコードを見たことがありませんか?

“`

<%= @books.each do |book| %>

<%= book.title %>

<%= book.body %>

<% end %>

“`

この書き方って不自然じゃないですか?
rubyの公式のドキュメントにもこう書いてありました

“`
xxx.yyy
 オブジェクトのメソッド
“`

[ruby公式ドキュメント](https://docs.ruby-lang.org/ja/latest/doc/symref.html#period)

公式ドキュメントのいう通りだとするならば、titleやbookはメソッドになるよなっておもったわけです。titleやbookってカラムじゃね?って思ったので、変だなって思いました。

そこで自分なりに調べてまとめましたので、

元記事を表示

【Rails】「rails g controller コントローラー名」を実行すると…?

## 「rails g controller コントローラー名」を実行すると…?
・コントローラー名(複数形)+controllerという名前のcontrollerが生成される。
・viewsフォルダの中にコントローラー名と同名のフォルダが作られる。

元記事を表示

Twitterのシェアボタンを実装

# 目的
今回、以下の画像の下の方にあるTwitterシェアボタンの実装をどうやったかご紹介します。
同じように実装したいと思っている人のお役に立てれば嬉しいです。

[![Image from Gyazo](https://i.gyazo.com/a98adf439feb3f86c27b89fd23d546a6.jpg)](https://gyazo.com/a98adf439feb3f86c27b89fd23d546a6)

Twitterのボタンをクリックすると別タブでTwitterのページが表示され以下の画像のように
文字やシェアしたいURLが表示されツイートできる状態になります。

[![Image from Gyazo](https://i.gyazo.com/7bf50f1b79b39f19044029ba061c257e.png)](https://gyazo.com/7bf50f1b79b39f19044029ba061c257e)

このようにシェアしたいページをボタンを押せばシェアできるようになっています。

# 実装
結論から言うと以下のように実装しています

元記事を表示

【Rails】The asset “application.css” is not present in the asset pipeline. の解消方法

railsアプリケーションの開発を行っていたら、アクセス時に以下の画面が出てきた。
(関係ないかもですが私はRspecを導入したら発生しました。)

![スクリーンショット 2022-01-17 17.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1292797/9e6fef68-e9ca-4934-0f61-510214a9b83e.png)

# 環境

ruby 2.7.5
Ruby on Rails 6.1.4.4
Docker 20.10.11 / docker-compose 2.2.1
PostgreSQL 14.1

#原因

`log/production.log`を確認したところ、以下のエラーが出ていた。

“`ruby
ActionView::Template::Error (The asset “application.css” is not present in the asset pipeline.):
“`

#解決策

`config/environme

元記事を表示

【書評】Ruby初学者がプロを目指す人のためのRuby入門改訂第2版を読んで学んだこと

## はじめに
久しぶりの投稿になります。Tassyです。
この度、「プロを目指すための人のRuby入門 改訂第2版」を読ませていただきました。
https://blog.jnito.com/entry/2021/11/11/082704
まさか、当選するとは!!と言う気持ちと感謝の気持ちでいっぱいです。
## プログラミング歴
– 受託開発企業で1年3ヶ月働いている
– 基本的にPHP(Laravel)で実装することが多い
– RubyはProgateで一通り触ったことがあるくらい
– 実際にRuby(Ruby on Rails)を使ってアプリを開発したことはない
Rubyについてはど素人です。

## 学べたこと
– Rubyの基本構文(ハッシュ、ブロックetc)
– オブジェクト指向プログラミングとは
– テスト駆動開発の実践
– 正規表現について
– クラスについて
– yeild、Procについて
– パターンマッチについて

Rubyの基本的な構文を学べるのはもちろんのこと、実際にirbを使って手を動かしながらコードを確認できるので、楽しい。そう、Rubyを書くのは

元記事を表示

OTHERカテゴリの最新記事