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

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

Railsのアプリケーションの新規作成からページを表示するまでの手順を徹底解説

## 概要
こんにちは。shun198です。
今回はRailsアプリケーションの新規作成からページを表示させるまでの手順を解説したいと思います。

## 前提
rubyのバージョンは2.6.6
Railsのバージョンは6.0.5
linuxの基本的なコマンドは知っている
RailsではじめてWebアプリケーションを作成する
MacOSを使っている(zshを使っている)
ローカル(Mac)上でページを表示します

## アプリケーションの作成からWebページの表示方法
### アプリケーションを作成
ターミナルを開いてRailsのアプリケーションを任意のフォルダ内に移動して作成します。
今回私はqiita_appという名前で作成しますが、アプリケーションの名前は自由に決めてください。
ターミナルで
“`
rails new
“`
と打つと大量のファイルが生成されます。ls -lでリスト化して見てみると以下の通りです
“`
❯ ls -l
-rw-r–r– 1 shun staff 1967 6 4 17:08 Gemfile
-rw-r-

元記事を表示

【Ruby on Rails】migrationファイル change・up/downの使い分けについて

## はじめに
カラムの追加や削除をしたり、テーブル内の情報を変更する際にmigrationファイルを追加して対応することがある。

その時に、基本的な記述として、、、
“`ruby
def change

end
“`
“` ruby
def up

end

def down

end
“`
という2つのパターンがある。

厳密には、ファイル名の付け方(クラス名の付け方?)、“rails g migration <クラス名>“で入力されるクラス名によって、上のどちらのパターンのメソッドでファイルが生成されるらしい。
ただ、このメソッド changeとup/downの違いがいまいちわからなかったのでまとめておく。

間違いがありましたら、コメントいただけますと幸いです。喜んで修正します。

## changeとup/downの違い
違いとしては、“メソッドの中で 使用できる処理“に違いがあるらしい。
Rails公式ドキュメントには以下の処理がchangeメソッドでは使用できるらしい。

現時点では、changeでサポートされているマイグレーション定義は以下のものだけで

元記事を表示

プログラミングと出会って

## はじめに
エンジニアとして就職できたので、これを機に勉強を初めてからエンジニアになるまでのことを書いてみようと思う。
この文章は長いですけど、僕の思いを書いたので是非読んで欲しいなと思います。
10分ほどみなさんの時間を僕に時間をください。

### 自己紹介
年齢:20代前半
学歴:高卒(大学中退)
職歴:正社員の経験なし

## プログラミングを始める前に
まずプログラミングを始めたきっかけを話そうと思います。
当時、資格スクールに通っており、担当の先生に言われるがまま安定した収入とかっこよさに惹かれて公務員を目指しました。
今思えばそれがそもそも良くなかったのかなとも思っています笑
ただ、公務員の勉強は思ったよりもつまらなくて、元々勉強が好きではなかったため、友達とばかり遊んでまともに勉強をしていなかったです。
その結果もちろん受かりませんでした。
担当の先生に,「来年またチャレンジしよ」と言われましたけど、自分はまた勉強しないだろうから同じ結果になるのが分かっていた為、もういいですと言いました。?
そこで担当の先生が勧めてくれたのがプログラミングです。

## プロ

元記事を表示

【RSpec】システムテストでcurrent_userが使えないことを解決する

## 記事の対象者

・RSpecのシステムテストでユーザーの情報を渡す方法を知りたい方

## 前提条件

Ruby 2.6.3
Rails 6.1.5

**< gem >**
・capybara
・rspec-rails
・factory_bot_rails
・faker

## 解決方法の手順
結論、この手順で進めると解決することができました!

・rails_helperにDeviseを記述する(include)
・FactoryBotでUserモデルのダミーデータを作る
・システムテスト画面のbeforeでsign_userを記述する

## 私がハマったところ
devise機能のcurrent_userをテストでも使用できる思っておりました。
しかし、エラーが出てしまうため、アドバイスをいただいたところ、下記のことが判明しました。

**current_user はテスト項目が通らない**

ということで、deviseのヘルパーを使用してuser情報を渡す方法がありました。
1つずつ手順を書いていきます。

## rails_helperにDeviseを記述する(incl

元記事を表示

四捨五入、切り捨て、切り上げをしたい(Math)

## はじめに
現在、独学でJavaScriptを勉強中です。
`Mathオブジェクト`で躓いてしまったのでまとめてみました。

## よく使うMathオブジェクト
`Math.round` ・・・四捨五入する(戻り値 数値)
`Math.round()メソッド`は次のような挙動をする。
・小数点部分が0.5以上であれば、次に大きい整数へ切り上げ
・小数点部分が0.5以下であれば、次に小さい整数へ切り下げ
“`javascript
Math.round(5.34); //結果: 5
Math.round(6.8); //結果: 7
“`
`Math.floor` ・・・切り捨てる。数値以下の最大の整数を返す(戻り値 数値)
※少数の大小に関わらず切り捨てる。
“`javascript
Math.floor(5.34); //結果: 5
Math.floor(6.8); //結果: 6
“`
`Math.ceil` ・・・切り上げる。数値以上の最小の整数を返す(戻り値 数値)
※少数の大小に関わらず切り上げる。
“`javascript
Math.ceil(5.34); //結

元記事を表示

素人がレビューせざるを得ない時

## 実務1年生が人生の先輩をreviewしないといけなくなった

