Ruby関連のことを調べてみた2022年06月03日

Ruby関連のことを調べてみた2022年06月03日

【Rails】【Ruby】form_with で入力された値(params)を取得したい!

## はじめに
未経験からエンジニアに転職しました。
まだまだわからないことだらけですが、毎日楽しく働いています!

業務や個人開発での発見やエラー解決などをアウトプットしています。
初学者向けの内容です。

## やること
Railsの form_with で入力された値を取得して色々操作したい。
今回はサンプルとして
「form_with で入力されたID(数値)を取得して、そのID(数値)を使ってデータを操作する」をやってみる。

# 手順
~~~ruby:view
<%= form_with url: huga_huga_path, method: :patch, local: true do |f| %>

# :hoge_id がparams になる
<%= f.text_area :hoge_id, class: 'textarea' %>
<%= f.submit %>

<% end %>
~~~

![スクリーンショット 2022-06-03 8.31.51.png](h

元記事を表示

バーグ・ザッカーマーク

https://twitter.com/mattn_jp/status/1532304014079311872

Ruby はこういうの書くのが簡単でいいですね。

参考: https://qiita.com/mattn/items/ae764601862b0073071e

元記事を表示

100日後くらいに個人開発するぞ!day038

## 今日は変数を使ってみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/3738f32e-d525-657e-f430-c37b7d41ccc6.png)

## 今日の学び

### 変数とは
* 変数とは:値を入れる箱のようなものを変数という。
* 変数の定義:変数を使うには定義する必要があり、「変数名=値」で定義する。
* 代入とは:変数に値を入れることを代入という。
* 注意点
* 変数をクオーテーションで囲むと変数ではなく文字列となる
* プログラムは上から順に実行されるため変数を定義した後でしか使えない

### 変数を使うメリット
* 同じ要素を繰り返し使える
* 変更に対応しやすい
* 何の要素かわかりやすい

### 変数名のルール
* 英単語を用いる
* 頭文字に数字を用いるとエラーが出る
* ローマ字や日本語は望ましくない
* 2後以上の場合はアンダーバーで区切る

### 変数の値を更新する
* 変数

元記事を表示

M1 Mac に変えたら mysql2 gem で symbol not found in flat namespace ‘_mysql_affected_rows’ が出た

世人もすなるM1 Mac移行といふものを、吾もしてみむとてするなり。

担当しているrubyのプロジェクトで、そろそろM1 Macで開発できるようにしましょうとなり、移行作業しました。
bundle install は問題ありませんでしたが、rspecを実行しようとしたら、次のようなエラーがでました。

“`
LoadError:
dlopen(/Users/astronoka/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle, 0x0009): symbol not found in flat namespace ‘_mysql_affected_rows’ – /Users/astronoka/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle
“`

関数シンボルが見つからず、、、、gem mysql2が正しくビルドできてないみたい。

元記事を表示

PHP・Rubyのスタックトレースの出し方

## スタックトレース
スタックトレースとは、実行中のコンピュータプログラムにエラーが発生した際に、直前に実行していた関数やメソッドなどの履歴を表示すること。
ログよりも詳しいエラー箇所を特定することができる。

https://e-words.jp/w/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9.html

## Ruby
ドキュメントには載ってないが、“`join(“\n”)“`しないとかなり見づらいのでした方がいい。
“`ruby
def methd
raise
end

begin
methd
rescue => e
logger.error e.backtrace.join(“\n”)
end
“`

https://docs.ruby-lang.org/ja/latest/method/Exception/i/backtrace.html

## PHP
“`php
debug_print_backtrace();
“`

https://www.p

元記事を表示

carrierwaveで動的に画像サイズを変更する

## 結論

– 結論としては自作でメソッドを追加し、そこから標準の加工メソッドにサイズを指定して渡すようにする(今回はmodel classに値を渡してそこから取得するようにしました)

“`app/models/user.rb
class User < ApplicationRecord mount_uploader :image, ImagesUploader attr_accessor :width, :height end ``` ```app/uploaders/images_uploader.rb class ImagesUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick ## 独自メソッドでサイズを指定できるメソッドを作成してそれをprocessで呼び出す def dynamic_resize_to_fil resize_to_fill model.width, model.height end process :dynamic_re

元記事を表示

sitemap generator + jsonでサイトマップ生成

SEO対策でサイトマップをGoogleに登録するため、サイトマップを生成することにしました。
ただ、Next.jsのSSRでサイトを実装していて
インデックスさせたいページの件数が膨大(50万件くらい)だったので、手動で作るのは無理です。

Railsで「sitemap generator」という便利そうなgemがあったので、
こちらを使ってサイトマップを生成してみます。
インデックスさせたいURLは、jsonで下記のような形式で用意しました。

“`json
{
{“id”: “123456”}
{“id”: “234567”}
}
“`

まずgemをインストール。

“`
gem install sitemap_generator
“`

`sitemap.rb`というファイルを作成し、下記の内容を記述します。

“`ruby:sitemap.rb
require ‘rubygems’
require ‘sitemap_generator’

## 空配列を用意
idList = []

## jsonデータからidの値を読み込む処理を書く(本記事では割愛)
#

元記事を表示

NoMethodError in ~#index (エラーの確認・対処)

# はじめに
Rails 6.0.3を使用してローカル環境にてアプリケーションを作成中にエラーに遭遇しました。本当に初歩的なミスですが、今後よく遭遇するであろうエラーとのことでしたので備忘録として記事にします。

# 環境
Ruby: 3.0.1
Rails: 6.0.3

# 設定内容
“`ruby
#controllerファイルの場所
frasse_app/app/controllers/frasses_controller.rb

#frasses_controller.rbのコード(抜粋)
def index
@frasses = Frasse.all
end

def new
@frasse = Frasse.new
end
“`
“`ruby
#viewsファイルの場所
frappe_app/app/views/frasses/index.html.erb
#index.html.erbのコード(抜粋)
<% @frasse.each do |frasse| %>

<%= frasse.con

元記事を表示

rbenv インストール

# Homebrew

“`
xcode-select –install
“`

## インストール
https://brew.sh/index_ja

“`
brew doctor
“`

“`
brew install wget
“`

# rbenv

“`
echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bash_profile
echo ‘if which rbenv > /dev/null; then eval “$(rbenv init -)”; fi’ >> ~/.bash_profile
source ~/.bash_profile
“`

“`
rbenv install –list    # => インストール可能なバージョン一覧の表示
rbenv install 2.6.1 # => rubyのインストール
rbenv rehash # => rbenv の再読み込み
rbenv global 2.6.1 # => defaultで使うrubyのバージョン

元記事を表示

Lintの使い方

rubocopとは慣習的でないRailsのコードを発見し、それを簡単に修正してくれる便利なツール。

rubocopの正誤表を見るには、“`EmptyLinesAroundClassBody“`でgoogle検索をかける。もしくは下のURL。

“`
https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Layout/EmptyLinesAroundClassBody
“`

Rubocopでテストを実行するにはターミナルで
“`
bundle exec rubocop
“`
を実行する。

rubocopは間違いを自動的に修正してくれるコマンドがある。
“`
bundle exec rubocop –auto-correct
“`
これでほとんどの間違いは解消してくれる。

上のコマンドでも解消してくれない例もある。例えばif文などである。
その場合は手動で修正する必要がある。

元記事を表示

accepts_nested_attributes_for で更新するモデルに対するバリデーションエラー(ActiveModel::NestedError)を外部からセットする方法

## はじめに

Railsでは `accepts_nested_attributes_for` を使って、`has_many`関連する子レコードを1つのフォームで更新することができます。
イメージとしてはこんな感じです。

![sample.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/fbd1d0e0-3c36-dcaf-715c-a787fbce39b4.jpeg)

上の画面では以下のようなBookモデルと、それに関連するAuthorモデルを更新するフォームです。
(本と著者はmany-to-many関連だろう、というツッコミが来そうですが、説明のために単純化してるので気にしないでください)

“`ruby
class Book < ApplicationRecord has_many :authors, dependent: :destroy accepts_nested_attributes_for :authors, allow_destroy: true

元記事を表示

rbenvでrubyのバージョンを指定する方法

## OSレベルでの指定
“`
$ rbenv global [バージョン]
“`

## ディレクトリレベルでの指定
“`
$ rbenv local [バージョン]
“`
上記コマンドを実行すると、実行フォルダに.ruby-versionというファイルが作成される。
その中にRubyのバージョンが記述されている。
RailsのPJなどの場合、プロジェクトのルートフォルダにこのファイルを作成し、共有しておくことでプロジェクト毎にRubyのバージョンを共有することが可能。

## シェルレベルでの指定
“`
$ rbenv shell [バージョン]
“`

## 環境変数でのバージョン指定
“`
RBENV_VERSION=[バージョン]
“`

元記事を表示

100日後くらいに個人開発するぞ!day037

## 今日はRubyを動かしてみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/af79e29a-696c-7524-648e-6a5bfcd239a4.png)

## 今日の学び

### Rubyとは
* RubyはWEBアプリケーションシステムをつくるためのプログラミング言語
* PHPやPythonと類似

### Rubyで文字を出力する方法
* `puts “テキスト”`というコードを書くと”テキスト”がコンソールに出力される

### コメントを書く方法
* `# テキスト`と書くとその行はコメントになりコンソールには出力されない

### 四則演算の結果を出力する方法
* `puts 計算式`で四則演算の結果を出力できる
* 例:「4+2」の結果を出力したい場合
* `puts 4+2`
* 「%」を用いると割り算の余りを計算できる
* 例:「9÷2」の余りを出力したい場合
* `puts 9%2

元記事を表示

Topページを絞り込みたい!

# 【Rails】Topページを絞り込むページ作成!
## はじめに
本記事ではTOPページで検索したものを他ページで表示するコードを記載しています

## 前提

– 記事のテーブルはtweets
– tweetsで検索する文字列はbody
– indexページ(index.html.erb)に検索フォーム、searchページ(search.html.erb)検索結果を表示
# 手順
## search.html.erb作成
↑の名前のファイルを自分のテーブル名のViewファイルの中に作成しましょう!
その中に一度自分のindexページ(index.html.erb)をコピペして入れておきましょう!
何かindexページと違う文字など入れておくとわかりやすいです🔥

## ルーティング設定
“`ruby:config/routes.rb
get ‘search’ => ‘tweets#search’
“`
## 検索フォーム作成
“`erb:index.html.erb

<%= form_with url: sea

元記事を表示

【HTML/CSS/レスポンシブ】PCとモバイルで表示画像を変える方法

## 初めに

こちらはHTMLとCSSのみで、PCとモバイルで表示画像を変える方法(画像)をまとめた記事です。
Railsで実装した方法も併せてご紹介しています。

## 手順

#### ①HTMLにviewportを読み込ませる

レスポンシブに対応させるため、HTMLのhead内にviewportを読み込ませます。

“`sample.html



サイトのタイトル


“`

#### ②HTMLに表示させたい画像を記述

PC、モバイルで表示させたい画像2枚にそれぞれ違う名前のクラス名を追加します。
例 
・class=”pc”
・class=”mobile”

“`sample.html

【RSpec / Rails】画像投稿機能の結合テストコード

## 初めに

前回の結合テストコードの書き方(新規登録に関するテストコード)に引き続き
今回は画像投稿機能の結合テストコードを実装しました。
次の機会に行う際、抜け漏れがないよう記録していきたいと思います。

## 結合テストコードを書く手順

### ①結合テストコードを書くためのファイルを生成する

今回は画像投稿機能に関する結合テストコードを書いていきます。

“`
% rails g rspec:system items
“`
生成されたファイル
spec/system/items_spec.rb


以下のようなファイル構成になっていれば成功です。
“`
🗂  spec
  ∟    🗂 factories
        🗂 models
        🗂 requests
         🗂 system
          ∟  users_spec.rb ←前回生成したファイル
        

元記事を表示

rack gemの脆弱性CVE-2022-30122, CVE-2022-30123について

gem [rack](https://github.com/rack/rack)の脆弱性[CVE-2022-30122](https://discuss.rubyonrails.org/t/cve-2022-30122-denial-of-service-vulnerability-in-rack-multipart-parsing/80729), [CVE-2022-30123](https://discuss.rubyonrails.org/t/cve-2022-30123-possible-shell-escape-sequence-injection-vulnerability-in-rack/80728)について

# CVE-2022-30122
## アナウンス

https://discuss.rubyonrails.org/t/cve-2022-30122-denial-of-service-vulnerability-in-rack-multipart-parsing/80729

## 概要

以下の処理を使用している場合にrackでMIMEのパースを行う際に

元記事を表示

[Rails] コードに全角スペースが混ざるとCSSレイアウトに影響が出る事がある

初投稿です。
プログラミングを初めて3ヶ月。
備忘録としてつまづいたところを記載し、アウトプットツールとして活用していきます。

# なんかレイアウトがちょこちょこズレてる
BootstrapとCSSを使ってレイアウト調整を行っていたが
コンテンツの配列がどう調整しても合わない、、、
(ここでは一旦画像は添付しませんが、、、)

# 検証ツールを開いて確認
原因わからず、、、

# メンターに聞く
コード的には問題ない。
残るは全角スペースが悪さしているかもとのこと。
command + Fで全角スペースを検索すると、、、、

なんとか数カ所出てきた!!

# 半角に修正
直った!!!

プログラミングにおいて全角は敵すぎる、、、、
そんな事を痛感した瞬間でした。

スペースは気づかない事多いけど
ちょこちょこ確認していこうと思います!!

元記事を表示

🔰【初学者用】RSpecでテストコードを書こう!【概念・準備】

# はじめに
オリアプ作成も遂に終盤に差し掛かり、今日からテストコードを書くフェーズに突入します。
テストコードを書く前に今まで学んだテストコードの知識を今日から少しずつアウトプットしていきたいと思います!
※プログラミング初学者の私がアウトプットとこれから学習される皆様の参考になればと思い投稿しています。また、マークダウン記法も不慣れな初学者ですので、間違い等があれば指摘いただけると幸いです。

## この記事を見てできるようになること
Ruby on Railsのgemであるrspec-railsを使用して、テストコードを実装できるようになります!

## Rspecとは?
Ruby on Railsのアプリケーションのテストコードを便利に実装できるGemです。

## テストコードを書く意義
テストコードとはアプリケーション内に記述する、そのアプリケーションの挙動を確認するコードのことを言います。
なぜ、このコードを書かなければならないのでしょうか?メリット・デメリットに分けて考えてみましょう!
**テストコードを書くメリット**
①クオリティの担保
ブラウザでアプリケーション

元記事を表示

Rails × chart.js でサウナ活動(投稿)データに連動するラベル付きの円グラフを作ってみた。

# 0. はじめに

こんにちは、[まつけん](https://twitter.com/matsuken_web314)です。
[サウナ記録を管理するアプリ](https://totonoi.org/)(転職活動用のポートフォリオ)に組み込んだ
**投稿に連動する円グラフ**をどうやって実装したのかを解説する記事です。(下の画像参照)

![sakatugraph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1584967/2b1e7ddb-4220-b2d1-e6fb-bae959694ab5.png)

↓ポートフォリオの解説記事です↓

https://qiita.com/matsuken314/items/2ae660c7635cca726283

## この記事のゴール(とりあえず)

– [chart.js](https://www.chartjs.org/docs/latest/)の円グラフがどういう風にWebアプリに組み込まれるのか分かる
– gemの

元記事を表示

OTHERカテゴリの最新記事