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

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

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

元記事を表示

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 ←前回生成したファイル
        

元記事を表示

OTHERカテゴリの最新記事