私は素人である。今の会社に実務1年で転職して来た。

1年なんて経験は無いに等しいから、「未経験」と強調して面接は押し切った。

そしたらなぜか「今まで色々経験されてるので」とった理由で給与などもある程度色をつけてくれた。

そんな事はしなくてよろしい。私に過度な期待はしないで下さい。なぜなら過去に勝手に期待値上げられた後、「実は大した事ないですね」って、惨めな思いをした経験があるからです。

大した事ないと思ってたけど、実は結構やりなさるねあんた。そういったストーリーを、そういった展開を私は好む。80点が30点にではなく、時間の流れとしては、その逆が望ましい。

その私は今、SES出身の年上先輩をgithub reviewしている。

### 言葉の威力を再確認せよ

これまでの経験上、chatなどでやり取りする時はなるべく絵文字など装飾を使うようにして来た。

了解です、より了解です!
了解です!より了解です?

以前の会社では絵文字使う事がmustになったぐらい、確かにこの手法は威力がある。果たして確かに、空気は

元記事を表示

Rubyのspawnで生成したプロセスを終了できない罠と解決策

## 概要

Ruby言語から、コマンドラインツールを呼び出すときには、`system` や `open3` を使うが、非同期的に呼び出したい場合は`spawn` を使うことが多い。しかし、引数のこまんどに空白などの文字が入ると、シェル経由の実行になってしまい、プロセスIDを記録してプログラムを終了しようとしても、思ったように終了できないことがある。これを防ぐためには、コマンドに空白などの文字を入れず、引数を分割する。

“`ruby
pid = spawn(“command which you want to execute”)
“`

“`ruby
pid = spawn(“command”, “which”, “you”, “want”, “to”, “execute”)
“`

## もう少し詳しく

Rubyでコマンドを非同期的に実行するためには、spawnを利用して、

“`ruby
pid = spawn(“command which you want to execute”)
“`

`detach` を呼び出せばいい。

“`ruby
thr =

元記事を表示

RSpecでsessionメソッドを使えるようにするには?

## 背景
フレンドリーフォワーディングのテストをRSpecで行いたい。
編集ページのpathをsessionがちゃんと保持しているのかを確認するために、編集ページのpathと` session[:forwarding_url] `が一致していることをテストしたいが、sessionメソッドを使おうとしたらエラーが発生し解決に時間がかかったので、備忘録として投稿します。

## 失敗したコード
“` spec/system/users_edit_spec.rb
RSpec.describe “Users”, type: :system do
describe ‘PATCH /users’ do
let(:user) { FactoryBot.create(:user) }
.
. #中略
.
it ‘ログインすると、編集画面にリダイレクトされる’ do
visit edit_user_path(user)
#↓ここでフレンドリーフォワーディングのテストをしている
expect(session[:forwarding_url]).to

元記事を表示

【Rails+DynamoDB】Dynamoidの主な使用方法まとめ

# はじめに

[Dynamoid](https://github.com/Dynamoid/dynamoid)は[Amazon DynamoDB](https://aws.amazon.com/jp/dynamodb/)をRailsアプリケーションで利用するためのORMです。
Dynamoidを用いることで、ActiveRecordに近い感覚でDynamoDBにアクセスできるようになります。
この記事ではRailsアプリケーションにDynamoidを導入する手順と主な使用方法をまとめました。

# 導入
Gemfileに以下を追記します。

“`ruby:Gemfile
gem ‘dynamoid’
“`

バージョンについて

AWS SDKとのバージョン互換性は次のようになっています。
| Dynamoid version | AWS SDK version|
|:-:|:-:|
| 0.x | 1.x |
| 1.x | 2.x |
| 2.x | 2.x |
| 3.x | 3.x |

元記事を表示

【RubyMine】よく使う便利なショートカット10選

# はじめに
私は普段、[RubyMine](https://www.jetbrains.com/ja-jp/ruby/) というIDE(Integrated Development Environment)を用いてMacでRuby/Railsプロジェクトの開発をしています。
そんなRubyMineには便利なショートカットが数多くあります。
中でも、私が普段からよく使うショートカットを一部抜粋して紹介しようと思います。
すべてのショートカットを知りたい方は ▷[こちら](https://resources.jetbrains.com/storage/products/rubymine/docs/RubyMine_ReferenceCard_mac.pdf)。
# よく使う便利なショートカット10選

| 記号 | 意味 |
|:-:|:-:|
| ⌃ |Controlキー|
| ⌥ | Optionキー |
| ⇧ | Shiftキー |
| ⌘ | Commandキー |
## 1. ⌘Click / ⌘B : 宣言場所 ・ 定義元参照
Commandキーを押しながら変数

元記事を表示

ターミナル

620 cd /var/www
621 cd
622 cd /var
623 sudo chmod 755 www
624 cd www/
625 sudo git clone https://github.com/jojo232/cloud9.git
626 ls
627 cd cloud9
628 gem install bubler
629 gem install bundler
630 vim .gemrc
631 cd
632 vim .gemrc
633 rails -v
634 ruby -v
635 gem install rails -v 6.1.4
636 cd /var/www/cloud9
637 bundle install
638 sudo chown ec2-user:ec2-user .
639 bundle install
640 sudo chown -R ec2-user:ec2-user .
641 bundle i

元記事を表示

【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のバージョン

元記事を表示

OTHERカテゴリの最新記事