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

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

memcachedの概要と動作確認

## はじめに
インターン先でMemcashedに触れる機会があったので、どんなものか調べてみました。
Memcashedについて様々な素晴らしい記事があり、それらを参考に体型立ててまとめたものなので引用が多くなっております。

## memcachedとは
とてもわかりやすい記事があったので、そちらを引用させていただきます。

>memcachedは高性能な分散メモリキャッシュサーバ。データベースへの問い合わせ結果を一時的にキャッシュすることで,データベースへのアクセス回数を減らし,動的なウェブアプリケーションの高速化やスケーラビリティの向上のために利用されている。
引用元:
[memcachedを知り尽くす ~第1回 memcachedの基本~](https://gihyo.jp/dev/feature/01/memcached/0001)

## 導入方法
>参考:[macでmemcachedを導入する手順 – Qiita](https://qiita.com/makotok7/items/9998b15f79fc7a53af24)

###インストール
“`shell:con

元記事を表示

Blocked hostエラーが出た時の対処法

①やりたいこと
Rails6の本番環境でrails sをしたときにBlocked hostエラーが発生しました。

②エラー内容
![e322b88f1ab7ec7e6f5ef601ef851134.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1962714/b6dd7688-9647-4acd-0858-85a183dbd69c.png)

今回の対処法は以下の記事を参考にさせていただきました!
https://qiita.com/kodai_0122/items/67c6d390f18698950440

https://weseek.co.jp/tech/680/

③原因
DNSリバインディング攻撃を防止する ActionDispatch::HostAuthorization middleware によるものらしい、、(Rails6から追加された機能です)

④解決策
3つありますが、基本的には一つ目の解決方法でOKです。筆者も一つ目で解決しました。

1. Rail

元記事を表示

Rails [管理画面] 管理画面へのログイン機能、管理画面トップページの作成 解説

#AdminLTE 3 のインストール

“`:ターミナル
yarn add admin-lte@^3.0
“`
・node_modulesというディレクトリが作成される。

#管理者画面用のマニフェストファイルの設定

・管理者画面ではユーザー画面とレイアウトが全く別物の為、管理者画面とユーザー画面は分ける。
・「app/assets/javascripts/admin.js」「app/assets/stylesheets/admin.scss」ファイルを作成。

“`:app/assets/javascripts/application.js
//= require jquery3
//= require activestorage
//= require rails-ujs
//= require bootstrap-sprockets
//= require cable.js
//= require tree. ←ここを削除
“`

・`//= require tree.`はapplication.jsと同じ階層の全ファイルを読み込んでいる。今回作成した、admin.j

元記事を表示

RailsのSTIで子クラスがfindに引っかからなくてハマった話

# 前提環境
“`
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
$ rails -v
Rails 7.0.1
“`

# 問題
ツイッターのクローンアプリを学習用に作っていて、ツイート系のモデルが`Tweet < ApplicationRecord`、`NormalTweet < Tweet`、`Reply < NormalTweet`となる設計で実装しました。 ※Tweetはツイートの作成者`author`、NormalTweetはツイート内容`text`、Replyは返信先`reply_to`を持ちます。 それで開発中`NormalTweet.find()`にその子クラスである`Reply`が引っかるときと引っかからない時がある!(`Couldn't find NormalTweet with 'id'=n (ActiveRecord::RecordNotFound)`)という問題が発生。 # 原因 Rails(のデフォルトではdevelopment環境)では、クラスが使用さ

元記事を表示

【MinIO】RailsアプリケーションにS3互換ストレージ MinIO を導入してみる

# はじめに
プライベートでの共同開発において、「開発環境と本番環境の差異をできるだけ少なくしたい」という思いからローカルで動かせるS3互換ストレージを調べていました。業務で`fake-s3`というサービスを使用したことがありますが、MinIOというサービスも現場で使われている例を発見したのでそちらを導入してみました。

# MinIOについて
MinIOとはAWS S3互換のオブジェクトストレージのことです。

https://min.io/

* 特徴
* ローカルに仮想的な S3 環境を構築できる
* ローカルの仮想環境なので不用意にAPIを叩いてもお金も掛からない

# シナリオ
簡単なアプリを作成した後、MinIOを導入し、投稿した画像がMinIOに格納されるかを確認してみます。

### 1. アプリの土台を作成する
以下の機能をもつ簡易的なブログアプリを作成する。

* 記事一覧機能
* 記事詳細機能
* 記事投稿機能

#### 動作確認
MinIOを用いない状態で画像を投稿し、storageフォルダにファイルが格納されることを確認する

### 2.

元記事を表示

RailsでYoutubeの動画を投稿・編集する方法

# 概要

Youtubeにアップロードされた動画をRailsアプリで投稿したいという方に向けたものです。
Youtubeの動画を投稿した時にYoutubeのURLのなかで最後の11桁の値のみを取り出し、他の変数に取り入れるようにしている記事が多い。
それだと編集する時に、末尾11桁を入力しないとエラーが起こってしまうので、それが起きないような、その実装方法を記載します。

# 1. YouTubeURLの種類

### YouTubeURLは僕がパッと見た感じ3種類のURLが存在します

#### PCでのYouTube閲覧時のURL 一番スタンダード?

![qiita-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364026/54573626-027c-083a-62a9-faf618d10c2a.jpeg)

#### 共有用URL (スマホで視聴中の動画を友達に共有するときはこれ)
https://

元記事を表示

renderで部分テンプレートを呼び出す方法

#はじめに
 この記事はプログラミング学習の備忘録です。今回はrenderを使って指定のビューファイルを呼び出す方法についてまとめます。
#viewでrenderメソッドを使う
 まずviewでよく使われるrenderメソッドの用法は、部分テンプレートを呼び出す時です。部分テンプレートとは複数のviewファイルで使われるコードを切り出して、共通化するファイルのことです。
renderで部分テンプレートを呼び出すためには、まずは共通部分をまとめた部分テンプレートファイルを作ります。
この時に気をつけることは、ファイル名の先頭にアンダーバーをつけて
**「_tweet.html.erb」**のような形にすることです。

次に部分テンプレートを呼び出します。呼び出し方は主に、
①部分テンプレートをそのまま呼び出す場合
②変数を渡す場合
の2つがあります。順番に説明します。 
#部分テンプレートをそのまま呼び出す
例えばformを作る部分テンプレートには変数を渡さず、そのまま呼び出されます。
まずは「_form.html.erb」というファイルを作り、

“`new.html.erb
<

元記事を表示

MVVMパターンをVue.jsのコードから理解してみる。

## はじめに
アプリ開発をしていると、MVVMパターンで作ってみました的な記事をよく見る。
そこでMVVMパターンを理解しようと調べてみると、**MVCパターンとの比較**で語られる記事が多く、イメージがしにくい。
なぜなら、各パターンの代表として語られるフレームワークのカバーする範囲が、まるで異なるからだ。

– Ruby on Rails(MVC) -> FE/BEを含むフレームワーク
– Vue.js(MVVM) -> FEフレームワーク

これらを比較すると、MVCのVの部分を細分化したものがMVVMなのか?と誤解してしまう。

**本記事の目的** 
Vue.jsで作成したサンプルアプリのコードに対して**何がMVでVでMなのかを対応付け**行い、MVVMに関する理解を深める。

Vueのサンプルアプリのコード

https://github.com/ninoko1995/vue-app

Vueのサンプルアプリのurl

https://angry-carson-84bdcd.netlify.app/

## MVCとMVVMの違い(ちょーざっくり)
MVC, MVVM

元記事を表示

stripメソッドとそれに関連するメソッドのまとめ

rubysilverを勉強するためのサイトのRexを勉強してわからなかったメソッドがあったので備忘録として残しておきます
https://rex.libertyfish.co.jp/

##Stripメソッド
stripという英語の意味は、「剥ぎ取る」という意味です
結論からいうと、文字列先頭と末尾の空白文字を全て取り除いた文字列を生成して返すメソッドなんです。
[ruby 公式ドキュメントより](https://docs.ruby-lang.org/ja/latest/method/String/i/strip.html)

このリファレンスに書いてあるのですが、「空白文字の定義は ” \t\r\n\f\v”」と書いてあるんです。
そこで思ったのが、「\\t\r\n\f\v」ってなに?って思ったんですよね。
(この文字列の中にスペースも入ってるのでご注意を)

ここで大事になるのが、正規表現についての知識が必要になるんですよね。
よく調べたら、これがrubyの[公式ドキュメント](https://docs.ruby-lang.org/ja/latest/doc/spec=2freg

元記事を表示

Failing package is: mysql-community-libs-8.0.28-1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# エラー内容

“`
The GPG keys listed for the “MySQL 8.0 Community Server” repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

Failing package is: mysql-community-libs-8.0.28-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
“`
# 経緯
“`
Gem files will remain installed in /home/ec2-user/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mysql2-0.5.

元記事を表示

自作アプリをRails6から7にアップデートした際の手順。

12月にRails7がリリースされたので、1ヶ月ほど遅れましたが自作アプリをRails7にアップデートしてみました。

## まずやること
Gemを最新のバージョンに上げておきます。

“`
bundle update
“`
こんなエラーが出ました。

“`
Bundler could not find compatible versions for gem “actionview”:
In snapshot (Gemfile.lock):
actionview (>= 6.1.4.4)

In Gemfile:
actionview (~> 6.1.4.4)

rails (~> 7.0.0) was resolved to 7.0.0, which depends on
actionview (= 7.0.0)
“`
ログを見た感じ、railtiesのバージョンを上げればいいようです。
なのでGemfileを以下のように編集。
・変更前

“`
gem ‘actionview’, ‘~> 6.1.4.4’
“`
変更後

元記事を表示

[JS]基礎的な文法(変数定義)

アウトプットとして

Rubyの学習をしてJSのコードを見ると、ごちゃごちゃしてるように見えてどうしても苦手意識が拭えない…
一つ一つ分解するとそんなに難しくないはずだとは思っているが…
というわけで、苦手意識克服するために超基礎的なところから!!

## JSの変数定義の仕方
JavaScriptの変数定義の様式は、var、const、letと3つ存在する

### var
varの特徴として、`再代入、再定義ともに可能`

“`javascript
var sample = “こんにちは”

sample = “こんにちは”
// 再代入OK

var sample = “こんにちは”
// 再定義OK
“`

### const
後から書き換えることができない変数を定義する書き方
constの特徴として、`再代入、再定義ともに不可`

“`javascript
const sample = “こんにちは”

sample = “こんにちは”
// 再代入NG →エラーが起こる

const sample = “こんにちは”
// 再定義NG →エラーが起こる
“`

※c

元記事を表示

systemテストで Net::ReadTimeout が出るときの対応

テスト用のCIサービスにHeroku CIを使ったところ、systemテストで`Net::ReadTimeout`が頻発しました。

driven_byメソッドにoptionsオプションを加え、`timeout: 秒数` を指定したところ治りました。

“`rails_helper.rb
config.before(:each) do |example|
if example.metadata[:type] == :system
driven_by :selenium, using: :headless_chrome, screen_size: [2000, 3000],
options: { timeout: 120 }
end
end
“`

以下、各種ライブラリのソースコードから。driven_byメソッドのoptionsオプションは、Capybara::Selenium::Driver に渡されます。

“`actionpack-6.1.4.4/lib/action_dispatch/system_testing/dri

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事